1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package resourcegroups
4
5import (
6	"fmt"
7
8	"github.com/aws/aws-sdk-go/aws"
9	"github.com/aws/aws-sdk-go/aws/awsutil"
10	"github.com/aws/aws-sdk-go/aws/request"
11	"github.com/aws/aws-sdk-go/private/protocol"
12	"github.com/aws/aws-sdk-go/private/protocol/restjson"
13)
14
15const opCreateGroup = "CreateGroup"
16
17// CreateGroupRequest generates a "aws/request.Request" representing the
18// client's request for the CreateGroup operation. The "output" return
19// value will be populated with the request's response once the request completes
20// successfully.
21//
22// Use "Send" method on the returned Request to send the API call to the service.
23// the "output" return value is not valid until after Send returns without error.
24//
25// See CreateGroup for more information on using the CreateGroup
26// API call, and error handling.
27//
28// This method is useful when you want to inject custom logic or configuration
29// into the SDK's request lifecycle. Such as custom headers, or retry logic.
30//
31//
32//    // Example sending a request using the CreateGroupRequest method.
33//    req, resp := client.CreateGroupRequest(params)
34//
35//    err := req.Send()
36//    if err == nil { // resp is now filled
37//        fmt.Println(resp)
38//    }
39//
40// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/CreateGroup
41func (c *ResourceGroups) CreateGroupRequest(input *CreateGroupInput) (req *request.Request, output *CreateGroupOutput) {
42	op := &request.Operation{
43		Name:       opCreateGroup,
44		HTTPMethod: "POST",
45		HTTPPath:   "/groups",
46	}
47
48	if input == nil {
49		input = &CreateGroupInput{}
50	}
51
52	output = &CreateGroupOutput{}
53	req = c.newRequest(op, input, output)
54	return
55}
56
57// CreateGroup API operation for AWS Resource Groups.
58//
59// Creates a resource group with the specified name and description. You can
60// optionally include a resource query, or a service configuration. For more
61// information about constructing a resource query, see Create a tag-based group
62// in Resource Groups (https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-query.html#gettingstarted-query-cli-tag).
63// For more information about service configurations, see Service configurations
64// for resource groups (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
65//
66// Minimum permissions
67//
68// To run this command, you must have the following permissions:
69//
70//    * resource-groups:CreateGroup
71//
72// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
73// with awserr.Error's Code and Message methods to get detailed information about
74// the error.
75//
76// See the AWS API reference guide for AWS Resource Groups's
77// API operation CreateGroup for usage and error information.
78//
79// Returned Error Types:
80//   * BadRequestException
81//   The request includes one or more parameters that violate validation rules.
82//
83//   * ForbiddenException
84//   The caller isn't authorized to make the request. Check permissions.
85//
86//   * MethodNotAllowedException
87//   The request uses an HTTP method that isn't allowed for the specified resource.
88//
89//   * TooManyRequestsException
90//   You've exceeded throttling limits by making too many requests in a period
91//   of time.
92//
93//   * InternalServerErrorException
94//   An internal error occurred while processing the request. Try again later.
95//
96// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/CreateGroup
97func (c *ResourceGroups) CreateGroup(input *CreateGroupInput) (*CreateGroupOutput, error) {
98	req, out := c.CreateGroupRequest(input)
99	return out, req.Send()
100}
101
102// CreateGroupWithContext is the same as CreateGroup with the addition of
103// the ability to pass a context and additional request options.
104//
105// See CreateGroup for details on how to use this API operation.
106//
107// The context must be non-nil and will be used for request cancellation. If
108// the context is nil a panic will occur. In the future the SDK may create
109// sub-contexts for http.Requests. See https://golang.org/pkg/context/
110// for more information on using Contexts.
111func (c *ResourceGroups) CreateGroupWithContext(ctx aws.Context, input *CreateGroupInput, opts ...request.Option) (*CreateGroupOutput, error) {
112	req, out := c.CreateGroupRequest(input)
113	req.SetContext(ctx)
114	req.ApplyOptions(opts...)
115	return out, req.Send()
116}
117
118const opDeleteGroup = "DeleteGroup"
119
120// DeleteGroupRequest generates a "aws/request.Request" representing the
121// client's request for the DeleteGroup operation. The "output" return
122// value will be populated with the request's response once the request completes
123// successfully.
124//
125// Use "Send" method on the returned Request to send the API call to the service.
126// the "output" return value is not valid until after Send returns without error.
127//
128// See DeleteGroup for more information on using the DeleteGroup
129// API call, and error handling.
130//
131// This method is useful when you want to inject custom logic or configuration
132// into the SDK's request lifecycle. Such as custom headers, or retry logic.
133//
134//
135//    // Example sending a request using the DeleteGroupRequest method.
136//    req, resp := client.DeleteGroupRequest(params)
137//
138//    err := req.Send()
139//    if err == nil { // resp is now filled
140//        fmt.Println(resp)
141//    }
142//
143// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/DeleteGroup
144func (c *ResourceGroups) DeleteGroupRequest(input *DeleteGroupInput) (req *request.Request, output *DeleteGroupOutput) {
145	op := &request.Operation{
146		Name:       opDeleteGroup,
147		HTTPMethod: "POST",
148		HTTPPath:   "/delete-group",
149	}
150
151	if input == nil {
152		input = &DeleteGroupInput{}
153	}
154
155	output = &DeleteGroupOutput{}
156	req = c.newRequest(op, input, output)
157	return
158}
159
160// DeleteGroup API operation for AWS Resource Groups.
161//
162// Deletes the specified resource group. Deleting a resource group does not
163// delete any resources that are members of the group; it only deletes the group
164// structure.
165//
166// Minimum permissions
167//
168// To run this command, you must have the following permissions:
169//
170//    * resource-groups:DeleteGroup
171//
172// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
173// with awserr.Error's Code and Message methods to get detailed information about
174// the error.
175//
176// See the AWS API reference guide for AWS Resource Groups's
177// API operation DeleteGroup for usage and error information.
178//
179// Returned Error Types:
180//   * BadRequestException
181//   The request includes one or more parameters that violate validation rules.
182//
183//   * ForbiddenException
184//   The caller isn't authorized to make the request. Check permissions.
185//
186//   * NotFoundException
187//   One or more of the specified resources don't exist.
188//
189//   * MethodNotAllowedException
190//   The request uses an HTTP method that isn't allowed for the specified resource.
191//
192//   * TooManyRequestsException
193//   You've exceeded throttling limits by making too many requests in a period
194//   of time.
195//
196//   * InternalServerErrorException
197//   An internal error occurred while processing the request. Try again later.
198//
199// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/DeleteGroup
200func (c *ResourceGroups) DeleteGroup(input *DeleteGroupInput) (*DeleteGroupOutput, error) {
201	req, out := c.DeleteGroupRequest(input)
202	return out, req.Send()
203}
204
205// DeleteGroupWithContext is the same as DeleteGroup with the addition of
206// the ability to pass a context and additional request options.
207//
208// See DeleteGroup for details on how to use this API operation.
209//
210// The context must be non-nil and will be used for request cancellation. If
211// the context is nil a panic will occur. In the future the SDK may create
212// sub-contexts for http.Requests. See https://golang.org/pkg/context/
213// for more information on using Contexts.
214func (c *ResourceGroups) DeleteGroupWithContext(ctx aws.Context, input *DeleteGroupInput, opts ...request.Option) (*DeleteGroupOutput, error) {
215	req, out := c.DeleteGroupRequest(input)
216	req.SetContext(ctx)
217	req.ApplyOptions(opts...)
218	return out, req.Send()
219}
220
221const opGetGroup = "GetGroup"
222
223// GetGroupRequest generates a "aws/request.Request" representing the
224// client's request for the GetGroup operation. The "output" return
225// value will be populated with the request's response once the request completes
226// successfully.
227//
228// Use "Send" method on the returned Request to send the API call to the service.
229// the "output" return value is not valid until after Send returns without error.
230//
231// See GetGroup for more information on using the GetGroup
232// API call, and error handling.
233//
234// This method is useful when you want to inject custom logic or configuration
235// into the SDK's request lifecycle. Such as custom headers, or retry logic.
236//
237//
238//    // Example sending a request using the GetGroupRequest method.
239//    req, resp := client.GetGroupRequest(params)
240//
241//    err := req.Send()
242//    if err == nil { // resp is now filled
243//        fmt.Println(resp)
244//    }
245//
246// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetGroup
247func (c *ResourceGroups) GetGroupRequest(input *GetGroupInput) (req *request.Request, output *GetGroupOutput) {
248	op := &request.Operation{
249		Name:       opGetGroup,
250		HTTPMethod: "POST",
251		HTTPPath:   "/get-group",
252	}
253
254	if input == nil {
255		input = &GetGroupInput{}
256	}
257
258	output = &GetGroupOutput{}
259	req = c.newRequest(op, input, output)
260	return
261}
262
263// GetGroup API operation for AWS Resource Groups.
264//
265// Returns information about a specified resource group.
266//
267// Minimum permissions
268//
269// To run this command, you must have the following permissions:
270//
271//    * resource-groups:GetGroup
272//
273// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
274// with awserr.Error's Code and Message methods to get detailed information about
275// the error.
276//
277// See the AWS API reference guide for AWS Resource Groups's
278// API operation GetGroup for usage and error information.
279//
280// Returned Error Types:
281//   * BadRequestException
282//   The request includes one or more parameters that violate validation rules.
283//
284//   * ForbiddenException
285//   The caller isn't authorized to make the request. Check permissions.
286//
287//   * NotFoundException
288//   One or more of the specified resources don't exist.
289//
290//   * MethodNotAllowedException
291//   The request uses an HTTP method that isn't allowed for the specified resource.
292//
293//   * TooManyRequestsException
294//   You've exceeded throttling limits by making too many requests in a period
295//   of time.
296//
297//   * InternalServerErrorException
298//   An internal error occurred while processing the request. Try again later.
299//
300// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetGroup
301func (c *ResourceGroups) GetGroup(input *GetGroupInput) (*GetGroupOutput, error) {
302	req, out := c.GetGroupRequest(input)
303	return out, req.Send()
304}
305
306// GetGroupWithContext is the same as GetGroup with the addition of
307// the ability to pass a context and additional request options.
308//
309// See GetGroup for details on how to use this API operation.
310//
311// The context must be non-nil and will be used for request cancellation. If
312// the context is nil a panic will occur. In the future the SDK may create
313// sub-contexts for http.Requests. See https://golang.org/pkg/context/
314// for more information on using Contexts.
315func (c *ResourceGroups) GetGroupWithContext(ctx aws.Context, input *GetGroupInput, opts ...request.Option) (*GetGroupOutput, error) {
316	req, out := c.GetGroupRequest(input)
317	req.SetContext(ctx)
318	req.ApplyOptions(opts...)
319	return out, req.Send()
320}
321
322const opGetGroupConfiguration = "GetGroupConfiguration"
323
324// GetGroupConfigurationRequest generates a "aws/request.Request" representing the
325// client's request for the GetGroupConfiguration operation. The "output" return
326// value will be populated with the request's response once the request completes
327// successfully.
328//
329// Use "Send" method on the returned Request to send the API call to the service.
330// the "output" return value is not valid until after Send returns without error.
331//
332// See GetGroupConfiguration for more information on using the GetGroupConfiguration
333// API call, and error handling.
334//
335// This method is useful when you want to inject custom logic or configuration
336// into the SDK's request lifecycle. Such as custom headers, or retry logic.
337//
338//
339//    // Example sending a request using the GetGroupConfigurationRequest method.
340//    req, resp := client.GetGroupConfigurationRequest(params)
341//
342//    err := req.Send()
343//    if err == nil { // resp is now filled
344//        fmt.Println(resp)
345//    }
346//
347// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetGroupConfiguration
348func (c *ResourceGroups) GetGroupConfigurationRequest(input *GetGroupConfigurationInput) (req *request.Request, output *GetGroupConfigurationOutput) {
349	op := &request.Operation{
350		Name:       opGetGroupConfiguration,
351		HTTPMethod: "POST",
352		HTTPPath:   "/get-group-configuration",
353	}
354
355	if input == nil {
356		input = &GetGroupConfigurationInput{}
357	}
358
359	output = &GetGroupConfigurationOutput{}
360	req = c.newRequest(op, input, output)
361	return
362}
363
364// GetGroupConfiguration API operation for AWS Resource Groups.
365//
366// Returns the service configuration associated with the specified resource
367// group. For details about the service configuration syntax, see Service configurations
368// for resource groups (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
369//
370// Minimum permissions
371//
372// To run this command, you must have the following permissions:
373//
374//    * resource-groups:GetGroupConfiguration
375//
376// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
377// with awserr.Error's Code and Message methods to get detailed information about
378// the error.
379//
380// See the AWS API reference guide for AWS Resource Groups's
381// API operation GetGroupConfiguration for usage and error information.
382//
383// Returned Error Types:
384//   * BadRequestException
385//   The request includes one or more parameters that violate validation rules.
386//
387//   * ForbiddenException
388//   The caller isn't authorized to make the request. Check permissions.
389//
390//   * NotFoundException
391//   One or more of the specified resources don't exist.
392//
393//   * MethodNotAllowedException
394//   The request uses an HTTP method that isn't allowed for the specified resource.
395//
396//   * TooManyRequestsException
397//   You've exceeded throttling limits by making too many requests in a period
398//   of time.
399//
400//   * InternalServerErrorException
401//   An internal error occurred while processing the request. Try again later.
402//
403// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetGroupConfiguration
404func (c *ResourceGroups) GetGroupConfiguration(input *GetGroupConfigurationInput) (*GetGroupConfigurationOutput, error) {
405	req, out := c.GetGroupConfigurationRequest(input)
406	return out, req.Send()
407}
408
409// GetGroupConfigurationWithContext is the same as GetGroupConfiguration with the addition of
410// the ability to pass a context and additional request options.
411//
412// See GetGroupConfiguration for details on how to use this API operation.
413//
414// The context must be non-nil and will be used for request cancellation. If
415// the context is nil a panic will occur. In the future the SDK may create
416// sub-contexts for http.Requests. See https://golang.org/pkg/context/
417// for more information on using Contexts.
418func (c *ResourceGroups) GetGroupConfigurationWithContext(ctx aws.Context, input *GetGroupConfigurationInput, opts ...request.Option) (*GetGroupConfigurationOutput, error) {
419	req, out := c.GetGroupConfigurationRequest(input)
420	req.SetContext(ctx)
421	req.ApplyOptions(opts...)
422	return out, req.Send()
423}
424
425const opGetGroupQuery = "GetGroupQuery"
426
427// GetGroupQueryRequest generates a "aws/request.Request" representing the
428// client's request for the GetGroupQuery operation. The "output" return
429// value will be populated with the request's response once the request completes
430// successfully.
431//
432// Use "Send" method on the returned Request to send the API call to the service.
433// the "output" return value is not valid until after Send returns without error.
434//
435// See GetGroupQuery for more information on using the GetGroupQuery
436// API call, and error handling.
437//
438// This method is useful when you want to inject custom logic or configuration
439// into the SDK's request lifecycle. Such as custom headers, or retry logic.
440//
441//
442//    // Example sending a request using the GetGroupQueryRequest method.
443//    req, resp := client.GetGroupQueryRequest(params)
444//
445//    err := req.Send()
446//    if err == nil { // resp is now filled
447//        fmt.Println(resp)
448//    }
449//
450// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetGroupQuery
451func (c *ResourceGroups) GetGroupQueryRequest(input *GetGroupQueryInput) (req *request.Request, output *GetGroupQueryOutput) {
452	op := &request.Operation{
453		Name:       opGetGroupQuery,
454		HTTPMethod: "POST",
455		HTTPPath:   "/get-group-query",
456	}
457
458	if input == nil {
459		input = &GetGroupQueryInput{}
460	}
461
462	output = &GetGroupQueryOutput{}
463	req = c.newRequest(op, input, output)
464	return
465}
466
467// GetGroupQuery API operation for AWS Resource Groups.
468//
469// Retrieves the resource query associated with the specified resource group.
470// For more information about resource queries, see Create a tag-based group
471// in Resource Groups (https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-query.html#gettingstarted-query-cli-tag).
472//
473// Minimum permissions
474//
475// To run this command, you must have the following permissions:
476//
477//    * resource-groups:GetGroupQuery
478//
479// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
480// with awserr.Error's Code and Message methods to get detailed information about
481// the error.
482//
483// See the AWS API reference guide for AWS Resource Groups's
484// API operation GetGroupQuery for usage and error information.
485//
486// Returned Error Types:
487//   * BadRequestException
488//   The request includes one or more parameters that violate validation rules.
489//
490//   * ForbiddenException
491//   The caller isn't authorized to make the request. Check permissions.
492//
493//   * NotFoundException
494//   One or more of the specified resources don't exist.
495//
496//   * MethodNotAllowedException
497//   The request uses an HTTP method that isn't allowed for the specified resource.
498//
499//   * TooManyRequestsException
500//   You've exceeded throttling limits by making too many requests in a period
501//   of time.
502//
503//   * InternalServerErrorException
504//   An internal error occurred while processing the request. Try again later.
505//
506// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetGroupQuery
507func (c *ResourceGroups) GetGroupQuery(input *GetGroupQueryInput) (*GetGroupQueryOutput, error) {
508	req, out := c.GetGroupQueryRequest(input)
509	return out, req.Send()
510}
511
512// GetGroupQueryWithContext is the same as GetGroupQuery with the addition of
513// the ability to pass a context and additional request options.
514//
515// See GetGroupQuery for details on how to use this API operation.
516//
517// The context must be non-nil and will be used for request cancellation. If
518// the context is nil a panic will occur. In the future the SDK may create
519// sub-contexts for http.Requests. See https://golang.org/pkg/context/
520// for more information on using Contexts.
521func (c *ResourceGroups) GetGroupQueryWithContext(ctx aws.Context, input *GetGroupQueryInput, opts ...request.Option) (*GetGroupQueryOutput, error) {
522	req, out := c.GetGroupQueryRequest(input)
523	req.SetContext(ctx)
524	req.ApplyOptions(opts...)
525	return out, req.Send()
526}
527
528const opGetTags = "GetTags"
529
530// GetTagsRequest generates a "aws/request.Request" representing the
531// client's request for the GetTags operation. The "output" return
532// value will be populated with the request's response once the request completes
533// successfully.
534//
535// Use "Send" method on the returned Request to send the API call to the service.
536// the "output" return value is not valid until after Send returns without error.
537//
538// See GetTags for more information on using the GetTags
539// API call, and error handling.
540//
541// This method is useful when you want to inject custom logic or configuration
542// into the SDK's request lifecycle. Such as custom headers, or retry logic.
543//
544//
545//    // Example sending a request using the GetTagsRequest method.
546//    req, resp := client.GetTagsRequest(params)
547//
548//    err := req.Send()
549//    if err == nil { // resp is now filled
550//        fmt.Println(resp)
551//    }
552//
553// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetTags
554func (c *ResourceGroups) GetTagsRequest(input *GetTagsInput) (req *request.Request, output *GetTagsOutput) {
555	op := &request.Operation{
556		Name:       opGetTags,
557		HTTPMethod: "GET",
558		HTTPPath:   "/resources/{Arn}/tags",
559	}
560
561	if input == nil {
562		input = &GetTagsInput{}
563	}
564
565	output = &GetTagsOutput{}
566	req = c.newRequest(op, input, output)
567	return
568}
569
570// GetTags API operation for AWS Resource Groups.
571//
572// Returns a list of tags that are associated with a resource group, specified
573// by an ARN.
574//
575// Minimum permissions
576//
577// To run this command, you must have the following permissions:
578//
579//    * resource-groups:GetTags
580//
581// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
582// with awserr.Error's Code and Message methods to get detailed information about
583// the error.
584//
585// See the AWS API reference guide for AWS Resource Groups's
586// API operation GetTags for usage and error information.
587//
588// Returned Error Types:
589//   * BadRequestException
590//   The request includes one or more parameters that violate validation rules.
591//
592//   * ForbiddenException
593//   The caller isn't authorized to make the request. Check permissions.
594//
595//   * NotFoundException
596//   One or more of the specified resources don't exist.
597//
598//   * MethodNotAllowedException
599//   The request uses an HTTP method that isn't allowed for the specified resource.
600//
601//   * TooManyRequestsException
602//   You've exceeded throttling limits by making too many requests in a period
603//   of time.
604//
605//   * InternalServerErrorException
606//   An internal error occurred while processing the request. Try again later.
607//
608// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GetTags
609func (c *ResourceGroups) GetTags(input *GetTagsInput) (*GetTagsOutput, error) {
610	req, out := c.GetTagsRequest(input)
611	return out, req.Send()
612}
613
614// GetTagsWithContext is the same as GetTags with the addition of
615// the ability to pass a context and additional request options.
616//
617// See GetTags for details on how to use this API operation.
618//
619// The context must be non-nil and will be used for request cancellation. If
620// the context is nil a panic will occur. In the future the SDK may create
621// sub-contexts for http.Requests. See https://golang.org/pkg/context/
622// for more information on using Contexts.
623func (c *ResourceGroups) GetTagsWithContext(ctx aws.Context, input *GetTagsInput, opts ...request.Option) (*GetTagsOutput, error) {
624	req, out := c.GetTagsRequest(input)
625	req.SetContext(ctx)
626	req.ApplyOptions(opts...)
627	return out, req.Send()
628}
629
630const opGroupResources = "GroupResources"
631
632// GroupResourcesRequest generates a "aws/request.Request" representing the
633// client's request for the GroupResources operation. The "output" return
634// value will be populated with the request's response once the request completes
635// successfully.
636//
637// Use "Send" method on the returned Request to send the API call to the service.
638// the "output" return value is not valid until after Send returns without error.
639//
640// See GroupResources for more information on using the GroupResources
641// API call, and error handling.
642//
643// This method is useful when you want to inject custom logic or configuration
644// into the SDK's request lifecycle. Such as custom headers, or retry logic.
645//
646//
647//    // Example sending a request using the GroupResourcesRequest method.
648//    req, resp := client.GroupResourcesRequest(params)
649//
650//    err := req.Send()
651//    if err == nil { // resp is now filled
652//        fmt.Println(resp)
653//    }
654//
655// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GroupResources
656func (c *ResourceGroups) GroupResourcesRequest(input *GroupResourcesInput) (req *request.Request, output *GroupResourcesOutput) {
657	op := &request.Operation{
658		Name:       opGroupResources,
659		HTTPMethod: "POST",
660		HTTPPath:   "/group-resources",
661	}
662
663	if input == nil {
664		input = &GroupResourcesInput{}
665	}
666
667	output = &GroupResourcesOutput{}
668	req = c.newRequest(op, input, output)
669	return
670}
671
672// GroupResources API operation for AWS Resource Groups.
673//
674// Adds the specified resources to the specified group.
675//
676// Minimum permissions
677//
678// To run this command, you must have the following permissions:
679//
680//    * resource-groups:GroupResources
681//
682// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
683// with awserr.Error's Code and Message methods to get detailed information about
684// the error.
685//
686// See the AWS API reference guide for AWS Resource Groups's
687// API operation GroupResources for usage and error information.
688//
689// Returned Error Types:
690//   * BadRequestException
691//   The request includes one or more parameters that violate validation rules.
692//
693//   * ForbiddenException
694//   The caller isn't authorized to make the request. Check permissions.
695//
696//   * NotFoundException
697//   One or more of the specified resources don't exist.
698//
699//   * MethodNotAllowedException
700//   The request uses an HTTP method that isn't allowed for the specified resource.
701//
702//   * TooManyRequestsException
703//   You've exceeded throttling limits by making too many requests in a period
704//   of time.
705//
706//   * InternalServerErrorException
707//   An internal error occurred while processing the request. Try again later.
708//
709// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/GroupResources
710func (c *ResourceGroups) GroupResources(input *GroupResourcesInput) (*GroupResourcesOutput, error) {
711	req, out := c.GroupResourcesRequest(input)
712	return out, req.Send()
713}
714
715// GroupResourcesWithContext is the same as GroupResources with the addition of
716// the ability to pass a context and additional request options.
717//
718// See GroupResources for details on how to use this API operation.
719//
720// The context must be non-nil and will be used for request cancellation. If
721// the context is nil a panic will occur. In the future the SDK may create
722// sub-contexts for http.Requests. See https://golang.org/pkg/context/
723// for more information on using Contexts.
724func (c *ResourceGroups) GroupResourcesWithContext(ctx aws.Context, input *GroupResourcesInput, opts ...request.Option) (*GroupResourcesOutput, error) {
725	req, out := c.GroupResourcesRequest(input)
726	req.SetContext(ctx)
727	req.ApplyOptions(opts...)
728	return out, req.Send()
729}
730
731const opListGroupResources = "ListGroupResources"
732
733// ListGroupResourcesRequest generates a "aws/request.Request" representing the
734// client's request for the ListGroupResources operation. The "output" return
735// value will be populated with the request's response once the request completes
736// successfully.
737//
738// Use "Send" method on the returned Request to send the API call to the service.
739// the "output" return value is not valid until after Send returns without error.
740//
741// See ListGroupResources for more information on using the ListGroupResources
742// API call, and error handling.
743//
744// This method is useful when you want to inject custom logic or configuration
745// into the SDK's request lifecycle. Such as custom headers, or retry logic.
746//
747//
748//    // Example sending a request using the ListGroupResourcesRequest method.
749//    req, resp := client.ListGroupResourcesRequest(params)
750//
751//    err := req.Send()
752//    if err == nil { // resp is now filled
753//        fmt.Println(resp)
754//    }
755//
756// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/ListGroupResources
757func (c *ResourceGroups) ListGroupResourcesRequest(input *ListGroupResourcesInput) (req *request.Request, output *ListGroupResourcesOutput) {
758	op := &request.Operation{
759		Name:       opListGroupResources,
760		HTTPMethod: "POST",
761		HTTPPath:   "/list-group-resources",
762		Paginator: &request.Paginator{
763			InputTokens:     []string{"NextToken"},
764			OutputTokens:    []string{"NextToken"},
765			LimitToken:      "MaxResults",
766			TruncationToken: "",
767		},
768	}
769
770	if input == nil {
771		input = &ListGroupResourcesInput{}
772	}
773
774	output = &ListGroupResourcesOutput{}
775	req = c.newRequest(op, input, output)
776	return
777}
778
779// ListGroupResources API operation for AWS Resource Groups.
780//
781// Returns a list of ARNs of the resources that are members of a specified resource
782// group.
783//
784// Minimum permissions
785//
786// To run this command, you must have the following permissions:
787//
788//    * resource-groups:ListGroupResources
789//
790//    * cloudformation:DescribeStacks
791//
792//    * cloudformation:ListStackResources
793//
794//    * tag:GetResources
795//
796// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
797// with awserr.Error's Code and Message methods to get detailed information about
798// the error.
799//
800// See the AWS API reference guide for AWS Resource Groups's
801// API operation ListGroupResources for usage and error information.
802//
803// Returned Error Types:
804//   * UnauthorizedException
805//   The request was rejected because it doesn't have valid credentials for the
806//   target resource.
807//
808//   * BadRequestException
809//   The request includes one or more parameters that violate validation rules.
810//
811//   * ForbiddenException
812//   The caller isn't authorized to make the request. Check permissions.
813//
814//   * NotFoundException
815//   One or more of the specified resources don't exist.
816//
817//   * MethodNotAllowedException
818//   The request uses an HTTP method that isn't allowed for the specified resource.
819//
820//   * TooManyRequestsException
821//   You've exceeded throttling limits by making too many requests in a period
822//   of time.
823//
824//   * InternalServerErrorException
825//   An internal error occurred while processing the request. Try again later.
826//
827// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/ListGroupResources
828func (c *ResourceGroups) ListGroupResources(input *ListGroupResourcesInput) (*ListGroupResourcesOutput, error) {
829	req, out := c.ListGroupResourcesRequest(input)
830	return out, req.Send()
831}
832
833// ListGroupResourcesWithContext is the same as ListGroupResources with the addition of
834// the ability to pass a context and additional request options.
835//
836// See ListGroupResources for details on how to use this API operation.
837//
838// The context must be non-nil and will be used for request cancellation. If
839// the context is nil a panic will occur. In the future the SDK may create
840// sub-contexts for http.Requests. See https://golang.org/pkg/context/
841// for more information on using Contexts.
842func (c *ResourceGroups) ListGroupResourcesWithContext(ctx aws.Context, input *ListGroupResourcesInput, opts ...request.Option) (*ListGroupResourcesOutput, error) {
843	req, out := c.ListGroupResourcesRequest(input)
844	req.SetContext(ctx)
845	req.ApplyOptions(opts...)
846	return out, req.Send()
847}
848
849// ListGroupResourcesPages iterates over the pages of a ListGroupResources operation,
850// calling the "fn" function with the response data for each page. To stop
851// iterating, return false from the fn function.
852//
853// See ListGroupResources method for more information on how to use this operation.
854//
855// Note: This operation can generate multiple requests to a service.
856//
857//    // Example iterating over at most 3 pages of a ListGroupResources operation.
858//    pageNum := 0
859//    err := client.ListGroupResourcesPages(params,
860//        func(page *resourcegroups.ListGroupResourcesOutput, lastPage bool) bool {
861//            pageNum++
862//            fmt.Println(page)
863//            return pageNum <= 3
864//        })
865//
866func (c *ResourceGroups) ListGroupResourcesPages(input *ListGroupResourcesInput, fn func(*ListGroupResourcesOutput, bool) bool) error {
867	return c.ListGroupResourcesPagesWithContext(aws.BackgroundContext(), input, fn)
868}
869
870// ListGroupResourcesPagesWithContext same as ListGroupResourcesPages except
871// it takes a Context and allows setting request options on the pages.
872//
873// The context must be non-nil and will be used for request cancellation. If
874// the context is nil a panic will occur. In the future the SDK may create
875// sub-contexts for http.Requests. See https://golang.org/pkg/context/
876// for more information on using Contexts.
877func (c *ResourceGroups) ListGroupResourcesPagesWithContext(ctx aws.Context, input *ListGroupResourcesInput, fn func(*ListGroupResourcesOutput, bool) bool, opts ...request.Option) error {
878	p := request.Pagination{
879		NewRequest: func() (*request.Request, error) {
880			var inCpy *ListGroupResourcesInput
881			if input != nil {
882				tmp := *input
883				inCpy = &tmp
884			}
885			req, _ := c.ListGroupResourcesRequest(inCpy)
886			req.SetContext(ctx)
887			req.ApplyOptions(opts...)
888			return req, nil
889		},
890	}
891
892	for p.Next() {
893		if !fn(p.Page().(*ListGroupResourcesOutput), !p.HasNextPage()) {
894			break
895		}
896	}
897
898	return p.Err()
899}
900
901const opListGroups = "ListGroups"
902
903// ListGroupsRequest generates a "aws/request.Request" representing the
904// client's request for the ListGroups operation. The "output" return
905// value will be populated with the request's response once the request completes
906// successfully.
907//
908// Use "Send" method on the returned Request to send the API call to the service.
909// the "output" return value is not valid until after Send returns without error.
910//
911// See ListGroups for more information on using the ListGroups
912// API call, and error handling.
913//
914// This method is useful when you want to inject custom logic or configuration
915// into the SDK's request lifecycle. Such as custom headers, or retry logic.
916//
917//
918//    // Example sending a request using the ListGroupsRequest method.
919//    req, resp := client.ListGroupsRequest(params)
920//
921//    err := req.Send()
922//    if err == nil { // resp is now filled
923//        fmt.Println(resp)
924//    }
925//
926// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/ListGroups
927func (c *ResourceGroups) ListGroupsRequest(input *ListGroupsInput) (req *request.Request, output *ListGroupsOutput) {
928	op := &request.Operation{
929		Name:       opListGroups,
930		HTTPMethod: "POST",
931		HTTPPath:   "/groups-list",
932		Paginator: &request.Paginator{
933			InputTokens:     []string{"NextToken"},
934			OutputTokens:    []string{"NextToken"},
935			LimitToken:      "MaxResults",
936			TruncationToken: "",
937		},
938	}
939
940	if input == nil {
941		input = &ListGroupsInput{}
942	}
943
944	output = &ListGroupsOutput{}
945	req = c.newRequest(op, input, output)
946	return
947}
948
949// ListGroups API operation for AWS Resource Groups.
950//
951// Returns a list of existing resource groups in your account.
952//
953// Minimum permissions
954//
955// To run this command, you must have the following permissions:
956//
957//    * resource-groups:ListGroups
958//
959// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
960// with awserr.Error's Code and Message methods to get detailed information about
961// the error.
962//
963// See the AWS API reference guide for AWS Resource Groups's
964// API operation ListGroups for usage and error information.
965//
966// Returned Error Types:
967//   * BadRequestException
968//   The request includes one or more parameters that violate validation rules.
969//
970//   * ForbiddenException
971//   The caller isn't authorized to make the request. Check permissions.
972//
973//   * MethodNotAllowedException
974//   The request uses an HTTP method that isn't allowed for the specified resource.
975//
976//   * TooManyRequestsException
977//   You've exceeded throttling limits by making too many requests in a period
978//   of time.
979//
980//   * InternalServerErrorException
981//   An internal error occurred while processing the request. Try again later.
982//
983// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/ListGroups
984func (c *ResourceGroups) ListGroups(input *ListGroupsInput) (*ListGroupsOutput, error) {
985	req, out := c.ListGroupsRequest(input)
986	return out, req.Send()
987}
988
989// ListGroupsWithContext is the same as ListGroups with the addition of
990// the ability to pass a context and additional request options.
991//
992// See ListGroups for details on how to use this API operation.
993//
994// The context must be non-nil and will be used for request cancellation. If
995// the context is nil a panic will occur. In the future the SDK may create
996// sub-contexts for http.Requests. See https://golang.org/pkg/context/
997// for more information on using Contexts.
998func (c *ResourceGroups) ListGroupsWithContext(ctx aws.Context, input *ListGroupsInput, opts ...request.Option) (*ListGroupsOutput, error) {
999	req, out := c.ListGroupsRequest(input)
1000	req.SetContext(ctx)
1001	req.ApplyOptions(opts...)
1002	return out, req.Send()
1003}
1004
1005// ListGroupsPages iterates over the pages of a ListGroups operation,
1006// calling the "fn" function with the response data for each page. To stop
1007// iterating, return false from the fn function.
1008//
1009// See ListGroups method for more information on how to use this operation.
1010//
1011// Note: This operation can generate multiple requests to a service.
1012//
1013//    // Example iterating over at most 3 pages of a ListGroups operation.
1014//    pageNum := 0
1015//    err := client.ListGroupsPages(params,
1016//        func(page *resourcegroups.ListGroupsOutput, lastPage bool) bool {
1017//            pageNum++
1018//            fmt.Println(page)
1019//            return pageNum <= 3
1020//        })
1021//
1022func (c *ResourceGroups) ListGroupsPages(input *ListGroupsInput, fn func(*ListGroupsOutput, bool) bool) error {
1023	return c.ListGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
1024}
1025
1026// ListGroupsPagesWithContext same as ListGroupsPages except
1027// it takes a Context and allows setting request options on the pages.
1028//
1029// The context must be non-nil and will be used for request cancellation. If
1030// the context is nil a panic will occur. In the future the SDK may create
1031// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1032// for more information on using Contexts.
1033func (c *ResourceGroups) ListGroupsPagesWithContext(ctx aws.Context, input *ListGroupsInput, fn func(*ListGroupsOutput, bool) bool, opts ...request.Option) error {
1034	p := request.Pagination{
1035		NewRequest: func() (*request.Request, error) {
1036			var inCpy *ListGroupsInput
1037			if input != nil {
1038				tmp := *input
1039				inCpy = &tmp
1040			}
1041			req, _ := c.ListGroupsRequest(inCpy)
1042			req.SetContext(ctx)
1043			req.ApplyOptions(opts...)
1044			return req, nil
1045		},
1046	}
1047
1048	for p.Next() {
1049		if !fn(p.Page().(*ListGroupsOutput), !p.HasNextPage()) {
1050			break
1051		}
1052	}
1053
1054	return p.Err()
1055}
1056
1057const opPutGroupConfiguration = "PutGroupConfiguration"
1058
1059// PutGroupConfigurationRequest generates a "aws/request.Request" representing the
1060// client's request for the PutGroupConfiguration operation. The "output" return
1061// value will be populated with the request's response once the request completes
1062// successfully.
1063//
1064// Use "Send" method on the returned Request to send the API call to the service.
1065// the "output" return value is not valid until after Send returns without error.
1066//
1067// See PutGroupConfiguration for more information on using the PutGroupConfiguration
1068// API call, and error handling.
1069//
1070// This method is useful when you want to inject custom logic or configuration
1071// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1072//
1073//
1074//    // Example sending a request using the PutGroupConfigurationRequest method.
1075//    req, resp := client.PutGroupConfigurationRequest(params)
1076//
1077//    err := req.Send()
1078//    if err == nil { // resp is now filled
1079//        fmt.Println(resp)
1080//    }
1081//
1082// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/PutGroupConfiguration
1083func (c *ResourceGroups) PutGroupConfigurationRequest(input *PutGroupConfigurationInput) (req *request.Request, output *PutGroupConfigurationOutput) {
1084	op := &request.Operation{
1085		Name:       opPutGroupConfiguration,
1086		HTTPMethod: "POST",
1087		HTTPPath:   "/put-group-configuration",
1088	}
1089
1090	if input == nil {
1091		input = &PutGroupConfigurationInput{}
1092	}
1093
1094	output = &PutGroupConfigurationOutput{}
1095	req = c.newRequest(op, input, output)
1096	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1097	return
1098}
1099
1100// PutGroupConfiguration API operation for AWS Resource Groups.
1101//
1102// Attaches a service configuration to the specified group. This occurs asynchronously,
1103// and can take time to complete. You can use GetGroupConfiguration to check
1104// the status of the update.
1105//
1106// Minimum permissions
1107//
1108// To run this command, you must have the following permissions:
1109//
1110//    * resource-groups:PutGroupConfiguration
1111//
1112// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1113// with awserr.Error's Code and Message methods to get detailed information about
1114// the error.
1115//
1116// See the AWS API reference guide for AWS Resource Groups's
1117// API operation PutGroupConfiguration for usage and error information.
1118//
1119// Returned Error Types:
1120//   * BadRequestException
1121//   The request includes one or more parameters that violate validation rules.
1122//
1123//   * ForbiddenException
1124//   The caller isn't authorized to make the request. Check permissions.
1125//
1126//   * NotFoundException
1127//   One or more of the specified resources don't exist.
1128//
1129//   * MethodNotAllowedException
1130//   The request uses an HTTP method that isn't allowed for the specified resource.
1131//
1132//   * TooManyRequestsException
1133//   You've exceeded throttling limits by making too many requests in a period
1134//   of time.
1135//
1136//   * InternalServerErrorException
1137//   An internal error occurred while processing the request. Try again later.
1138//
1139// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/PutGroupConfiguration
1140func (c *ResourceGroups) PutGroupConfiguration(input *PutGroupConfigurationInput) (*PutGroupConfigurationOutput, error) {
1141	req, out := c.PutGroupConfigurationRequest(input)
1142	return out, req.Send()
1143}
1144
1145// PutGroupConfigurationWithContext is the same as PutGroupConfiguration with the addition of
1146// the ability to pass a context and additional request options.
1147//
1148// See PutGroupConfiguration for details on how to use this API operation.
1149//
1150// The context must be non-nil and will be used for request cancellation. If
1151// the context is nil a panic will occur. In the future the SDK may create
1152// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1153// for more information on using Contexts.
1154func (c *ResourceGroups) PutGroupConfigurationWithContext(ctx aws.Context, input *PutGroupConfigurationInput, opts ...request.Option) (*PutGroupConfigurationOutput, error) {
1155	req, out := c.PutGroupConfigurationRequest(input)
1156	req.SetContext(ctx)
1157	req.ApplyOptions(opts...)
1158	return out, req.Send()
1159}
1160
1161const opSearchResources = "SearchResources"
1162
1163// SearchResourcesRequest generates a "aws/request.Request" representing the
1164// client's request for the SearchResources operation. The "output" return
1165// value will be populated with the request's response once the request completes
1166// successfully.
1167//
1168// Use "Send" method on the returned Request to send the API call to the service.
1169// the "output" return value is not valid until after Send returns without error.
1170//
1171// See SearchResources for more information on using the SearchResources
1172// API call, and error handling.
1173//
1174// This method is useful when you want to inject custom logic or configuration
1175// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1176//
1177//
1178//    // Example sending a request using the SearchResourcesRequest method.
1179//    req, resp := client.SearchResourcesRequest(params)
1180//
1181//    err := req.Send()
1182//    if err == nil { // resp is now filled
1183//        fmt.Println(resp)
1184//    }
1185//
1186// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/SearchResources
1187func (c *ResourceGroups) SearchResourcesRequest(input *SearchResourcesInput) (req *request.Request, output *SearchResourcesOutput) {
1188	op := &request.Operation{
1189		Name:       opSearchResources,
1190		HTTPMethod: "POST",
1191		HTTPPath:   "/resources/search",
1192		Paginator: &request.Paginator{
1193			InputTokens:     []string{"NextToken"},
1194			OutputTokens:    []string{"NextToken"},
1195			LimitToken:      "MaxResults",
1196			TruncationToken: "",
1197		},
1198	}
1199
1200	if input == nil {
1201		input = &SearchResourcesInput{}
1202	}
1203
1204	output = &SearchResourcesOutput{}
1205	req = c.newRequest(op, input, output)
1206	return
1207}
1208
1209// SearchResources API operation for AWS Resource Groups.
1210//
1211// Returns a list of AWS resource identifiers that matches the specified query.
1212// The query uses the same format as a resource query in a CreateGroup or UpdateGroupQuery
1213// operation.
1214//
1215// Minimum permissions
1216//
1217// To run this command, you must have the following permissions:
1218//
1219//    * resource-groups:SearchResources
1220//
1221//    * cloudformation:DescribeStacks
1222//
1223//    * cloudformation:ListStackResources
1224//
1225//    * tag:GetResources
1226//
1227// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1228// with awserr.Error's Code and Message methods to get detailed information about
1229// the error.
1230//
1231// See the AWS API reference guide for AWS Resource Groups's
1232// API operation SearchResources for usage and error information.
1233//
1234// Returned Error Types:
1235//   * UnauthorizedException
1236//   The request was rejected because it doesn't have valid credentials for the
1237//   target resource.
1238//
1239//   * BadRequestException
1240//   The request includes one or more parameters that violate validation rules.
1241//
1242//   * ForbiddenException
1243//   The caller isn't authorized to make the request. Check permissions.
1244//
1245//   * MethodNotAllowedException
1246//   The request uses an HTTP method that isn't allowed for the specified resource.
1247//
1248//   * TooManyRequestsException
1249//   You've exceeded throttling limits by making too many requests in a period
1250//   of time.
1251//
1252//   * InternalServerErrorException
1253//   An internal error occurred while processing the request. Try again later.
1254//
1255// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/SearchResources
1256func (c *ResourceGroups) SearchResources(input *SearchResourcesInput) (*SearchResourcesOutput, error) {
1257	req, out := c.SearchResourcesRequest(input)
1258	return out, req.Send()
1259}
1260
1261// SearchResourcesWithContext is the same as SearchResources with the addition of
1262// the ability to pass a context and additional request options.
1263//
1264// See SearchResources for details on how to use this API operation.
1265//
1266// The context must be non-nil and will be used for request cancellation. If
1267// the context is nil a panic will occur. In the future the SDK may create
1268// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1269// for more information on using Contexts.
1270func (c *ResourceGroups) SearchResourcesWithContext(ctx aws.Context, input *SearchResourcesInput, opts ...request.Option) (*SearchResourcesOutput, error) {
1271	req, out := c.SearchResourcesRequest(input)
1272	req.SetContext(ctx)
1273	req.ApplyOptions(opts...)
1274	return out, req.Send()
1275}
1276
1277// SearchResourcesPages iterates over the pages of a SearchResources operation,
1278// calling the "fn" function with the response data for each page. To stop
1279// iterating, return false from the fn function.
1280//
1281// See SearchResources method for more information on how to use this operation.
1282//
1283// Note: This operation can generate multiple requests to a service.
1284//
1285//    // Example iterating over at most 3 pages of a SearchResources operation.
1286//    pageNum := 0
1287//    err := client.SearchResourcesPages(params,
1288//        func(page *resourcegroups.SearchResourcesOutput, lastPage bool) bool {
1289//            pageNum++
1290//            fmt.Println(page)
1291//            return pageNum <= 3
1292//        })
1293//
1294func (c *ResourceGroups) SearchResourcesPages(input *SearchResourcesInput, fn func(*SearchResourcesOutput, bool) bool) error {
1295	return c.SearchResourcesPagesWithContext(aws.BackgroundContext(), input, fn)
1296}
1297
1298// SearchResourcesPagesWithContext same as SearchResourcesPages except
1299// it takes a Context and allows setting request options on the pages.
1300//
1301// The context must be non-nil and will be used for request cancellation. If
1302// the context is nil a panic will occur. In the future the SDK may create
1303// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1304// for more information on using Contexts.
1305func (c *ResourceGroups) SearchResourcesPagesWithContext(ctx aws.Context, input *SearchResourcesInput, fn func(*SearchResourcesOutput, bool) bool, opts ...request.Option) error {
1306	p := request.Pagination{
1307		NewRequest: func() (*request.Request, error) {
1308			var inCpy *SearchResourcesInput
1309			if input != nil {
1310				tmp := *input
1311				inCpy = &tmp
1312			}
1313			req, _ := c.SearchResourcesRequest(inCpy)
1314			req.SetContext(ctx)
1315			req.ApplyOptions(opts...)
1316			return req, nil
1317		},
1318	}
1319
1320	for p.Next() {
1321		if !fn(p.Page().(*SearchResourcesOutput), !p.HasNextPage()) {
1322			break
1323		}
1324	}
1325
1326	return p.Err()
1327}
1328
1329const opTag = "Tag"
1330
1331// TagRequest generates a "aws/request.Request" representing the
1332// client's request for the Tag operation. The "output" return
1333// value will be populated with the request's response once the request completes
1334// successfully.
1335//
1336// Use "Send" method on the returned Request to send the API call to the service.
1337// the "output" return value is not valid until after Send returns without error.
1338//
1339// See Tag for more information on using the Tag
1340// API call, and error handling.
1341//
1342// This method is useful when you want to inject custom logic or configuration
1343// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1344//
1345//
1346//    // Example sending a request using the TagRequest method.
1347//    req, resp := client.TagRequest(params)
1348//
1349//    err := req.Send()
1350//    if err == nil { // resp is now filled
1351//        fmt.Println(resp)
1352//    }
1353//
1354// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/Tag
1355func (c *ResourceGroups) TagRequest(input *TagInput) (req *request.Request, output *TagOutput) {
1356	op := &request.Operation{
1357		Name:       opTag,
1358		HTTPMethod: "PUT",
1359		HTTPPath:   "/resources/{Arn}/tags",
1360	}
1361
1362	if input == nil {
1363		input = &TagInput{}
1364	}
1365
1366	output = &TagOutput{}
1367	req = c.newRequest(op, input, output)
1368	return
1369}
1370
1371// Tag API operation for AWS Resource Groups.
1372//
1373// Adds tags to a resource group with the specified ARN. Existing tags on a
1374// resource group are not changed if they are not specified in the request parameters.
1375//
1376// Do not store personally identifiable information (PII) or other confidential
1377// or sensitive information in tags. We use tags to provide you with billing
1378// and administration services. Tags are not intended to be used for private
1379// or sensitive data.
1380//
1381// Minimum permissions
1382//
1383// To run this command, you must have the following permissions:
1384//
1385//    * resource-groups:Tag
1386//
1387// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1388// with awserr.Error's Code and Message methods to get detailed information about
1389// the error.
1390//
1391// See the AWS API reference guide for AWS Resource Groups's
1392// API operation Tag for usage and error information.
1393//
1394// Returned Error Types:
1395//   * BadRequestException
1396//   The request includes one or more parameters that violate validation rules.
1397//
1398//   * ForbiddenException
1399//   The caller isn't authorized to make the request. Check permissions.
1400//
1401//   * NotFoundException
1402//   One or more of the specified resources don't exist.
1403//
1404//   * MethodNotAllowedException
1405//   The request uses an HTTP method that isn't allowed for the specified resource.
1406//
1407//   * TooManyRequestsException
1408//   You've exceeded throttling limits by making too many requests in a period
1409//   of time.
1410//
1411//   * InternalServerErrorException
1412//   An internal error occurred while processing the request. Try again later.
1413//
1414// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/Tag
1415func (c *ResourceGroups) Tag(input *TagInput) (*TagOutput, error) {
1416	req, out := c.TagRequest(input)
1417	return out, req.Send()
1418}
1419
1420// TagWithContext is the same as Tag with the addition of
1421// the ability to pass a context and additional request options.
1422//
1423// See Tag for details on how to use this API operation.
1424//
1425// The context must be non-nil and will be used for request cancellation. If
1426// the context is nil a panic will occur. In the future the SDK may create
1427// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1428// for more information on using Contexts.
1429func (c *ResourceGroups) TagWithContext(ctx aws.Context, input *TagInput, opts ...request.Option) (*TagOutput, error) {
1430	req, out := c.TagRequest(input)
1431	req.SetContext(ctx)
1432	req.ApplyOptions(opts...)
1433	return out, req.Send()
1434}
1435
1436const opUngroupResources = "UngroupResources"
1437
1438// UngroupResourcesRequest generates a "aws/request.Request" representing the
1439// client's request for the UngroupResources operation. The "output" return
1440// value will be populated with the request's response once the request completes
1441// successfully.
1442//
1443// Use "Send" method on the returned Request to send the API call to the service.
1444// the "output" return value is not valid until after Send returns without error.
1445//
1446// See UngroupResources for more information on using the UngroupResources
1447// API call, and error handling.
1448//
1449// This method is useful when you want to inject custom logic or configuration
1450// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1451//
1452//
1453//    // Example sending a request using the UngroupResourcesRequest method.
1454//    req, resp := client.UngroupResourcesRequest(params)
1455//
1456//    err := req.Send()
1457//    if err == nil { // resp is now filled
1458//        fmt.Println(resp)
1459//    }
1460//
1461// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/UngroupResources
1462func (c *ResourceGroups) UngroupResourcesRequest(input *UngroupResourcesInput) (req *request.Request, output *UngroupResourcesOutput) {
1463	op := &request.Operation{
1464		Name:       opUngroupResources,
1465		HTTPMethod: "POST",
1466		HTTPPath:   "/ungroup-resources",
1467	}
1468
1469	if input == nil {
1470		input = &UngroupResourcesInput{}
1471	}
1472
1473	output = &UngroupResourcesOutput{}
1474	req = c.newRequest(op, input, output)
1475	return
1476}
1477
1478// UngroupResources API operation for AWS Resource Groups.
1479//
1480// Removes the specified resources from the specified group.
1481//
1482// Minimum permissions
1483//
1484// To run this command, you must have the following permissions:
1485//
1486//    * resource-groups:UngroupResources
1487//
1488// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1489// with awserr.Error's Code and Message methods to get detailed information about
1490// the error.
1491//
1492// See the AWS API reference guide for AWS Resource Groups's
1493// API operation UngroupResources for usage and error information.
1494//
1495// Returned Error Types:
1496//   * BadRequestException
1497//   The request includes one or more parameters that violate validation rules.
1498//
1499//   * ForbiddenException
1500//   The caller isn't authorized to make the request. Check permissions.
1501//
1502//   * NotFoundException
1503//   One or more of the specified resources don't exist.
1504//
1505//   * MethodNotAllowedException
1506//   The request uses an HTTP method that isn't allowed for the specified resource.
1507//
1508//   * TooManyRequestsException
1509//   You've exceeded throttling limits by making too many requests in a period
1510//   of time.
1511//
1512//   * InternalServerErrorException
1513//   An internal error occurred while processing the request. Try again later.
1514//
1515// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/UngroupResources
1516func (c *ResourceGroups) UngroupResources(input *UngroupResourcesInput) (*UngroupResourcesOutput, error) {
1517	req, out := c.UngroupResourcesRequest(input)
1518	return out, req.Send()
1519}
1520
1521// UngroupResourcesWithContext is the same as UngroupResources with the addition of
1522// the ability to pass a context and additional request options.
1523//
1524// See UngroupResources for details on how to use this API operation.
1525//
1526// The context must be non-nil and will be used for request cancellation. If
1527// the context is nil a panic will occur. In the future the SDK may create
1528// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1529// for more information on using Contexts.
1530func (c *ResourceGroups) UngroupResourcesWithContext(ctx aws.Context, input *UngroupResourcesInput, opts ...request.Option) (*UngroupResourcesOutput, error) {
1531	req, out := c.UngroupResourcesRequest(input)
1532	req.SetContext(ctx)
1533	req.ApplyOptions(opts...)
1534	return out, req.Send()
1535}
1536
1537const opUntag = "Untag"
1538
1539// UntagRequest generates a "aws/request.Request" representing the
1540// client's request for the Untag operation. The "output" return
1541// value will be populated with the request's response once the request completes
1542// successfully.
1543//
1544// Use "Send" method on the returned Request to send the API call to the service.
1545// the "output" return value is not valid until after Send returns without error.
1546//
1547// See Untag for more information on using the Untag
1548// API call, and error handling.
1549//
1550// This method is useful when you want to inject custom logic or configuration
1551// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1552//
1553//
1554//    // Example sending a request using the UntagRequest method.
1555//    req, resp := client.UntagRequest(params)
1556//
1557//    err := req.Send()
1558//    if err == nil { // resp is now filled
1559//        fmt.Println(resp)
1560//    }
1561//
1562// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/Untag
1563func (c *ResourceGroups) UntagRequest(input *UntagInput) (req *request.Request, output *UntagOutput) {
1564	op := &request.Operation{
1565		Name:       opUntag,
1566		HTTPMethod: "PATCH",
1567		HTTPPath:   "/resources/{Arn}/tags",
1568	}
1569
1570	if input == nil {
1571		input = &UntagInput{}
1572	}
1573
1574	output = &UntagOutput{}
1575	req = c.newRequest(op, input, output)
1576	return
1577}
1578
1579// Untag API operation for AWS Resource Groups.
1580//
1581// Deletes tags from a specified resource group.
1582//
1583// Minimum permissions
1584//
1585// To run this command, you must have the following permissions:
1586//
1587//    * resource-groups:Untag
1588//
1589// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1590// with awserr.Error's Code and Message methods to get detailed information about
1591// the error.
1592//
1593// See the AWS API reference guide for AWS Resource Groups's
1594// API operation Untag for usage and error information.
1595//
1596// Returned Error Types:
1597//   * BadRequestException
1598//   The request includes one or more parameters that violate validation rules.
1599//
1600//   * ForbiddenException
1601//   The caller isn't authorized to make the request. Check permissions.
1602//
1603//   * NotFoundException
1604//   One or more of the specified resources don't exist.
1605//
1606//   * MethodNotAllowedException
1607//   The request uses an HTTP method that isn't allowed for the specified resource.
1608//
1609//   * TooManyRequestsException
1610//   You've exceeded throttling limits by making too many requests in a period
1611//   of time.
1612//
1613//   * InternalServerErrorException
1614//   An internal error occurred while processing the request. Try again later.
1615//
1616// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/Untag
1617func (c *ResourceGroups) Untag(input *UntagInput) (*UntagOutput, error) {
1618	req, out := c.UntagRequest(input)
1619	return out, req.Send()
1620}
1621
1622// UntagWithContext is the same as Untag with the addition of
1623// the ability to pass a context and additional request options.
1624//
1625// See Untag for details on how to use this API operation.
1626//
1627// The context must be non-nil and will be used for request cancellation. If
1628// the context is nil a panic will occur. In the future the SDK may create
1629// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1630// for more information on using Contexts.
1631func (c *ResourceGroups) UntagWithContext(ctx aws.Context, input *UntagInput, opts ...request.Option) (*UntagOutput, error) {
1632	req, out := c.UntagRequest(input)
1633	req.SetContext(ctx)
1634	req.ApplyOptions(opts...)
1635	return out, req.Send()
1636}
1637
1638const opUpdateGroup = "UpdateGroup"
1639
1640// UpdateGroupRequest generates a "aws/request.Request" representing the
1641// client's request for the UpdateGroup operation. The "output" return
1642// value will be populated with the request's response once the request completes
1643// successfully.
1644//
1645// Use "Send" method on the returned Request to send the API call to the service.
1646// the "output" return value is not valid until after Send returns without error.
1647//
1648// See UpdateGroup for more information on using the UpdateGroup
1649// API call, and error handling.
1650//
1651// This method is useful when you want to inject custom logic or configuration
1652// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1653//
1654//
1655//    // Example sending a request using the UpdateGroupRequest method.
1656//    req, resp := client.UpdateGroupRequest(params)
1657//
1658//    err := req.Send()
1659//    if err == nil { // resp is now filled
1660//        fmt.Println(resp)
1661//    }
1662//
1663// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/UpdateGroup
1664func (c *ResourceGroups) UpdateGroupRequest(input *UpdateGroupInput) (req *request.Request, output *UpdateGroupOutput) {
1665	op := &request.Operation{
1666		Name:       opUpdateGroup,
1667		HTTPMethod: "POST",
1668		HTTPPath:   "/update-group",
1669	}
1670
1671	if input == nil {
1672		input = &UpdateGroupInput{}
1673	}
1674
1675	output = &UpdateGroupOutput{}
1676	req = c.newRequest(op, input, output)
1677	return
1678}
1679
1680// UpdateGroup API operation for AWS Resource Groups.
1681//
1682// Updates the description for an existing group. You cannot update the name
1683// of a resource group.
1684//
1685// Minimum permissions
1686//
1687// To run this command, you must have the following permissions:
1688//
1689//    * resource-groups:UpdateGroup
1690//
1691// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1692// with awserr.Error's Code and Message methods to get detailed information about
1693// the error.
1694//
1695// See the AWS API reference guide for AWS Resource Groups's
1696// API operation UpdateGroup for usage and error information.
1697//
1698// Returned Error Types:
1699//   * BadRequestException
1700//   The request includes one or more parameters that violate validation rules.
1701//
1702//   * ForbiddenException
1703//   The caller isn't authorized to make the request. Check permissions.
1704//
1705//   * NotFoundException
1706//   One or more of the specified resources don't exist.
1707//
1708//   * MethodNotAllowedException
1709//   The request uses an HTTP method that isn't allowed for the specified resource.
1710//
1711//   * TooManyRequestsException
1712//   You've exceeded throttling limits by making too many requests in a period
1713//   of time.
1714//
1715//   * InternalServerErrorException
1716//   An internal error occurred while processing the request. Try again later.
1717//
1718// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/UpdateGroup
1719func (c *ResourceGroups) UpdateGroup(input *UpdateGroupInput) (*UpdateGroupOutput, error) {
1720	req, out := c.UpdateGroupRequest(input)
1721	return out, req.Send()
1722}
1723
1724// UpdateGroupWithContext is the same as UpdateGroup with the addition of
1725// the ability to pass a context and additional request options.
1726//
1727// See UpdateGroup for details on how to use this API operation.
1728//
1729// The context must be non-nil and will be used for request cancellation. If
1730// the context is nil a panic will occur. In the future the SDK may create
1731// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1732// for more information on using Contexts.
1733func (c *ResourceGroups) UpdateGroupWithContext(ctx aws.Context, input *UpdateGroupInput, opts ...request.Option) (*UpdateGroupOutput, error) {
1734	req, out := c.UpdateGroupRequest(input)
1735	req.SetContext(ctx)
1736	req.ApplyOptions(opts...)
1737	return out, req.Send()
1738}
1739
1740const opUpdateGroupQuery = "UpdateGroupQuery"
1741
1742// UpdateGroupQueryRequest generates a "aws/request.Request" representing the
1743// client's request for the UpdateGroupQuery operation. The "output" return
1744// value will be populated with the request's response once the request completes
1745// successfully.
1746//
1747// Use "Send" method on the returned Request to send the API call to the service.
1748// the "output" return value is not valid until after Send returns without error.
1749//
1750// See UpdateGroupQuery for more information on using the UpdateGroupQuery
1751// API call, and error handling.
1752//
1753// This method is useful when you want to inject custom logic or configuration
1754// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1755//
1756//
1757//    // Example sending a request using the UpdateGroupQueryRequest method.
1758//    req, resp := client.UpdateGroupQueryRequest(params)
1759//
1760//    err := req.Send()
1761//    if err == nil { // resp is now filled
1762//        fmt.Println(resp)
1763//    }
1764//
1765// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/UpdateGroupQuery
1766func (c *ResourceGroups) UpdateGroupQueryRequest(input *UpdateGroupQueryInput) (req *request.Request, output *UpdateGroupQueryOutput) {
1767	op := &request.Operation{
1768		Name:       opUpdateGroupQuery,
1769		HTTPMethod: "POST",
1770		HTTPPath:   "/update-group-query",
1771	}
1772
1773	if input == nil {
1774		input = &UpdateGroupQueryInput{}
1775	}
1776
1777	output = &UpdateGroupQueryOutput{}
1778	req = c.newRequest(op, input, output)
1779	return
1780}
1781
1782// UpdateGroupQuery API operation for AWS Resource Groups.
1783//
1784// Updates the resource query of a group. For more information about resource
1785// 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).
1786//
1787// Minimum permissions
1788//
1789// To run this command, you must have the following permissions:
1790//
1791//    * resource-groups:UpdateGroupQuery
1792//
1793// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1794// with awserr.Error's Code and Message methods to get detailed information about
1795// the error.
1796//
1797// See the AWS API reference guide for AWS Resource Groups's
1798// API operation UpdateGroupQuery for usage and error information.
1799//
1800// Returned Error Types:
1801//   * BadRequestException
1802//   The request includes one or more parameters that violate validation rules.
1803//
1804//   * ForbiddenException
1805//   The caller isn't authorized to make the request. Check permissions.
1806//
1807//   * NotFoundException
1808//   One or more of the specified resources don't exist.
1809//
1810//   * MethodNotAllowedException
1811//   The request uses an HTTP method that isn't allowed for the specified resource.
1812//
1813//   * TooManyRequestsException
1814//   You've exceeded throttling limits by making too many requests in a period
1815//   of time.
1816//
1817//   * InternalServerErrorException
1818//   An internal error occurred while processing the request. Try again later.
1819//
1820// See also, https://docs.aws.amazon.com/goto/WebAPI/resource-groups-2017-11-27/UpdateGroupQuery
1821func (c *ResourceGroups) UpdateGroupQuery(input *UpdateGroupQueryInput) (*UpdateGroupQueryOutput, error) {
1822	req, out := c.UpdateGroupQueryRequest(input)
1823	return out, req.Send()
1824}
1825
1826// UpdateGroupQueryWithContext is the same as UpdateGroupQuery with the addition of
1827// the ability to pass a context and additional request options.
1828//
1829// See UpdateGroupQuery for details on how to use this API operation.
1830//
1831// The context must be non-nil and will be used for request cancellation. If
1832// the context is nil a panic will occur. In the future the SDK may create
1833// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1834// for more information on using Contexts.
1835func (c *ResourceGroups) UpdateGroupQueryWithContext(ctx aws.Context, input *UpdateGroupQueryInput, opts ...request.Option) (*UpdateGroupQueryOutput, error) {
1836	req, out := c.UpdateGroupQueryRequest(input)
1837	req.SetContext(ctx)
1838	req.ApplyOptions(opts...)
1839	return out, req.Send()
1840}
1841
1842// The request includes one or more parameters that violate validation rules.
1843type BadRequestException struct {
1844	_            struct{}                  `type:"structure"`
1845	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
1846
1847	Message_ *string `locationName:"Message" min:"1" type:"string"`
1848}
1849
1850// String returns the string representation.
1851//
1852// API parameter values that are decorated as "sensitive" in the API will not
1853// be included in the string output. The member name will be present, but the
1854// value will be replaced with "sensitive".
1855func (s BadRequestException) String() string {
1856	return awsutil.Prettify(s)
1857}
1858
1859// GoString returns the string representation.
1860//
1861// API parameter values that are decorated as "sensitive" in the API will not
1862// be included in the string output. The member name will be present, but the
1863// value will be replaced with "sensitive".
1864func (s BadRequestException) GoString() string {
1865	return s.String()
1866}
1867
1868func newErrorBadRequestException(v protocol.ResponseMetadata) error {
1869	return &BadRequestException{
1870		RespMetadata: v,
1871	}
1872}
1873
1874// Code returns the exception type name.
1875func (s *BadRequestException) Code() string {
1876	return "BadRequestException"
1877}
1878
1879// Message returns the exception's message.
1880func (s *BadRequestException) Message() string {
1881	if s.Message_ != nil {
1882		return *s.Message_
1883	}
1884	return ""
1885}
1886
1887// OrigErr always returns nil, satisfies awserr.Error interface.
1888func (s *BadRequestException) OrigErr() error {
1889	return nil
1890}
1891
1892func (s *BadRequestException) Error() string {
1893	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
1894}
1895
1896// Status code returns the HTTP status code for the request's response error.
1897func (s *BadRequestException) StatusCode() int {
1898	return s.RespMetadata.StatusCode
1899}
1900
1901// RequestID returns the service's response RequestID for request.
1902func (s *BadRequestException) RequestID() string {
1903	return s.RespMetadata.RequestID
1904}
1905
1906type CreateGroupInput struct {
1907	_ struct{} `type:"structure"`
1908
1909	// A configuration associates the resource group with an AWS service and specifies
1910	// how the service can interact with the resources in the group. A configuration
1911	// is an array of GroupConfigurationItem elements. For details about the syntax
1912	// of service configurations, see Service configurations for resource groups
1913	// (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
1914	//
1915	// A resource group can contain either a Configuration or a ResourceQuery, but
1916	// not both.
1917	Configuration []*GroupConfigurationItem `type:"list"`
1918
1919	// The description of the resource group. Descriptions can consist of letters,
1920	// numbers, hyphens, underscores, periods, and spaces.
1921	Description *string `type:"string"`
1922
1923	// The name of the group, which is the identifier of the group in other operations.
1924	// You can't change the name of a resource group after you create it. A resource
1925	// group name can consist of letters, numbers, hyphens, periods, and underscores.
1926	// The name cannot start with AWS or aws; these are reserved. A resource group
1927	// name must be unique within each AWS Region in your AWS account.
1928	//
1929	// Name is a required field
1930	Name *string `min:"1" type:"string" required:"true"`
1931
1932	// The resource query that determines which AWS resources are members of this
1933	// group. For more information about resource queries, see Create a tag-based
1934	// group in Resource Groups (https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-query.html#gettingstarted-query-cli-tag).
1935	//
1936	// A resource group can contain either a ResourceQuery or a Configuration, but
1937	// not both.
1938	ResourceQuery *ResourceQuery `type:"structure"`
1939
1940	// The tags to add to the group. A tag is key-value pair string.
1941	Tags map[string]*string `type:"map"`
1942}
1943
1944// String returns the string representation.
1945//
1946// API parameter values that are decorated as "sensitive" in the API will not
1947// be included in the string output. The member name will be present, but the
1948// value will be replaced with "sensitive".
1949func (s CreateGroupInput) String() string {
1950	return awsutil.Prettify(s)
1951}
1952
1953// GoString returns the string representation.
1954//
1955// API parameter values that are decorated as "sensitive" in the API will not
1956// be included in the string output. The member name will be present, but the
1957// value will be replaced with "sensitive".
1958func (s CreateGroupInput) GoString() string {
1959	return s.String()
1960}
1961
1962// Validate inspects the fields of the type to determine if they are valid.
1963func (s *CreateGroupInput) Validate() error {
1964	invalidParams := request.ErrInvalidParams{Context: "CreateGroupInput"}
1965	if s.Name == nil {
1966		invalidParams.Add(request.NewErrParamRequired("Name"))
1967	}
1968	if s.Name != nil && len(*s.Name) < 1 {
1969		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
1970	}
1971	if s.Configuration != nil {
1972		for i, v := range s.Configuration {
1973			if v == nil {
1974				continue
1975			}
1976			if err := v.Validate(); err != nil {
1977				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Configuration", i), err.(request.ErrInvalidParams))
1978			}
1979		}
1980	}
1981	if s.ResourceQuery != nil {
1982		if err := s.ResourceQuery.Validate(); err != nil {
1983			invalidParams.AddNested("ResourceQuery", err.(request.ErrInvalidParams))
1984		}
1985	}
1986
1987	if invalidParams.Len() > 0 {
1988		return invalidParams
1989	}
1990	return nil
1991}
1992
1993// SetConfiguration sets the Configuration field's value.
1994func (s *CreateGroupInput) SetConfiguration(v []*GroupConfigurationItem) *CreateGroupInput {
1995	s.Configuration = v
1996	return s
1997}
1998
1999// SetDescription sets the Description field's value.
2000func (s *CreateGroupInput) SetDescription(v string) *CreateGroupInput {
2001	s.Description = &v
2002	return s
2003}
2004
2005// SetName sets the Name field's value.
2006func (s *CreateGroupInput) SetName(v string) *CreateGroupInput {
2007	s.Name = &v
2008	return s
2009}
2010
2011// SetResourceQuery sets the ResourceQuery field's value.
2012func (s *CreateGroupInput) SetResourceQuery(v *ResourceQuery) *CreateGroupInput {
2013	s.ResourceQuery = v
2014	return s
2015}
2016
2017// SetTags sets the Tags field's value.
2018func (s *CreateGroupInput) SetTags(v map[string]*string) *CreateGroupInput {
2019	s.Tags = v
2020	return s
2021}
2022
2023type CreateGroupOutput struct {
2024	_ struct{} `type:"structure"`
2025
2026	// The description of the resource group.
2027	Group *Group `type:"structure"`
2028
2029	// The service configuration associated with the resource group. For details
2030	// about the syntax of a service configuration, see Service configurations for
2031	// resource groups (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
2032	GroupConfiguration *GroupConfiguration `type:"structure"`
2033
2034	// The resource query associated with the group. For more information about
2035	// 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).
2036	ResourceQuery *ResourceQuery `type:"structure"`
2037
2038	// The tags associated with the group.
2039	Tags map[string]*string `type:"map"`
2040}
2041
2042// String returns the string representation.
2043//
2044// API parameter values that are decorated as "sensitive" in the API will not
2045// be included in the string output. The member name will be present, but the
2046// value will be replaced with "sensitive".
2047func (s CreateGroupOutput) String() string {
2048	return awsutil.Prettify(s)
2049}
2050
2051// GoString returns the string representation.
2052//
2053// API parameter values that are decorated as "sensitive" in the API will not
2054// be included in the string output. The member name will be present, but the
2055// value will be replaced with "sensitive".
2056func (s CreateGroupOutput) GoString() string {
2057	return s.String()
2058}
2059
2060// SetGroup sets the Group field's value.
2061func (s *CreateGroupOutput) SetGroup(v *Group) *CreateGroupOutput {
2062	s.Group = v
2063	return s
2064}
2065
2066// SetGroupConfiguration sets the GroupConfiguration field's value.
2067func (s *CreateGroupOutput) SetGroupConfiguration(v *GroupConfiguration) *CreateGroupOutput {
2068	s.GroupConfiguration = v
2069	return s
2070}
2071
2072// SetResourceQuery sets the ResourceQuery field's value.
2073func (s *CreateGroupOutput) SetResourceQuery(v *ResourceQuery) *CreateGroupOutput {
2074	s.ResourceQuery = v
2075	return s
2076}
2077
2078// SetTags sets the Tags field's value.
2079func (s *CreateGroupOutput) SetTags(v map[string]*string) *CreateGroupOutput {
2080	s.Tags = v
2081	return s
2082}
2083
2084type DeleteGroupInput struct {
2085	_ struct{} `type:"structure"`
2086
2087	// The name or the ARN of the resource group to delete.
2088	Group *string `min:"1" type:"string"`
2089
2090	// Deprecated - don't use this parameter. Use Group instead.
2091	//
2092	// Deprecated: This field is deprecated, use Group instead.
2093	GroupName *string `min:"1" deprecated:"true" type:"string"`
2094}
2095
2096// String returns the string representation.
2097//
2098// API parameter values that are decorated as "sensitive" in the API will not
2099// be included in the string output. The member name will be present, but the
2100// value will be replaced with "sensitive".
2101func (s DeleteGroupInput) String() string {
2102	return awsutil.Prettify(s)
2103}
2104
2105// GoString returns the string representation.
2106//
2107// API parameter values that are decorated as "sensitive" in the API will not
2108// be included in the string output. The member name will be present, but the
2109// value will be replaced with "sensitive".
2110func (s DeleteGroupInput) GoString() string {
2111	return s.String()
2112}
2113
2114// Validate inspects the fields of the type to determine if they are valid.
2115func (s *DeleteGroupInput) Validate() error {
2116	invalidParams := request.ErrInvalidParams{Context: "DeleteGroupInput"}
2117	if s.Group != nil && len(*s.Group) < 1 {
2118		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
2119	}
2120	if s.GroupName != nil && len(*s.GroupName) < 1 {
2121		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
2122	}
2123
2124	if invalidParams.Len() > 0 {
2125		return invalidParams
2126	}
2127	return nil
2128}
2129
2130// SetGroup sets the Group field's value.
2131func (s *DeleteGroupInput) SetGroup(v string) *DeleteGroupInput {
2132	s.Group = &v
2133	return s
2134}
2135
2136// SetGroupName sets the GroupName field's value.
2137func (s *DeleteGroupInput) SetGroupName(v string) *DeleteGroupInput {
2138	s.GroupName = &v
2139	return s
2140}
2141
2142type DeleteGroupOutput struct {
2143	_ struct{} `type:"structure"`
2144
2145	// A full description of the deleted resource group.
2146	Group *Group `type:"structure"`
2147}
2148
2149// String returns the string representation.
2150//
2151// API parameter values that are decorated as "sensitive" in the API will not
2152// be included in the string output. The member name will be present, but the
2153// value will be replaced with "sensitive".
2154func (s DeleteGroupOutput) String() string {
2155	return awsutil.Prettify(s)
2156}
2157
2158// GoString returns the string representation.
2159//
2160// API parameter values that are decorated as "sensitive" in the API will not
2161// be included in the string output. The member name will be present, but the
2162// value will be replaced with "sensitive".
2163func (s DeleteGroupOutput) GoString() string {
2164	return s.String()
2165}
2166
2167// SetGroup sets the Group field's value.
2168func (s *DeleteGroupOutput) SetGroup(v *Group) *DeleteGroupOutput {
2169	s.Group = v
2170	return s
2171}
2172
2173// A resource that failed to be added to or removed from a group.
2174type FailedResource struct {
2175	_ struct{} `type:"structure"`
2176
2177	// The error code associated with the failure.
2178	ErrorCode *string `min:"1" type:"string"`
2179
2180	// The error message text associated with the failure.
2181	ErrorMessage *string `min:"1" type:"string"`
2182
2183	// The ARN of the resource that failed to be added or removed.
2184	ResourceArn *string `type:"string"`
2185}
2186
2187// String returns the string representation.
2188//
2189// API parameter values that are decorated as "sensitive" in the API will not
2190// be included in the string output. The member name will be present, but the
2191// value will be replaced with "sensitive".
2192func (s FailedResource) String() string {
2193	return awsutil.Prettify(s)
2194}
2195
2196// GoString returns the string representation.
2197//
2198// API parameter values that are decorated as "sensitive" in the API will not
2199// be included in the string output. The member name will be present, but the
2200// value will be replaced with "sensitive".
2201func (s FailedResource) GoString() string {
2202	return s.String()
2203}
2204
2205// SetErrorCode sets the ErrorCode field's value.
2206func (s *FailedResource) SetErrorCode(v string) *FailedResource {
2207	s.ErrorCode = &v
2208	return s
2209}
2210
2211// SetErrorMessage sets the ErrorMessage field's value.
2212func (s *FailedResource) SetErrorMessage(v string) *FailedResource {
2213	s.ErrorMessage = &v
2214	return s
2215}
2216
2217// SetResourceArn sets the ResourceArn field's value.
2218func (s *FailedResource) SetResourceArn(v string) *FailedResource {
2219	s.ResourceArn = &v
2220	return s
2221}
2222
2223// The caller isn't authorized to make the request. Check permissions.
2224type ForbiddenException struct {
2225	_            struct{}                  `type:"structure"`
2226	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
2227
2228	Message_ *string `locationName:"Message" min:"1" type:"string"`
2229}
2230
2231// String returns the string representation.
2232//
2233// API parameter values that are decorated as "sensitive" in the API will not
2234// be included in the string output. The member name will be present, but the
2235// value will be replaced with "sensitive".
2236func (s ForbiddenException) String() string {
2237	return awsutil.Prettify(s)
2238}
2239
2240// GoString returns the string representation.
2241//
2242// API parameter values that are decorated as "sensitive" in the API will not
2243// be included in the string output. The member name will be present, but the
2244// value will be replaced with "sensitive".
2245func (s ForbiddenException) GoString() string {
2246	return s.String()
2247}
2248
2249func newErrorForbiddenException(v protocol.ResponseMetadata) error {
2250	return &ForbiddenException{
2251		RespMetadata: v,
2252	}
2253}
2254
2255// Code returns the exception type name.
2256func (s *ForbiddenException) Code() string {
2257	return "ForbiddenException"
2258}
2259
2260// Message returns the exception's message.
2261func (s *ForbiddenException) Message() string {
2262	if s.Message_ != nil {
2263		return *s.Message_
2264	}
2265	return ""
2266}
2267
2268// OrigErr always returns nil, satisfies awserr.Error interface.
2269func (s *ForbiddenException) OrigErr() error {
2270	return nil
2271}
2272
2273func (s *ForbiddenException) Error() string {
2274	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
2275}
2276
2277// Status code returns the HTTP status code for the request's response error.
2278func (s *ForbiddenException) StatusCode() int {
2279	return s.RespMetadata.StatusCode
2280}
2281
2282// RequestID returns the service's response RequestID for request.
2283func (s *ForbiddenException) RequestID() string {
2284	return s.RespMetadata.RequestID
2285}
2286
2287type GetGroupConfigurationInput struct {
2288	_ struct{} `type:"structure"`
2289
2290	// The name or the ARN of the resource group.
2291	Group *string `min:"1" type:"string"`
2292}
2293
2294// String returns the string representation.
2295//
2296// API parameter values that are decorated as "sensitive" in the API will not
2297// be included in the string output. The member name will be present, but the
2298// value will be replaced with "sensitive".
2299func (s GetGroupConfigurationInput) String() string {
2300	return awsutil.Prettify(s)
2301}
2302
2303// GoString returns the string representation.
2304//
2305// API parameter values that are decorated as "sensitive" in the API will not
2306// be included in the string output. The member name will be present, but the
2307// value will be replaced with "sensitive".
2308func (s GetGroupConfigurationInput) GoString() string {
2309	return s.String()
2310}
2311
2312// Validate inspects the fields of the type to determine if they are valid.
2313func (s *GetGroupConfigurationInput) Validate() error {
2314	invalidParams := request.ErrInvalidParams{Context: "GetGroupConfigurationInput"}
2315	if s.Group != nil && len(*s.Group) < 1 {
2316		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
2317	}
2318
2319	if invalidParams.Len() > 0 {
2320		return invalidParams
2321	}
2322	return nil
2323}
2324
2325// SetGroup sets the Group field's value.
2326func (s *GetGroupConfigurationInput) SetGroup(v string) *GetGroupConfigurationInput {
2327	s.Group = &v
2328	return s
2329}
2330
2331type GetGroupConfigurationOutput struct {
2332	_ struct{} `type:"structure"`
2333
2334	// The service configuration associated with the specified group. For details
2335	// about the service configuration syntax, see Service configurations for resource
2336	// groups (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
2337	GroupConfiguration *GroupConfiguration `type:"structure"`
2338}
2339
2340// String returns the string representation.
2341//
2342// API parameter values that are decorated as "sensitive" in the API will not
2343// be included in the string output. The member name will be present, but the
2344// value will be replaced with "sensitive".
2345func (s GetGroupConfigurationOutput) String() string {
2346	return awsutil.Prettify(s)
2347}
2348
2349// GoString returns the string representation.
2350//
2351// API parameter values that are decorated as "sensitive" in the API will not
2352// be included in the string output. The member name will be present, but the
2353// value will be replaced with "sensitive".
2354func (s GetGroupConfigurationOutput) GoString() string {
2355	return s.String()
2356}
2357
2358// SetGroupConfiguration sets the GroupConfiguration field's value.
2359func (s *GetGroupConfigurationOutput) SetGroupConfiguration(v *GroupConfiguration) *GetGroupConfigurationOutput {
2360	s.GroupConfiguration = v
2361	return s
2362}
2363
2364type GetGroupInput struct {
2365	_ struct{} `type:"structure"`
2366
2367	// The name or the ARN of the resource group to retrieve.
2368	Group *string `min:"1" type:"string"`
2369
2370	// Deprecated - don't use this parameter. Use Group instead.
2371	//
2372	// Deprecated: This field is deprecated, use Group instead.
2373	GroupName *string `min:"1" deprecated:"true" type:"string"`
2374}
2375
2376// String returns the string representation.
2377//
2378// API parameter values that are decorated as "sensitive" in the API will not
2379// be included in the string output. The member name will be present, but the
2380// value will be replaced with "sensitive".
2381func (s GetGroupInput) String() string {
2382	return awsutil.Prettify(s)
2383}
2384
2385// GoString returns the string representation.
2386//
2387// API parameter values that are decorated as "sensitive" in the API will not
2388// be included in the string output. The member name will be present, but the
2389// value will be replaced with "sensitive".
2390func (s GetGroupInput) GoString() string {
2391	return s.String()
2392}
2393
2394// Validate inspects the fields of the type to determine if they are valid.
2395func (s *GetGroupInput) Validate() error {
2396	invalidParams := request.ErrInvalidParams{Context: "GetGroupInput"}
2397	if s.Group != nil && len(*s.Group) < 1 {
2398		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
2399	}
2400	if s.GroupName != nil && len(*s.GroupName) < 1 {
2401		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
2402	}
2403
2404	if invalidParams.Len() > 0 {
2405		return invalidParams
2406	}
2407	return nil
2408}
2409
2410// SetGroup sets the Group field's value.
2411func (s *GetGroupInput) SetGroup(v string) *GetGroupInput {
2412	s.Group = &v
2413	return s
2414}
2415
2416// SetGroupName sets the GroupName field's value.
2417func (s *GetGroupInput) SetGroupName(v string) *GetGroupInput {
2418	s.GroupName = &v
2419	return s
2420}
2421
2422type GetGroupOutput struct {
2423	_ struct{} `type:"structure"`
2424
2425	// A full description of the resource group.
2426	Group *Group `type:"structure"`
2427}
2428
2429// String returns the string representation.
2430//
2431// API parameter values that are decorated as "sensitive" in the API will not
2432// be included in the string output. The member name will be present, but the
2433// value will be replaced with "sensitive".
2434func (s GetGroupOutput) String() string {
2435	return awsutil.Prettify(s)
2436}
2437
2438// GoString returns the string representation.
2439//
2440// API parameter values that are decorated as "sensitive" in the API will not
2441// be included in the string output. The member name will be present, but the
2442// value will be replaced with "sensitive".
2443func (s GetGroupOutput) GoString() string {
2444	return s.String()
2445}
2446
2447// SetGroup sets the Group field's value.
2448func (s *GetGroupOutput) SetGroup(v *Group) *GetGroupOutput {
2449	s.Group = v
2450	return s
2451}
2452
2453type GetGroupQueryInput struct {
2454	_ struct{} `type:"structure"`
2455
2456	// The name or the ARN of the resource group to query.
2457	Group *string `min:"1" type:"string"`
2458
2459	// Don't use this parameter. Use Group instead.
2460	//
2461	// Deprecated: This field is deprecated, use Group instead.
2462	GroupName *string `min:"1" deprecated:"true" type:"string"`
2463}
2464
2465// String returns the string representation.
2466//
2467// API parameter values that are decorated as "sensitive" in the API will not
2468// be included in the string output. The member name will be present, but the
2469// value will be replaced with "sensitive".
2470func (s GetGroupQueryInput) String() string {
2471	return awsutil.Prettify(s)
2472}
2473
2474// GoString returns the string representation.
2475//
2476// API parameter values that are decorated as "sensitive" in the API will not
2477// be included in the string output. The member name will be present, but the
2478// value will be replaced with "sensitive".
2479func (s GetGroupQueryInput) GoString() string {
2480	return s.String()
2481}
2482
2483// Validate inspects the fields of the type to determine if they are valid.
2484func (s *GetGroupQueryInput) Validate() error {
2485	invalidParams := request.ErrInvalidParams{Context: "GetGroupQueryInput"}
2486	if s.Group != nil && len(*s.Group) < 1 {
2487		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
2488	}
2489	if s.GroupName != nil && len(*s.GroupName) < 1 {
2490		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
2491	}
2492
2493	if invalidParams.Len() > 0 {
2494		return invalidParams
2495	}
2496	return nil
2497}
2498
2499// SetGroup sets the Group field's value.
2500func (s *GetGroupQueryInput) SetGroup(v string) *GetGroupQueryInput {
2501	s.Group = &v
2502	return s
2503}
2504
2505// SetGroupName sets the GroupName field's value.
2506func (s *GetGroupQueryInput) SetGroupName(v string) *GetGroupQueryInput {
2507	s.GroupName = &v
2508	return s
2509}
2510
2511type GetGroupQueryOutput struct {
2512	_ struct{} `type:"structure"`
2513
2514	// The resource query associated with the specified group. For more information
2515	// 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).
2516	GroupQuery *GroupQuery `type:"structure"`
2517}
2518
2519// String returns the string representation.
2520//
2521// API parameter values that are decorated as "sensitive" in the API will not
2522// be included in the string output. The member name will be present, but the
2523// value will be replaced with "sensitive".
2524func (s GetGroupQueryOutput) String() string {
2525	return awsutil.Prettify(s)
2526}
2527
2528// GoString returns the string representation.
2529//
2530// API parameter values that are decorated as "sensitive" in the API will not
2531// be included in the string output. The member name will be present, but the
2532// value will be replaced with "sensitive".
2533func (s GetGroupQueryOutput) GoString() string {
2534	return s.String()
2535}
2536
2537// SetGroupQuery sets the GroupQuery field's value.
2538func (s *GetGroupQueryOutput) SetGroupQuery(v *GroupQuery) *GetGroupQueryOutput {
2539	s.GroupQuery = v
2540	return s
2541}
2542
2543type GetTagsInput struct {
2544	_ struct{} `type:"structure" nopayload:"true"`
2545
2546	// The ARN of the resource group whose tags you want to retrieve.
2547	//
2548	// Arn is a required field
2549	Arn *string `location:"uri" locationName:"Arn" min:"12" type:"string" required:"true"`
2550}
2551
2552// String returns the string representation.
2553//
2554// API parameter values that are decorated as "sensitive" in the API will not
2555// be included in the string output. The member name will be present, but the
2556// value will be replaced with "sensitive".
2557func (s GetTagsInput) String() string {
2558	return awsutil.Prettify(s)
2559}
2560
2561// GoString returns the string representation.
2562//
2563// API parameter values that are decorated as "sensitive" in the API will not
2564// be included in the string output. The member name will be present, but the
2565// value will be replaced with "sensitive".
2566func (s GetTagsInput) GoString() string {
2567	return s.String()
2568}
2569
2570// Validate inspects the fields of the type to determine if they are valid.
2571func (s *GetTagsInput) Validate() error {
2572	invalidParams := request.ErrInvalidParams{Context: "GetTagsInput"}
2573	if s.Arn == nil {
2574		invalidParams.Add(request.NewErrParamRequired("Arn"))
2575	}
2576	if s.Arn != nil && len(*s.Arn) < 12 {
2577		invalidParams.Add(request.NewErrParamMinLen("Arn", 12))
2578	}
2579
2580	if invalidParams.Len() > 0 {
2581		return invalidParams
2582	}
2583	return nil
2584}
2585
2586// SetArn sets the Arn field's value.
2587func (s *GetTagsInput) SetArn(v string) *GetTagsInput {
2588	s.Arn = &v
2589	return s
2590}
2591
2592type GetTagsOutput struct {
2593	_ struct{} `type:"structure"`
2594
2595	// The ARN of the tagged resource group.
2596	Arn *string `min:"12" type:"string"`
2597
2598	// The tags associated with the specified resource group.
2599	Tags map[string]*string `type:"map"`
2600}
2601
2602// String returns the string representation.
2603//
2604// API parameter values that are decorated as "sensitive" in the API will not
2605// be included in the string output. The member name will be present, but the
2606// value will be replaced with "sensitive".
2607func (s GetTagsOutput) String() string {
2608	return awsutil.Prettify(s)
2609}
2610
2611// GoString returns the string representation.
2612//
2613// API parameter values that are decorated as "sensitive" in the API will not
2614// be included in the string output. The member name will be present, but the
2615// value will be replaced with "sensitive".
2616func (s GetTagsOutput) GoString() string {
2617	return s.String()
2618}
2619
2620// SetArn sets the Arn field's value.
2621func (s *GetTagsOutput) SetArn(v string) *GetTagsOutput {
2622	s.Arn = &v
2623	return s
2624}
2625
2626// SetTags sets the Tags field's value.
2627func (s *GetTagsOutput) SetTags(v map[string]*string) *GetTagsOutput {
2628	s.Tags = v
2629	return s
2630}
2631
2632// A resource group that contains AWS resources. You can assign resources to
2633// the group by associating either of the following elements with the group:
2634//
2635//    * ResourceQuery - Use a resource query to specify a set of tag keys and
2636//    values. All resources in the same AWS Region and AWS account that have
2637//    those keys with the same values are included in the group. You can add
2638//    a resource query when you create the group, or later by using the PutGroupConfiguration
2639//    operation.
2640//
2641//    * GroupConfiguration - Use a service configuration to associate the group
2642//    with an AWS service. The configuration specifies which resource types
2643//    can be included in the group.
2644type Group struct {
2645	_ struct{} `type:"structure"`
2646
2647	// The description of the resource group.
2648	Description *string `type:"string"`
2649
2650	// The ARN of the resource group.
2651	//
2652	// GroupArn is a required field
2653	GroupArn *string `min:"12" type:"string" required:"true"`
2654
2655	// The name of the resource group.
2656	//
2657	// Name is a required field
2658	Name *string `min:"1" type:"string" required:"true"`
2659}
2660
2661// String returns the string representation.
2662//
2663// API parameter values that are decorated as "sensitive" in the API will not
2664// be included in the string output. The member name will be present, but the
2665// value will be replaced with "sensitive".
2666func (s Group) String() string {
2667	return awsutil.Prettify(s)
2668}
2669
2670// GoString returns the string representation.
2671//
2672// API parameter values that are decorated as "sensitive" in the API will not
2673// be included in the string output. The member name will be present, but the
2674// value will be replaced with "sensitive".
2675func (s Group) GoString() string {
2676	return s.String()
2677}
2678
2679// SetDescription sets the Description field's value.
2680func (s *Group) SetDescription(v string) *Group {
2681	s.Description = &v
2682	return s
2683}
2684
2685// SetGroupArn sets the GroupArn field's value.
2686func (s *Group) SetGroupArn(v string) *Group {
2687	s.GroupArn = &v
2688	return s
2689}
2690
2691// SetName sets the Name field's value.
2692func (s *Group) SetName(v string) *Group {
2693	s.Name = &v
2694	return s
2695}
2696
2697// A service configuration associated with a resource group. The configuration
2698// options are determined by the AWS service that defines the Type, and specifies
2699// which resources can be included in the group. You can add a service configuration
2700// when you create the group by using CreateGroup, or later by using the PutGroupConfiguration
2701// operation. For details about group service configuration syntax, see Service
2702// configurations for resource groups (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
2703type GroupConfiguration struct {
2704	_ struct{} `type:"structure"`
2705
2706	// The configuration currently associated with the group and in effect.
2707	Configuration []*GroupConfigurationItem `type:"list"`
2708
2709	// If present, the reason why a request to update the group configuration failed.
2710	FailureReason *string `type:"string"`
2711
2712	// If present, the new configuration that is in the process of being applied
2713	// to the group.
2714	ProposedConfiguration []*GroupConfigurationItem `type:"list"`
2715
2716	// The current status of an attempt to update the group configuration.
2717	Status *string `type:"string" enum:"GroupConfigurationStatus"`
2718}
2719
2720// String returns the string representation.
2721//
2722// API parameter values that are decorated as "sensitive" in the API will not
2723// be included in the string output. The member name will be present, but the
2724// value will be replaced with "sensitive".
2725func (s GroupConfiguration) String() string {
2726	return awsutil.Prettify(s)
2727}
2728
2729// GoString returns the string representation.
2730//
2731// API parameter values that are decorated as "sensitive" in the API will not
2732// be included in the string output. The member name will be present, but the
2733// value will be replaced with "sensitive".
2734func (s GroupConfiguration) GoString() string {
2735	return s.String()
2736}
2737
2738// SetConfiguration sets the Configuration field's value.
2739func (s *GroupConfiguration) SetConfiguration(v []*GroupConfigurationItem) *GroupConfiguration {
2740	s.Configuration = v
2741	return s
2742}
2743
2744// SetFailureReason sets the FailureReason field's value.
2745func (s *GroupConfiguration) SetFailureReason(v string) *GroupConfiguration {
2746	s.FailureReason = &v
2747	return s
2748}
2749
2750// SetProposedConfiguration sets the ProposedConfiguration field's value.
2751func (s *GroupConfiguration) SetProposedConfiguration(v []*GroupConfigurationItem) *GroupConfiguration {
2752	s.ProposedConfiguration = v
2753	return s
2754}
2755
2756// SetStatus sets the Status field's value.
2757func (s *GroupConfiguration) SetStatus(v string) *GroupConfiguration {
2758	s.Status = &v
2759	return s
2760}
2761
2762// An item in a group configuration. A group service configuration can have
2763// one or more items. For details about group service configuration syntax,
2764// see Service configurations for resource groups (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
2765type GroupConfigurationItem struct {
2766	_ struct{} `type:"structure"`
2767
2768	// A collection of parameters for this group configuration item. For the list
2769	// of parameters that you can use with each configuration item type, see Supported
2770	// resource types and parameters (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html#about-slg-types).
2771	Parameters []*GroupConfigurationParameter `type:"list"`
2772
2773	// Specifies the type of group configuration item. Each item must have a unique
2774	// value for type. For the list of types that you can specify for a configuration
2775	// item, see Supported resource types and parameters (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html#about-slg-types).
2776	//
2777	// Type is a required field
2778	Type *string `type:"string" required:"true"`
2779}
2780
2781// String returns the string representation.
2782//
2783// API parameter values that are decorated as "sensitive" in the API will not
2784// be included in the string output. The member name will be present, but the
2785// value will be replaced with "sensitive".
2786func (s GroupConfigurationItem) String() string {
2787	return awsutil.Prettify(s)
2788}
2789
2790// GoString returns the string representation.
2791//
2792// API parameter values that are decorated as "sensitive" in the API will not
2793// be included in the string output. The member name will be present, but the
2794// value will be replaced with "sensitive".
2795func (s GroupConfigurationItem) GoString() string {
2796	return s.String()
2797}
2798
2799// Validate inspects the fields of the type to determine if they are valid.
2800func (s *GroupConfigurationItem) Validate() error {
2801	invalidParams := request.ErrInvalidParams{Context: "GroupConfigurationItem"}
2802	if s.Type == nil {
2803		invalidParams.Add(request.NewErrParamRequired("Type"))
2804	}
2805	if s.Parameters != nil {
2806		for i, v := range s.Parameters {
2807			if v == nil {
2808				continue
2809			}
2810			if err := v.Validate(); err != nil {
2811				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Parameters", i), err.(request.ErrInvalidParams))
2812			}
2813		}
2814	}
2815
2816	if invalidParams.Len() > 0 {
2817		return invalidParams
2818	}
2819	return nil
2820}
2821
2822// SetParameters sets the Parameters field's value.
2823func (s *GroupConfigurationItem) SetParameters(v []*GroupConfigurationParameter) *GroupConfigurationItem {
2824	s.Parameters = v
2825	return s
2826}
2827
2828// SetType sets the Type field's value.
2829func (s *GroupConfigurationItem) SetType(v string) *GroupConfigurationItem {
2830	s.Type = &v
2831	return s
2832}
2833
2834// A parameter for a group configuration item. For details about group service
2835// configuration syntax, see Service configurations for resource groups (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
2836type GroupConfigurationParameter struct {
2837	_ struct{} `type:"structure"`
2838
2839	// The name of the group configuration parameter. For the list of parameters
2840	// that you can use with each configuration item type, see Supported resource
2841	// types and parameters (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html#about-slg-types).
2842	//
2843	// Name is a required field
2844	Name *string `min:"1" type:"string" required:"true"`
2845
2846	// The value or values to be used for the specified parameter. For the list
2847	// of values you can use with each parameter, see Supported resource types and
2848	// parameters (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html#about-slg-types).
2849	Values []*string `type:"list"`
2850}
2851
2852// String returns the string representation.
2853//
2854// API parameter values that are decorated as "sensitive" in the API will not
2855// be included in the string output. The member name will be present, but the
2856// value will be replaced with "sensitive".
2857func (s GroupConfigurationParameter) String() string {
2858	return awsutil.Prettify(s)
2859}
2860
2861// GoString returns the string representation.
2862//
2863// API parameter values that are decorated as "sensitive" in the API will not
2864// be included in the string output. The member name will be present, but the
2865// value will be replaced with "sensitive".
2866func (s GroupConfigurationParameter) GoString() string {
2867	return s.String()
2868}
2869
2870// Validate inspects the fields of the type to determine if they are valid.
2871func (s *GroupConfigurationParameter) Validate() error {
2872	invalidParams := request.ErrInvalidParams{Context: "GroupConfigurationParameter"}
2873	if s.Name == nil {
2874		invalidParams.Add(request.NewErrParamRequired("Name"))
2875	}
2876	if s.Name != nil && len(*s.Name) < 1 {
2877		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
2878	}
2879
2880	if invalidParams.Len() > 0 {
2881		return invalidParams
2882	}
2883	return nil
2884}
2885
2886// SetName sets the Name field's value.
2887func (s *GroupConfigurationParameter) SetName(v string) *GroupConfigurationParameter {
2888	s.Name = &v
2889	return s
2890}
2891
2892// SetValues sets the Values field's value.
2893func (s *GroupConfigurationParameter) SetValues(v []*string) *GroupConfigurationParameter {
2894	s.Values = v
2895	return s
2896}
2897
2898// A filter collection that you can use to restrict the results from a List
2899// operation to only those you want to include.
2900type GroupFilter struct {
2901	_ struct{} `type:"structure"`
2902
2903	// The name of the filter. Filter names are case-sensitive.
2904	//
2905	// Name is a required field
2906	Name *string `type:"string" required:"true" enum:"GroupFilterName"`
2907
2908	// One or more filter values. Allowed filter values vary by group filter name,
2909	// and are case-sensitive.
2910	//
2911	// Values is a required field
2912	Values []*string `min:"1" type:"list" required:"true"`
2913}
2914
2915// String returns the string representation.
2916//
2917// API parameter values that are decorated as "sensitive" in the API will not
2918// be included in the string output. The member name will be present, but the
2919// value will be replaced with "sensitive".
2920func (s GroupFilter) String() string {
2921	return awsutil.Prettify(s)
2922}
2923
2924// GoString returns the string representation.
2925//
2926// API parameter values that are decorated as "sensitive" in the API will not
2927// be included in the string output. The member name will be present, but the
2928// value will be replaced with "sensitive".
2929func (s GroupFilter) GoString() string {
2930	return s.String()
2931}
2932
2933// Validate inspects the fields of the type to determine if they are valid.
2934func (s *GroupFilter) Validate() error {
2935	invalidParams := request.ErrInvalidParams{Context: "GroupFilter"}
2936	if s.Name == nil {
2937		invalidParams.Add(request.NewErrParamRequired("Name"))
2938	}
2939	if s.Values == nil {
2940		invalidParams.Add(request.NewErrParamRequired("Values"))
2941	}
2942	if s.Values != nil && len(s.Values) < 1 {
2943		invalidParams.Add(request.NewErrParamMinLen("Values", 1))
2944	}
2945
2946	if invalidParams.Len() > 0 {
2947		return invalidParams
2948	}
2949	return nil
2950}
2951
2952// SetName sets the Name field's value.
2953func (s *GroupFilter) SetName(v string) *GroupFilter {
2954	s.Name = &v
2955	return s
2956}
2957
2958// SetValues sets the Values field's value.
2959func (s *GroupFilter) SetValues(v []*string) *GroupFilter {
2960	s.Values = v
2961	return s
2962}
2963
2964// The unique identifiers for a resource group.
2965type GroupIdentifier struct {
2966	_ struct{} `type:"structure"`
2967
2968	// The ARN of the resource group.
2969	GroupArn *string `min:"12" type:"string"`
2970
2971	// The name of the resource group.
2972	GroupName *string `min:"1" type:"string"`
2973}
2974
2975// String returns the string representation.
2976//
2977// API parameter values that are decorated as "sensitive" in the API will not
2978// be included in the string output. The member name will be present, but the
2979// value will be replaced with "sensitive".
2980func (s GroupIdentifier) String() string {
2981	return awsutil.Prettify(s)
2982}
2983
2984// GoString returns the string representation.
2985//
2986// API parameter values that are decorated as "sensitive" in the API will not
2987// be included in the string output. The member name will be present, but the
2988// value will be replaced with "sensitive".
2989func (s GroupIdentifier) GoString() string {
2990	return s.String()
2991}
2992
2993// SetGroupArn sets the GroupArn field's value.
2994func (s *GroupIdentifier) SetGroupArn(v string) *GroupIdentifier {
2995	s.GroupArn = &v
2996	return s
2997}
2998
2999// SetGroupName sets the GroupName field's value.
3000func (s *GroupIdentifier) SetGroupName(v string) *GroupIdentifier {
3001	s.GroupName = &v
3002	return s
3003}
3004
3005// A mapping of a query attached to a resource group that determines the AWS
3006// resources that are members of the group.
3007type GroupQuery struct {
3008	_ struct{} `type:"structure"`
3009
3010	// The name of the resource group that is associated with the specified resource
3011	// query.
3012	//
3013	// GroupName is a required field
3014	GroupName *string `min:"1" type:"string" required:"true"`
3015
3016	// The resource query that determines which AWS resources are members of the
3017	// associated resource group.
3018	//
3019	// ResourceQuery is a required field
3020	ResourceQuery *ResourceQuery `type:"structure" required:"true"`
3021}
3022
3023// String returns the string representation.
3024//
3025// API parameter values that are decorated as "sensitive" in the API will not
3026// be included in the string output. The member name will be present, but the
3027// value will be replaced with "sensitive".
3028func (s GroupQuery) String() string {
3029	return awsutil.Prettify(s)
3030}
3031
3032// GoString returns the string representation.
3033//
3034// API parameter values that are decorated as "sensitive" in the API will not
3035// be included in the string output. The member name will be present, but the
3036// value will be replaced with "sensitive".
3037func (s GroupQuery) GoString() string {
3038	return s.String()
3039}
3040
3041// SetGroupName sets the GroupName field's value.
3042func (s *GroupQuery) SetGroupName(v string) *GroupQuery {
3043	s.GroupName = &v
3044	return s
3045}
3046
3047// SetResourceQuery sets the ResourceQuery field's value.
3048func (s *GroupQuery) SetResourceQuery(v *ResourceQuery) *GroupQuery {
3049	s.ResourceQuery = v
3050	return s
3051}
3052
3053type GroupResourcesInput struct {
3054	_ struct{} `type:"structure"`
3055
3056	// The name or the ARN of the resource group to add resources to.
3057	//
3058	// Group is a required field
3059	Group *string `min:"1" type:"string" required:"true"`
3060
3061	// The list of ARNs for resources to be added to the group.
3062	//
3063	// ResourceArns is a required field
3064	ResourceArns []*string `min:"1" type:"list" required:"true"`
3065}
3066
3067// String returns the string representation.
3068//
3069// API parameter values that are decorated as "sensitive" in the API will not
3070// be included in the string output. The member name will be present, but the
3071// value will be replaced with "sensitive".
3072func (s GroupResourcesInput) String() string {
3073	return awsutil.Prettify(s)
3074}
3075
3076// GoString returns the string representation.
3077//
3078// API parameter values that are decorated as "sensitive" in the API will not
3079// be included in the string output. The member name will be present, but the
3080// value will be replaced with "sensitive".
3081func (s GroupResourcesInput) GoString() string {
3082	return s.String()
3083}
3084
3085// Validate inspects the fields of the type to determine if they are valid.
3086func (s *GroupResourcesInput) Validate() error {
3087	invalidParams := request.ErrInvalidParams{Context: "GroupResourcesInput"}
3088	if s.Group == nil {
3089		invalidParams.Add(request.NewErrParamRequired("Group"))
3090	}
3091	if s.Group != nil && len(*s.Group) < 1 {
3092		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
3093	}
3094	if s.ResourceArns == nil {
3095		invalidParams.Add(request.NewErrParamRequired("ResourceArns"))
3096	}
3097	if s.ResourceArns != nil && len(s.ResourceArns) < 1 {
3098		invalidParams.Add(request.NewErrParamMinLen("ResourceArns", 1))
3099	}
3100
3101	if invalidParams.Len() > 0 {
3102		return invalidParams
3103	}
3104	return nil
3105}
3106
3107// SetGroup sets the Group field's value.
3108func (s *GroupResourcesInput) SetGroup(v string) *GroupResourcesInput {
3109	s.Group = &v
3110	return s
3111}
3112
3113// SetResourceArns sets the ResourceArns field's value.
3114func (s *GroupResourcesInput) SetResourceArns(v []*string) *GroupResourcesInput {
3115	s.ResourceArns = v
3116	return s
3117}
3118
3119type GroupResourcesOutput struct {
3120	_ struct{} `type:"structure"`
3121
3122	// A list of ARNs of any resources that failed to be added to the group by this
3123	// operation.
3124	Failed []*FailedResource `type:"list"`
3125
3126	// A list of ARNs of any resources that are still in the process of being added
3127	// to the group by this operation. These pending additions continue asynchronously.
3128	// You can check the status of pending additions by using the ListGroupResources
3129	// operation, and checking the Resources array in the response and the Status
3130	// field of each object in that array.
3131	Pending []*PendingResource `type:"list"`
3132
3133	// A list of ARNs of resources that were successfully added to the group by
3134	// this operation.
3135	Succeeded []*string `min:"1" type:"list"`
3136}
3137
3138// String returns the string representation.
3139//
3140// API parameter values that are decorated as "sensitive" in the API will not
3141// be included in the string output. The member name will be present, but the
3142// value will be replaced with "sensitive".
3143func (s GroupResourcesOutput) String() string {
3144	return awsutil.Prettify(s)
3145}
3146
3147// GoString returns the string representation.
3148//
3149// API parameter values that are decorated as "sensitive" in the API will not
3150// be included in the string output. The member name will be present, but the
3151// value will be replaced with "sensitive".
3152func (s GroupResourcesOutput) GoString() string {
3153	return s.String()
3154}
3155
3156// SetFailed sets the Failed field's value.
3157func (s *GroupResourcesOutput) SetFailed(v []*FailedResource) *GroupResourcesOutput {
3158	s.Failed = v
3159	return s
3160}
3161
3162// SetPending sets the Pending field's value.
3163func (s *GroupResourcesOutput) SetPending(v []*PendingResource) *GroupResourcesOutput {
3164	s.Pending = v
3165	return s
3166}
3167
3168// SetSucceeded sets the Succeeded field's value.
3169func (s *GroupResourcesOutput) SetSucceeded(v []*string) *GroupResourcesOutput {
3170	s.Succeeded = v
3171	return s
3172}
3173
3174// An internal error occurred while processing the request. Try again later.
3175type InternalServerErrorException struct {
3176	_            struct{}                  `type:"structure"`
3177	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
3178
3179	Message_ *string `locationName:"Message" min:"1" type:"string"`
3180}
3181
3182// String returns the string representation.
3183//
3184// API parameter values that are decorated as "sensitive" in the API will not
3185// be included in the string output. The member name will be present, but the
3186// value will be replaced with "sensitive".
3187func (s InternalServerErrorException) String() string {
3188	return awsutil.Prettify(s)
3189}
3190
3191// GoString returns the string representation.
3192//
3193// API parameter values that are decorated as "sensitive" in the API will not
3194// be included in the string output. The member name will be present, but the
3195// value will be replaced with "sensitive".
3196func (s InternalServerErrorException) GoString() string {
3197	return s.String()
3198}
3199
3200func newErrorInternalServerErrorException(v protocol.ResponseMetadata) error {
3201	return &InternalServerErrorException{
3202		RespMetadata: v,
3203	}
3204}
3205
3206// Code returns the exception type name.
3207func (s *InternalServerErrorException) Code() string {
3208	return "InternalServerErrorException"
3209}
3210
3211// Message returns the exception's message.
3212func (s *InternalServerErrorException) Message() string {
3213	if s.Message_ != nil {
3214		return *s.Message_
3215	}
3216	return ""
3217}
3218
3219// OrigErr always returns nil, satisfies awserr.Error interface.
3220func (s *InternalServerErrorException) OrigErr() error {
3221	return nil
3222}
3223
3224func (s *InternalServerErrorException) Error() string {
3225	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
3226}
3227
3228// Status code returns the HTTP status code for the request's response error.
3229func (s *InternalServerErrorException) StatusCode() int {
3230	return s.RespMetadata.StatusCode
3231}
3232
3233// RequestID returns the service's response RequestID for request.
3234func (s *InternalServerErrorException) RequestID() string {
3235	return s.RespMetadata.RequestID
3236}
3237
3238type ListGroupResourcesInput struct {
3239	_ struct{} `type:"structure"`
3240
3241	// Filters, formatted as ResourceFilter objects, that you want to apply to a
3242	// ListGroupResources operation. Filters the results to include only those of
3243	// the specified resource types.
3244	//
3245	//    * resource-type - Filter resources by their type. Specify up to five resource
3246	//    types in the format AWS::ServiceCode::ResourceType. For example, AWS::EC2::Instance,
3247	//    or AWS::S3::Bucket.
3248	//
3249	// When you specify a resource-type filter for ListGroupResources, AWS Resource
3250	// Groups validates your filter resource types against the types that are defined
3251	// in the query associated with the group. For example, if a group contains
3252	// only S3 buckets because its query specifies only that resource type, but
3253	// your resource-type filter includes EC2 instances, AWS Resource Groups does
3254	// not filter for EC2 instances. In this case, a ListGroupResources request
3255	// returns a BadRequestException error with a message similar to the following:
3256	//
3257	// The resource types specified as filters in the request are not valid.
3258	//
3259	// The error includes a list of resource types that failed the validation because
3260	// they are not part of the query associated with the group. This validation
3261	// doesn't occur when the group query specifies AWS::AllSupported, because a
3262	// group based on such a query can contain any of the allowed resource types
3263	// for the query type (tag-based or AWS CloudFormation stack-based queries).
3264	Filters []*ResourceFilter `type:"list"`
3265
3266	// The name or the ARN of the resource group
3267	Group *string `min:"1" type:"string"`
3268
3269	//
3270	//  Deprecated - don't use this parameter. Use the Group request field instead.
3271	//
3272	// Deprecated: This field is deprecated, use Group instead.
3273	GroupName *string `min:"1" deprecated:"true" type:"string"`
3274
3275	// The total number of results that you want included on each page of the response.
3276	// If you do not include this parameter, it defaults to a value that is specific
3277	// to the operation. If additional items exist beyond the maximum you specify,
3278	// the NextToken response element is present and has a value (is not null).
3279	// Include that value as the NextToken request parameter in the next call to
3280	// the operation to get the next part of the results. Note that the service
3281	// might return fewer results than the maximum even when there are more results
3282	// available. You should check NextToken after every operation to ensure that
3283	// you receive all of the results.
3284	MaxResults *int64 `min:"1" type:"integer"`
3285
3286	// The parameter for receiving additional results if you receive a NextToken
3287	// response in a previous request. A NextToken response indicates that more
3288	// output is available. Set this parameter to the value provided by a previous
3289	// call's NextToken response to indicate where the output should continue from.
3290	NextToken *string `type:"string"`
3291}
3292
3293// String returns the string representation.
3294//
3295// API parameter values that are decorated as "sensitive" in the API will not
3296// be included in the string output. The member name will be present, but the
3297// value will be replaced with "sensitive".
3298func (s ListGroupResourcesInput) String() string {
3299	return awsutil.Prettify(s)
3300}
3301
3302// GoString returns the string representation.
3303//
3304// API parameter values that are decorated as "sensitive" in the API will not
3305// be included in the string output. The member name will be present, but the
3306// value will be replaced with "sensitive".
3307func (s ListGroupResourcesInput) GoString() string {
3308	return s.String()
3309}
3310
3311// Validate inspects the fields of the type to determine if they are valid.
3312func (s *ListGroupResourcesInput) Validate() error {
3313	invalidParams := request.ErrInvalidParams{Context: "ListGroupResourcesInput"}
3314	if s.Group != nil && len(*s.Group) < 1 {
3315		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
3316	}
3317	if s.GroupName != nil && len(*s.GroupName) < 1 {
3318		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
3319	}
3320	if s.MaxResults != nil && *s.MaxResults < 1 {
3321		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
3322	}
3323	if s.Filters != nil {
3324		for i, v := range s.Filters {
3325			if v == nil {
3326				continue
3327			}
3328			if err := v.Validate(); err != nil {
3329				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
3330			}
3331		}
3332	}
3333
3334	if invalidParams.Len() > 0 {
3335		return invalidParams
3336	}
3337	return nil
3338}
3339
3340// SetFilters sets the Filters field's value.
3341func (s *ListGroupResourcesInput) SetFilters(v []*ResourceFilter) *ListGroupResourcesInput {
3342	s.Filters = v
3343	return s
3344}
3345
3346// SetGroup sets the Group field's value.
3347func (s *ListGroupResourcesInput) SetGroup(v string) *ListGroupResourcesInput {
3348	s.Group = &v
3349	return s
3350}
3351
3352// SetGroupName sets the GroupName field's value.
3353func (s *ListGroupResourcesInput) SetGroupName(v string) *ListGroupResourcesInput {
3354	s.GroupName = &v
3355	return s
3356}
3357
3358// SetMaxResults sets the MaxResults field's value.
3359func (s *ListGroupResourcesInput) SetMaxResults(v int64) *ListGroupResourcesInput {
3360	s.MaxResults = &v
3361	return s
3362}
3363
3364// SetNextToken sets the NextToken field's value.
3365func (s *ListGroupResourcesInput) SetNextToken(v string) *ListGroupResourcesInput {
3366	s.NextToken = &v
3367	return s
3368}
3369
3370// A structure returned by the ListGroupResources operation that contains identity
3371// and group membership status information for one of the resources in the group.
3372type ListGroupResourcesItem struct {
3373	_ struct{} `type:"structure"`
3374
3375	// A structure that contains the ARN of a resource and its resource type.
3376	Identifier *ResourceIdentifier `type:"structure"`
3377
3378	// A structure that contains the status of this resource's membership in the
3379	// group.
3380	//
3381	// This field is present in the response only if the group is of type AWS::EC2::HostManagement.
3382	Status *ResourceStatus `type:"structure"`
3383}
3384
3385// String returns the string representation.
3386//
3387// API parameter values that are decorated as "sensitive" in the API will not
3388// be included in the string output. The member name will be present, but the
3389// value will be replaced with "sensitive".
3390func (s ListGroupResourcesItem) String() string {
3391	return awsutil.Prettify(s)
3392}
3393
3394// GoString returns the string representation.
3395//
3396// API parameter values that are decorated as "sensitive" in the API will not
3397// be included in the string output. The member name will be present, but the
3398// value will be replaced with "sensitive".
3399func (s ListGroupResourcesItem) GoString() string {
3400	return s.String()
3401}
3402
3403// SetIdentifier sets the Identifier field's value.
3404func (s *ListGroupResourcesItem) SetIdentifier(v *ResourceIdentifier) *ListGroupResourcesItem {
3405	s.Identifier = v
3406	return s
3407}
3408
3409// SetStatus sets the Status field's value.
3410func (s *ListGroupResourcesItem) SetStatus(v *ResourceStatus) *ListGroupResourcesItem {
3411	s.Status = v
3412	return s
3413}
3414
3415type ListGroupResourcesOutput struct {
3416	_ struct{} `type:"structure"`
3417
3418	// If present, indicates that more output is available than is included in the
3419	// current response. Use this value in the NextToken request parameter in a
3420	// subsequent call to the operation to get the next part of the output. You
3421	// should repeat this until the NextToken response element comes back as null.
3422	NextToken *string `type:"string"`
3423
3424	// A list of QueryError objects. Each error is an object that contains ErrorCode
3425	// and Message structures. Possible values for ErrorCode are CLOUDFORMATION_STACK_INACTIVE
3426	// and CLOUDFORMATION_STACK_NOT_EXISTING.
3427	QueryErrors []*QueryError `type:"list"`
3428
3429	//
3430	//  Deprecated - don't use this parameter. Use the Resources response field
3431	//  instead.
3432	//
3433	// Deprecated: This field is deprecated, use Resources instead.
3434	ResourceIdentifiers []*ResourceIdentifier `deprecated:"true" type:"list"`
3435
3436	// An array of resources from which you can determine each resource's identity,
3437	// type, and group membership status.
3438	Resources []*ListGroupResourcesItem `type:"list"`
3439}
3440
3441// String returns the string representation.
3442//
3443// API parameter values that are decorated as "sensitive" in the API will not
3444// be included in the string output. The member name will be present, but the
3445// value will be replaced with "sensitive".
3446func (s ListGroupResourcesOutput) String() string {
3447	return awsutil.Prettify(s)
3448}
3449
3450// GoString returns the string representation.
3451//
3452// API parameter values that are decorated as "sensitive" in the API will not
3453// be included in the string output. The member name will be present, but the
3454// value will be replaced with "sensitive".
3455func (s ListGroupResourcesOutput) GoString() string {
3456	return s.String()
3457}
3458
3459// SetNextToken sets the NextToken field's value.
3460func (s *ListGroupResourcesOutput) SetNextToken(v string) *ListGroupResourcesOutput {
3461	s.NextToken = &v
3462	return s
3463}
3464
3465// SetQueryErrors sets the QueryErrors field's value.
3466func (s *ListGroupResourcesOutput) SetQueryErrors(v []*QueryError) *ListGroupResourcesOutput {
3467	s.QueryErrors = v
3468	return s
3469}
3470
3471// SetResourceIdentifiers sets the ResourceIdentifiers field's value.
3472func (s *ListGroupResourcesOutput) SetResourceIdentifiers(v []*ResourceIdentifier) *ListGroupResourcesOutput {
3473	s.ResourceIdentifiers = v
3474	return s
3475}
3476
3477// SetResources sets the Resources field's value.
3478func (s *ListGroupResourcesOutput) SetResources(v []*ListGroupResourcesItem) *ListGroupResourcesOutput {
3479	s.Resources = v
3480	return s
3481}
3482
3483type ListGroupsInput struct {
3484	_ struct{} `type:"structure"`
3485
3486	// Filters, formatted as GroupFilter objects, that you want to apply to a ListGroups
3487	// operation.
3488	//
3489	//    * resource-type - Filter the results to include only those of the specified
3490	//    resource types. Specify up to five resource types in the format AWS::ServiceCode::ResourceType
3491	//    . For example, AWS::EC2::Instance, or AWS::S3::Bucket.
3492	//
3493	//    * configuration-type - Filter the results to include only those groups
3494	//    that have the specified configuration types attached. The current supported
3495	//    values are: AWS:EC2::CapacityReservationPool AWS:EC2::HostManagement
3496	Filters []*GroupFilter `type:"list"`
3497
3498	// The total number of results that you want included on each page of the response.
3499	// If you do not include this parameter, it defaults to a value that is specific
3500	// to the operation. If additional items exist beyond the maximum you specify,
3501	// the NextToken response element is present and has a value (is not null).
3502	// Include that value as the NextToken request parameter in the next call to
3503	// the operation to get the next part of the results. Note that the service
3504	// might return fewer results than the maximum even when there are more results
3505	// available. You should check NextToken after every operation to ensure that
3506	// you receive all of the results.
3507	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
3508
3509	// The parameter for receiving additional results if you receive a NextToken
3510	// response in a previous request. A NextToken response indicates that more
3511	// output is available. Set this parameter to the value provided by a previous
3512	// call's NextToken response to indicate where the output should continue from.
3513	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
3514}
3515
3516// String returns the string representation.
3517//
3518// API parameter values that are decorated as "sensitive" in the API will not
3519// be included in the string output. The member name will be present, but the
3520// value will be replaced with "sensitive".
3521func (s ListGroupsInput) String() string {
3522	return awsutil.Prettify(s)
3523}
3524
3525// GoString returns the string representation.
3526//
3527// API parameter values that are decorated as "sensitive" in the API will not
3528// be included in the string output. The member name will be present, but the
3529// value will be replaced with "sensitive".
3530func (s ListGroupsInput) GoString() string {
3531	return s.String()
3532}
3533
3534// Validate inspects the fields of the type to determine if they are valid.
3535func (s *ListGroupsInput) Validate() error {
3536	invalidParams := request.ErrInvalidParams{Context: "ListGroupsInput"}
3537	if s.MaxResults != nil && *s.MaxResults < 1 {
3538		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
3539	}
3540	if s.Filters != nil {
3541		for i, v := range s.Filters {
3542			if v == nil {
3543				continue
3544			}
3545			if err := v.Validate(); err != nil {
3546				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
3547			}
3548		}
3549	}
3550
3551	if invalidParams.Len() > 0 {
3552		return invalidParams
3553	}
3554	return nil
3555}
3556
3557// SetFilters sets the Filters field's value.
3558func (s *ListGroupsInput) SetFilters(v []*GroupFilter) *ListGroupsInput {
3559	s.Filters = v
3560	return s
3561}
3562
3563// SetMaxResults sets the MaxResults field's value.
3564func (s *ListGroupsInput) SetMaxResults(v int64) *ListGroupsInput {
3565	s.MaxResults = &v
3566	return s
3567}
3568
3569// SetNextToken sets the NextToken field's value.
3570func (s *ListGroupsInput) SetNextToken(v string) *ListGroupsInput {
3571	s.NextToken = &v
3572	return s
3573}
3574
3575type ListGroupsOutput struct {
3576	_ struct{} `type:"structure"`
3577
3578	// A list of GroupIdentifier objects. Each identifier is an object that contains
3579	// both the Name and the GroupArn.
3580	GroupIdentifiers []*GroupIdentifier `type:"list"`
3581
3582	//
3583	//  Deprecated - don't use this field. Use the GroupIdentifiers response field
3584	//  instead.
3585	//
3586	// Deprecated: This field is deprecated, use GroupIdentifiers instead.
3587	Groups []*Group `deprecated:"true" type:"list"`
3588
3589	// If present, indicates that more output is available than is included in the
3590	// current response. Use this value in the NextToken request parameter in a
3591	// subsequent call to the operation to get the next part of the output. You
3592	// should repeat this until the NextToken response element comes back as null.
3593	NextToken *string `type:"string"`
3594}
3595
3596// String returns the string representation.
3597//
3598// API parameter values that are decorated as "sensitive" in the API will not
3599// be included in the string output. The member name will be present, but the
3600// value will be replaced with "sensitive".
3601func (s ListGroupsOutput) String() string {
3602	return awsutil.Prettify(s)
3603}
3604
3605// GoString returns the string representation.
3606//
3607// API parameter values that are decorated as "sensitive" in the API will not
3608// be included in the string output. The member name will be present, but the
3609// value will be replaced with "sensitive".
3610func (s ListGroupsOutput) GoString() string {
3611	return s.String()
3612}
3613
3614// SetGroupIdentifiers sets the GroupIdentifiers field's value.
3615func (s *ListGroupsOutput) SetGroupIdentifiers(v []*GroupIdentifier) *ListGroupsOutput {
3616	s.GroupIdentifiers = v
3617	return s
3618}
3619
3620// SetGroups sets the Groups field's value.
3621func (s *ListGroupsOutput) SetGroups(v []*Group) *ListGroupsOutput {
3622	s.Groups = v
3623	return s
3624}
3625
3626// SetNextToken sets the NextToken field's value.
3627func (s *ListGroupsOutput) SetNextToken(v string) *ListGroupsOutput {
3628	s.NextToken = &v
3629	return s
3630}
3631
3632// The request uses an HTTP method that isn't allowed for the specified resource.
3633type MethodNotAllowedException struct {
3634	_            struct{}                  `type:"structure"`
3635	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
3636
3637	Message_ *string `locationName:"Message" min:"1" type:"string"`
3638}
3639
3640// String returns the string representation.
3641//
3642// API parameter values that are decorated as "sensitive" in the API will not
3643// be included in the string output. The member name will be present, but the
3644// value will be replaced with "sensitive".
3645func (s MethodNotAllowedException) String() string {
3646	return awsutil.Prettify(s)
3647}
3648
3649// GoString returns the string representation.
3650//
3651// API parameter values that are decorated as "sensitive" in the API will not
3652// be included in the string output. The member name will be present, but the
3653// value will be replaced with "sensitive".
3654func (s MethodNotAllowedException) GoString() string {
3655	return s.String()
3656}
3657
3658func newErrorMethodNotAllowedException(v protocol.ResponseMetadata) error {
3659	return &MethodNotAllowedException{
3660		RespMetadata: v,
3661	}
3662}
3663
3664// Code returns the exception type name.
3665func (s *MethodNotAllowedException) Code() string {
3666	return "MethodNotAllowedException"
3667}
3668
3669// Message returns the exception's message.
3670func (s *MethodNotAllowedException) Message() string {
3671	if s.Message_ != nil {
3672		return *s.Message_
3673	}
3674	return ""
3675}
3676
3677// OrigErr always returns nil, satisfies awserr.Error interface.
3678func (s *MethodNotAllowedException) OrigErr() error {
3679	return nil
3680}
3681
3682func (s *MethodNotAllowedException) Error() string {
3683	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
3684}
3685
3686// Status code returns the HTTP status code for the request's response error.
3687func (s *MethodNotAllowedException) StatusCode() int {
3688	return s.RespMetadata.StatusCode
3689}
3690
3691// RequestID returns the service's response RequestID for request.
3692func (s *MethodNotAllowedException) RequestID() string {
3693	return s.RespMetadata.RequestID
3694}
3695
3696// One or more of the specified resources don't exist.
3697type NotFoundException struct {
3698	_            struct{}                  `type:"structure"`
3699	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
3700
3701	Message_ *string `locationName:"Message" min:"1" type:"string"`
3702}
3703
3704// String returns the string representation.
3705//
3706// API parameter values that are decorated as "sensitive" in the API will not
3707// be included in the string output. The member name will be present, but the
3708// value will be replaced with "sensitive".
3709func (s NotFoundException) String() string {
3710	return awsutil.Prettify(s)
3711}
3712
3713// GoString returns the string representation.
3714//
3715// API parameter values that are decorated as "sensitive" in the API will not
3716// be included in the string output. The member name will be present, but the
3717// value will be replaced with "sensitive".
3718func (s NotFoundException) GoString() string {
3719	return s.String()
3720}
3721
3722func newErrorNotFoundException(v protocol.ResponseMetadata) error {
3723	return &NotFoundException{
3724		RespMetadata: v,
3725	}
3726}
3727
3728// Code returns the exception type name.
3729func (s *NotFoundException) Code() string {
3730	return "NotFoundException"
3731}
3732
3733// Message returns the exception's message.
3734func (s *NotFoundException) Message() string {
3735	if s.Message_ != nil {
3736		return *s.Message_
3737	}
3738	return ""
3739}
3740
3741// OrigErr always returns nil, satisfies awserr.Error interface.
3742func (s *NotFoundException) OrigErr() error {
3743	return nil
3744}
3745
3746func (s *NotFoundException) Error() string {
3747	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
3748}
3749
3750// Status code returns the HTTP status code for the request's response error.
3751func (s *NotFoundException) StatusCode() int {
3752	return s.RespMetadata.StatusCode
3753}
3754
3755// RequestID returns the service's response RequestID for request.
3756func (s *NotFoundException) RequestID() string {
3757	return s.RespMetadata.RequestID
3758}
3759
3760// A structure that identifies a resource that is currently pending addition
3761// to the group as a member. Adding a resource to a resource group happens asynchronously
3762// as a background task and this one isn't completed yet.
3763type PendingResource struct {
3764	_ struct{} `type:"structure"`
3765
3766	// The Amazon resource name (ARN) of the resource that's in a pending state.
3767	ResourceArn *string `type:"string"`
3768}
3769
3770// String returns the string representation.
3771//
3772// API parameter values that are decorated as "sensitive" in the API will not
3773// be included in the string output. The member name will be present, but the
3774// value will be replaced with "sensitive".
3775func (s PendingResource) String() string {
3776	return awsutil.Prettify(s)
3777}
3778
3779// GoString returns the string representation.
3780//
3781// API parameter values that are decorated as "sensitive" in the API will not
3782// be included in the string output. The member name will be present, but the
3783// value will be replaced with "sensitive".
3784func (s PendingResource) GoString() string {
3785	return s.String()
3786}
3787
3788// SetResourceArn sets the ResourceArn field's value.
3789func (s *PendingResource) SetResourceArn(v string) *PendingResource {
3790	s.ResourceArn = &v
3791	return s
3792}
3793
3794type PutGroupConfigurationInput struct {
3795	_ struct{} `type:"structure"`
3796
3797	// The new configuration to associate with the specified group. A configuration
3798	// associates the resource group with an AWS service and specifies how the service
3799	// can interact with the resources in the group. A configuration is an array
3800	// of GroupConfigurationItem elements.
3801	//
3802	// For information about the syntax of a service configuration, see Service
3803	// configurations for resource groups (https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html).
3804	//
3805	// A resource group can contain either a Configuration or a ResourceQuery, but
3806	// not both.
3807	Configuration []*GroupConfigurationItem `type:"list"`
3808
3809	// The name or ARN of the resource group with the configuration that you want
3810	// to update.
3811	Group *string `min:"1" type:"string"`
3812}
3813
3814// String returns the string representation.
3815//
3816// API parameter values that are decorated as "sensitive" in the API will not
3817// be included in the string output. The member name will be present, but the
3818// value will be replaced with "sensitive".
3819func (s PutGroupConfigurationInput) String() string {
3820	return awsutil.Prettify(s)
3821}
3822
3823// GoString returns the string representation.
3824//
3825// API parameter values that are decorated as "sensitive" in the API will not
3826// be included in the string output. The member name will be present, but the
3827// value will be replaced with "sensitive".
3828func (s PutGroupConfigurationInput) GoString() string {
3829	return s.String()
3830}
3831
3832// Validate inspects the fields of the type to determine if they are valid.
3833func (s *PutGroupConfigurationInput) Validate() error {
3834	invalidParams := request.ErrInvalidParams{Context: "PutGroupConfigurationInput"}
3835	if s.Group != nil && len(*s.Group) < 1 {
3836		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
3837	}
3838	if s.Configuration != nil {
3839		for i, v := range s.Configuration {
3840			if v == nil {
3841				continue
3842			}
3843			if err := v.Validate(); err != nil {
3844				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Configuration", i), err.(request.ErrInvalidParams))
3845			}
3846		}
3847	}
3848
3849	if invalidParams.Len() > 0 {
3850		return invalidParams
3851	}
3852	return nil
3853}
3854
3855// SetConfiguration sets the Configuration field's value.
3856func (s *PutGroupConfigurationInput) SetConfiguration(v []*GroupConfigurationItem) *PutGroupConfigurationInput {
3857	s.Configuration = v
3858	return s
3859}
3860
3861// SetGroup sets the Group field's value.
3862func (s *PutGroupConfigurationInput) SetGroup(v string) *PutGroupConfigurationInput {
3863	s.Group = &v
3864	return s
3865}
3866
3867type PutGroupConfigurationOutput struct {
3868	_ struct{} `type:"structure"`
3869}
3870
3871// String returns the string representation.
3872//
3873// API parameter values that are decorated as "sensitive" in the API will not
3874// be included in the string output. The member name will be present, but the
3875// value will be replaced with "sensitive".
3876func (s PutGroupConfigurationOutput) String() string {
3877	return awsutil.Prettify(s)
3878}
3879
3880// GoString returns the string representation.
3881//
3882// API parameter values that are decorated as "sensitive" in the API will not
3883// be included in the string output. The member name will be present, but the
3884// value will be replaced with "sensitive".
3885func (s PutGroupConfigurationOutput) GoString() string {
3886	return s.String()
3887}
3888
3889// A two-part error structure that can occur in ListGroupResources or SearchResources
3890// operations on CloudFormation stack-based queries. The error occurs if the
3891// CloudFormation stack on which the query is based either does not exist, or
3892// has a status that renders the stack inactive. A QueryError occurrence does
3893// not necessarily mean that AWS Resource Groups could not complete the operation,
3894// but the resulting group might have no member resources.
3895type QueryError struct {
3896	_ struct{} `type:"structure"`
3897
3898	// Possible values are CLOUDFORMATION_STACK_INACTIVE and CLOUDFORMATION_STACK_NOT_EXISTING.
3899	ErrorCode *string `type:"string" enum:"QueryErrorCode"`
3900
3901	// A message that explains the ErrorCode value. Messages might state that the
3902	// specified CloudFormation stack does not exist (or no longer exists). For
3903	// CLOUDFORMATION_STACK_INACTIVE, the message typically states that the CloudFormation
3904	// stack has a status that is not (or no longer) active, such as CREATE_FAILED.
3905	Message *string `type:"string"`
3906}
3907
3908// String returns the string representation.
3909//
3910// API parameter values that are decorated as "sensitive" in the API will not
3911// be included in the string output. The member name will be present, but the
3912// value will be replaced with "sensitive".
3913func (s QueryError) String() string {
3914	return awsutil.Prettify(s)
3915}
3916
3917// GoString returns the string representation.
3918//
3919// API parameter values that are decorated as "sensitive" in the API will not
3920// be included in the string output. The member name will be present, but the
3921// value will be replaced with "sensitive".
3922func (s QueryError) GoString() string {
3923	return s.String()
3924}
3925
3926// SetErrorCode sets the ErrorCode field's value.
3927func (s *QueryError) SetErrorCode(v string) *QueryError {
3928	s.ErrorCode = &v
3929	return s
3930}
3931
3932// SetMessage sets the Message field's value.
3933func (s *QueryError) SetMessage(v string) *QueryError {
3934	s.Message = &v
3935	return s
3936}
3937
3938// A filter name and value pair that is used to obtain more specific results
3939// from a list of resources.
3940type ResourceFilter struct {
3941	_ struct{} `type:"structure"`
3942
3943	// The name of the filter. Filter names are case-sensitive.
3944	//
3945	// Name is a required field
3946	Name *string `type:"string" required:"true" enum:"ResourceFilterName"`
3947
3948	// One or more filter values. Allowed filter values vary by resource filter
3949	// name, and are case-sensitive.
3950	//
3951	// Values is a required field
3952	Values []*string `min:"1" type:"list" required:"true"`
3953}
3954
3955// String returns the string representation.
3956//
3957// API parameter values that are decorated as "sensitive" in the API will not
3958// be included in the string output. The member name will be present, but the
3959// value will be replaced with "sensitive".
3960func (s ResourceFilter) String() string {
3961	return awsutil.Prettify(s)
3962}
3963
3964// GoString returns the string representation.
3965//
3966// API parameter values that are decorated as "sensitive" in the API will not
3967// be included in the string output. The member name will be present, but the
3968// value will be replaced with "sensitive".
3969func (s ResourceFilter) GoString() string {
3970	return s.String()
3971}
3972
3973// Validate inspects the fields of the type to determine if they are valid.
3974func (s *ResourceFilter) Validate() error {
3975	invalidParams := request.ErrInvalidParams{Context: "ResourceFilter"}
3976	if s.Name == nil {
3977		invalidParams.Add(request.NewErrParamRequired("Name"))
3978	}
3979	if s.Values == nil {
3980		invalidParams.Add(request.NewErrParamRequired("Values"))
3981	}
3982	if s.Values != nil && len(s.Values) < 1 {
3983		invalidParams.Add(request.NewErrParamMinLen("Values", 1))
3984	}
3985
3986	if invalidParams.Len() > 0 {
3987		return invalidParams
3988	}
3989	return nil
3990}
3991
3992// SetName sets the Name field's value.
3993func (s *ResourceFilter) SetName(v string) *ResourceFilter {
3994	s.Name = &v
3995	return s
3996}
3997
3998// SetValues sets the Values field's value.
3999func (s *ResourceFilter) SetValues(v []*string) *ResourceFilter {
4000	s.Values = v
4001	return s
4002}
4003
4004// A structure that contains the ARN of a resource and its resource type.
4005type ResourceIdentifier struct {
4006	_ struct{} `type:"structure"`
4007
4008	// The ARN of a resource.
4009	ResourceArn *string `type:"string"`
4010
4011	// The resource type of a resource, such as AWS::EC2::Instance.
4012	ResourceType *string `type:"string"`
4013}
4014
4015// String returns the string representation.
4016//
4017// API parameter values that are decorated as "sensitive" in the API will not
4018// be included in the string output. The member name will be present, but the
4019// value will be replaced with "sensitive".
4020func (s ResourceIdentifier) String() string {
4021	return awsutil.Prettify(s)
4022}
4023
4024// GoString returns the string representation.
4025//
4026// API parameter values that are decorated as "sensitive" in the API will not
4027// be included in the string output. The member name will be present, but the
4028// value will be replaced with "sensitive".
4029func (s ResourceIdentifier) GoString() string {
4030	return s.String()
4031}
4032
4033// SetResourceArn sets the ResourceArn field's value.
4034func (s *ResourceIdentifier) SetResourceArn(v string) *ResourceIdentifier {
4035	s.ResourceArn = &v
4036	return s
4037}
4038
4039// SetResourceType sets the ResourceType field's value.
4040func (s *ResourceIdentifier) SetResourceType(v string) *ResourceIdentifier {
4041	s.ResourceType = &v
4042	return s
4043}
4044
4045// The query that is used to define a resource group or a search for resources.
4046// A query specifies both a query type and a query string as a JSON object.
4047// See the examples section for example JSON strings.
4048//
4049// The examples that follow are shown as standard JSON strings. If you include
4050// such a string as a parameter to the AWS CLI or an SDK API, you might need
4051// to 'escape' the string into a single line. For example, see the Quoting strings
4052// (https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-quoting-strings.html)
4053// in the AWS CLI User Guide.
4054//
4055// Example 1
4056//
4057// The following generic example shows a resource query JSON string that includes
4058// only resources that meet the following criteria:
4059//
4060//    * The resource type must be either resource_type1 or resource_type2.
4061//
4062//    * The resource must have a tag Key1 with a value of either ValueA or ValueB.
4063//
4064//    * The resource must have a tag Key2 with a value of either ValueC or ValueD.
4065//
4066// { "Type": "TAG_FILTERS_1_0", "Query": { "ResourceTypeFilters": [ "resource_type1",
4067// "resource_type2"], "TagFilters": [ { "Key": "Key1", "Values": ["ValueA","ValueB"]
4068// }, { "Key":"Key2", "Values":["ValueC","ValueD"] } ] } }
4069//
4070// This has the equivalent "shortcut" syntax of the following:
4071//
4072// { "Type": "TAG_FILTERS_1_0", "Query": { "ResourceTypeFilters": [ "resource_type1",
4073// "resource_type2"], "TagFilters": [ { "Key1": ["ValueA","ValueB"] }, { "Key2":
4074// ["ValueC","ValueD"] } ] } }
4075//
4076// Example 2
4077//
4078// The following example shows a resource query JSON string that includes only
4079// Amazon EC2 instances that are tagged Stage with a value of Test.
4080//
4081// { "Type": "TAG_FILTERS_1_0", "Query": "{ "ResourceTypeFilters": "AWS::EC2::Instance",
4082// "TagFilters": { "Stage": "Test" } } }
4083//
4084// Example 3
4085//
4086// The following example shows a resource query JSON string that includes resource
4087// of any supported type as long as it is tagged Stage with a value of Prod.
4088//
4089// { "Type": "TAG_FILTERS_1_0", "Query": { "ResourceTypeFilters": "AWS::AllSupported",
4090// "TagFilters": { "Stage": "Prod" } } }
4091//
4092// Example 4
4093//
4094// The following example shows a resource query JSON string that includes only
4095// Amazon EC2 instances and Amazon S3 buckets that are part of the specified
4096// AWS CloudFormation stack.
4097//
4098// { "Type": "CLOUDFORMATION_STACK_1_0", "Query": { "ResourceTypeFilters": [
4099// "AWS::EC2::Instance", "AWS::S3::Bucket" ], "StackIdentifier": "arn:aws:cloudformation:us-west-2:123456789012:stack/AWStestuseraccount/fb0d5000-aba8-00e8-aa9e-50d5cEXAMPLE"
4100// } }
4101type ResourceQuery struct {
4102	_ struct{} `type:"structure"`
4103
4104	// The query that defines a group or a search.
4105	//
4106	// Query is a required field
4107	Query *string `type:"string" required:"true"`
4108
4109	// The type of the query. You can use the following values:
4110	//
4111	//    * CLOUDFORMATION_STACK_1_0: Specifies that the Query contains an ARN for
4112	//    a CloudFormation stack.
4113	//
4114	//    * TAG_FILTERS_1_0: Specifies that the Query parameter contains a JSON
4115	//    string that represents a collection of simple tag filters for resource
4116	//    types and tags. The JSON string uses a syntax similar to the GetResources
4117	//    (https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html)
4118	//    operation, but uses only the ResourceTypeFilters (https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html#resourcegrouptagging-GetResources-request-ResourceTypeFilters)
4119	//    and TagFilters (https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html#resourcegrouptagging-GetResources-request-TagFiltersTagFilters)
4120	//    fields. If you specify more than one tag key, only resources that match
4121	//    all tag keys, and at least one value of each specified tag key, are returned
4122	//    in your query. If you specify more than one value for a tag key, a resource
4123	//    matches the filter if it has a tag key value that matches any of the specified
4124	//    values. For example, consider the following sample query for resources
4125	//    that have two tags, Stage and Version, with two values each: [{"Stage":["Test","Deploy"]},{"Version":["1","2"]}]
4126	//    The results of this query could include the following. An EC2 instance
4127	//    that has the following two tags: {"Stage":"Deploy"}, and {"Version":"2"}
4128	//    An S3 bucket that has the following two tags: {"Stage":"Test"}, and {"Version":"1"}
4129	//    The query would not include the following items in the results, however.
4130	//    An EC2 instance that has only the following tag: {"Stage":"Deploy"}. The
4131	//    instance does not have all of the tag keys specified in the filter, so
4132	//    it is excluded from the results. An RDS database that has the following
4133	//    two tags: {"Stage":"Archived"} and {"Version":"4"} The database has all
4134	//    of the tag keys, but none of those keys has an associated value that matches
4135	//    at least one of the specified values in the filter.
4136	//
4137	// Type is a required field
4138	Type *string `min:"1" type:"string" required:"true" enum:"QueryType"`
4139}
4140
4141// String returns the string representation.
4142//
4143// API parameter values that are decorated as "sensitive" in the API will not
4144// be included in the string output. The member name will be present, but the
4145// value will be replaced with "sensitive".
4146func (s ResourceQuery) String() string {
4147	return awsutil.Prettify(s)
4148}
4149
4150// GoString returns the string representation.
4151//
4152// API parameter values that are decorated as "sensitive" in the API will not
4153// be included in the string output. The member name will be present, but the
4154// value will be replaced with "sensitive".
4155func (s ResourceQuery) GoString() string {
4156	return s.String()
4157}
4158
4159// Validate inspects the fields of the type to determine if they are valid.
4160func (s *ResourceQuery) Validate() error {
4161	invalidParams := request.ErrInvalidParams{Context: "ResourceQuery"}
4162	if s.Query == nil {
4163		invalidParams.Add(request.NewErrParamRequired("Query"))
4164	}
4165	if s.Type == nil {
4166		invalidParams.Add(request.NewErrParamRequired("Type"))
4167	}
4168	if s.Type != nil && len(*s.Type) < 1 {
4169		invalidParams.Add(request.NewErrParamMinLen("Type", 1))
4170	}
4171
4172	if invalidParams.Len() > 0 {
4173		return invalidParams
4174	}
4175	return nil
4176}
4177
4178// SetQuery sets the Query field's value.
4179func (s *ResourceQuery) SetQuery(v string) *ResourceQuery {
4180	s.Query = &v
4181	return s
4182}
4183
4184// SetType sets the Type field's value.
4185func (s *ResourceQuery) SetType(v string) *ResourceQuery {
4186	s.Type = &v
4187	return s
4188}
4189
4190// A structure that identifies the current group membership status for a resource.
4191// Adding a resource to a resource group is performed asynchronously as a background
4192// task. A PENDING status indicates, for this resource, that the process isn't
4193// completed yet.
4194type ResourceStatus struct {
4195	_ struct{} `type:"structure"`
4196
4197	// The current status.
4198	Name *string `type:"string" enum:"ResourceStatusValue"`
4199}
4200
4201// String returns the string representation.
4202//
4203// API parameter values that are decorated as "sensitive" in the API will not
4204// be included in the string output. The member name will be present, but the
4205// value will be replaced with "sensitive".
4206func (s ResourceStatus) String() string {
4207	return awsutil.Prettify(s)
4208}
4209
4210// GoString returns the string representation.
4211//
4212// API parameter values that are decorated as "sensitive" in the API will not
4213// be included in the string output. The member name will be present, but the
4214// value will be replaced with "sensitive".
4215func (s ResourceStatus) GoString() string {
4216	return s.String()
4217}
4218
4219// SetName sets the Name field's value.
4220func (s *ResourceStatus) SetName(v string) *ResourceStatus {
4221	s.Name = &v
4222	return s
4223}
4224
4225type SearchResourcesInput struct {
4226	_ struct{} `type:"structure"`
4227
4228	// The total number of results that you want included on each page of the response.
4229	// If you do not include this parameter, it defaults to a value that is specific
4230	// to the operation. If additional items exist beyond the maximum you specify,
4231	// the NextToken response element is present and has a value (is not null).
4232	// Include that value as the NextToken request parameter in the next call to
4233	// the operation to get the next part of the results. Note that the service
4234	// might return fewer results than the maximum even when there are more results
4235	// available. You should check NextToken after every operation to ensure that
4236	// you receive all of the results.
4237	MaxResults *int64 `min:"1" type:"integer"`
4238
4239	// The parameter for receiving additional results if you receive a NextToken
4240	// response in a previous request. A NextToken response indicates that more
4241	// output is available. Set this parameter to the value provided by a previous
4242	// call's NextToken response to indicate where the output should continue from.
4243	NextToken *string `type:"string"`
4244
4245	// The search query, using the same formats that are supported for resource
4246	// group definition. For more information, see CreateGroup.
4247	//
4248	// ResourceQuery is a required field
4249	ResourceQuery *ResourceQuery `type:"structure" required:"true"`
4250}
4251
4252// String returns the string representation.
4253//
4254// API parameter values that are decorated as "sensitive" in the API will not
4255// be included in the string output. The member name will be present, but the
4256// value will be replaced with "sensitive".
4257func (s SearchResourcesInput) String() string {
4258	return awsutil.Prettify(s)
4259}
4260
4261// GoString returns the string representation.
4262//
4263// API parameter values that are decorated as "sensitive" in the API will not
4264// be included in the string output. The member name will be present, but the
4265// value will be replaced with "sensitive".
4266func (s SearchResourcesInput) GoString() string {
4267	return s.String()
4268}
4269
4270// Validate inspects the fields of the type to determine if they are valid.
4271func (s *SearchResourcesInput) Validate() error {
4272	invalidParams := request.ErrInvalidParams{Context: "SearchResourcesInput"}
4273	if s.MaxResults != nil && *s.MaxResults < 1 {
4274		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
4275	}
4276	if s.ResourceQuery == nil {
4277		invalidParams.Add(request.NewErrParamRequired("ResourceQuery"))
4278	}
4279	if s.ResourceQuery != nil {
4280		if err := s.ResourceQuery.Validate(); err != nil {
4281			invalidParams.AddNested("ResourceQuery", err.(request.ErrInvalidParams))
4282		}
4283	}
4284
4285	if invalidParams.Len() > 0 {
4286		return invalidParams
4287	}
4288	return nil
4289}
4290
4291// SetMaxResults sets the MaxResults field's value.
4292func (s *SearchResourcesInput) SetMaxResults(v int64) *SearchResourcesInput {
4293	s.MaxResults = &v
4294	return s
4295}
4296
4297// SetNextToken sets the NextToken field's value.
4298func (s *SearchResourcesInput) SetNextToken(v string) *SearchResourcesInput {
4299	s.NextToken = &v
4300	return s
4301}
4302
4303// SetResourceQuery sets the ResourceQuery field's value.
4304func (s *SearchResourcesInput) SetResourceQuery(v *ResourceQuery) *SearchResourcesInput {
4305	s.ResourceQuery = v
4306	return s
4307}
4308
4309type SearchResourcesOutput struct {
4310	_ struct{} `type:"structure"`
4311
4312	// If present, indicates that more output is available than is included in the
4313	// current response. Use this value in the NextToken request parameter in a
4314	// subsequent call to the operation to get the next part of the output. You
4315	// should repeat this until the NextToken response element comes back as null.
4316	NextToken *string `type:"string"`
4317
4318	// A list of QueryError objects. Each error is an object that contains ErrorCode
4319	// and Message structures. Possible values for ErrorCode are CLOUDFORMATION_STACK_INACTIVE
4320	// and CLOUDFORMATION_STACK_NOT_EXISTING.
4321	QueryErrors []*QueryError `type:"list"`
4322
4323	// The ARNs and resource types of resources that are members of the group that
4324	// you specified.
4325	ResourceIdentifiers []*ResourceIdentifier `type:"list"`
4326}
4327
4328// String returns the string representation.
4329//
4330// API parameter values that are decorated as "sensitive" in the API will not
4331// be included in the string output. The member name will be present, but the
4332// value will be replaced with "sensitive".
4333func (s SearchResourcesOutput) String() string {
4334	return awsutil.Prettify(s)
4335}
4336
4337// GoString returns the string representation.
4338//
4339// API parameter values that are decorated as "sensitive" in the API will not
4340// be included in the string output. The member name will be present, but the
4341// value will be replaced with "sensitive".
4342func (s SearchResourcesOutput) GoString() string {
4343	return s.String()
4344}
4345
4346// SetNextToken sets the NextToken field's value.
4347func (s *SearchResourcesOutput) SetNextToken(v string) *SearchResourcesOutput {
4348	s.NextToken = &v
4349	return s
4350}
4351
4352// SetQueryErrors sets the QueryErrors field's value.
4353func (s *SearchResourcesOutput) SetQueryErrors(v []*QueryError) *SearchResourcesOutput {
4354	s.QueryErrors = v
4355	return s
4356}
4357
4358// SetResourceIdentifiers sets the ResourceIdentifiers field's value.
4359func (s *SearchResourcesOutput) SetResourceIdentifiers(v []*ResourceIdentifier) *SearchResourcesOutput {
4360	s.ResourceIdentifiers = v
4361	return s
4362}
4363
4364type TagInput struct {
4365	_ struct{} `type:"structure"`
4366
4367	// The ARN of the resource group to which to add tags.
4368	//
4369	// Arn is a required field
4370	Arn *string `location:"uri" locationName:"Arn" min:"12" type:"string" required:"true"`
4371
4372	// The tags to add to the specified resource group. A tag is a string-to-string
4373	// map of key-value pairs.
4374	//
4375	// Tags is a required field
4376	Tags map[string]*string `type:"map" required:"true"`
4377}
4378
4379// String returns the string representation.
4380//
4381// API parameter values that are decorated as "sensitive" in the API will not
4382// be included in the string output. The member name will be present, but the
4383// value will be replaced with "sensitive".
4384func (s TagInput) String() string {
4385	return awsutil.Prettify(s)
4386}
4387
4388// GoString returns the string representation.
4389//
4390// API parameter values that are decorated as "sensitive" in the API will not
4391// be included in the string output. The member name will be present, but the
4392// value will be replaced with "sensitive".
4393func (s TagInput) GoString() string {
4394	return s.String()
4395}
4396
4397// Validate inspects the fields of the type to determine if they are valid.
4398func (s *TagInput) Validate() error {
4399	invalidParams := request.ErrInvalidParams{Context: "TagInput"}
4400	if s.Arn == nil {
4401		invalidParams.Add(request.NewErrParamRequired("Arn"))
4402	}
4403	if s.Arn != nil && len(*s.Arn) < 12 {
4404		invalidParams.Add(request.NewErrParamMinLen("Arn", 12))
4405	}
4406	if s.Tags == nil {
4407		invalidParams.Add(request.NewErrParamRequired("Tags"))
4408	}
4409
4410	if invalidParams.Len() > 0 {
4411		return invalidParams
4412	}
4413	return nil
4414}
4415
4416// SetArn sets the Arn field's value.
4417func (s *TagInput) SetArn(v string) *TagInput {
4418	s.Arn = &v
4419	return s
4420}
4421
4422// SetTags sets the Tags field's value.
4423func (s *TagInput) SetTags(v map[string]*string) *TagInput {
4424	s.Tags = v
4425	return s
4426}
4427
4428type TagOutput struct {
4429	_ struct{} `type:"structure"`
4430
4431	// The ARN of the tagged resource.
4432	Arn *string `min:"12" type:"string"`
4433
4434	// The tags that have been added to the specified resource group.
4435	Tags map[string]*string `type:"map"`
4436}
4437
4438// String returns the string representation.
4439//
4440// API parameter values that are decorated as "sensitive" in the API will not
4441// be included in the string output. The member name will be present, but the
4442// value will be replaced with "sensitive".
4443func (s TagOutput) String() string {
4444	return awsutil.Prettify(s)
4445}
4446
4447// GoString returns the string representation.
4448//
4449// API parameter values that are decorated as "sensitive" in the API will not
4450// be included in the string output. The member name will be present, but the
4451// value will be replaced with "sensitive".
4452func (s TagOutput) GoString() string {
4453	return s.String()
4454}
4455
4456// SetArn sets the Arn field's value.
4457func (s *TagOutput) SetArn(v string) *TagOutput {
4458	s.Arn = &v
4459	return s
4460}
4461
4462// SetTags sets the Tags field's value.
4463func (s *TagOutput) SetTags(v map[string]*string) *TagOutput {
4464	s.Tags = v
4465	return s
4466}
4467
4468// You've exceeded throttling limits by making too many requests in a period
4469// of time.
4470type TooManyRequestsException struct {
4471	_            struct{}                  `type:"structure"`
4472	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
4473
4474	Message_ *string `locationName:"Message" min:"1" type:"string"`
4475}
4476
4477// String returns the string representation.
4478//
4479// API parameter values that are decorated as "sensitive" in the API will not
4480// be included in the string output. The member name will be present, but the
4481// value will be replaced with "sensitive".
4482func (s TooManyRequestsException) String() string {
4483	return awsutil.Prettify(s)
4484}
4485
4486// GoString returns the string representation.
4487//
4488// API parameter values that are decorated as "sensitive" in the API will not
4489// be included in the string output. The member name will be present, but the
4490// value will be replaced with "sensitive".
4491func (s TooManyRequestsException) GoString() string {
4492	return s.String()
4493}
4494
4495func newErrorTooManyRequestsException(v protocol.ResponseMetadata) error {
4496	return &TooManyRequestsException{
4497		RespMetadata: v,
4498	}
4499}
4500
4501// Code returns the exception type name.
4502func (s *TooManyRequestsException) Code() string {
4503	return "TooManyRequestsException"
4504}
4505
4506// Message returns the exception's message.
4507func (s *TooManyRequestsException) Message() string {
4508	if s.Message_ != nil {
4509		return *s.Message_
4510	}
4511	return ""
4512}
4513
4514// OrigErr always returns nil, satisfies awserr.Error interface.
4515func (s *TooManyRequestsException) OrigErr() error {
4516	return nil
4517}
4518
4519func (s *TooManyRequestsException) Error() string {
4520	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
4521}
4522
4523// Status code returns the HTTP status code for the request's response error.
4524func (s *TooManyRequestsException) StatusCode() int {
4525	return s.RespMetadata.StatusCode
4526}
4527
4528// RequestID returns the service's response RequestID for request.
4529func (s *TooManyRequestsException) RequestID() string {
4530	return s.RespMetadata.RequestID
4531}
4532
4533// The request was rejected because it doesn't have valid credentials for the
4534// target resource.
4535type UnauthorizedException struct {
4536	_            struct{}                  `type:"structure"`
4537	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
4538
4539	Message_ *string `locationName:"Message" min:"1" type:"string"`
4540}
4541
4542// String returns the string representation.
4543//
4544// API parameter values that are decorated as "sensitive" in the API will not
4545// be included in the string output. The member name will be present, but the
4546// value will be replaced with "sensitive".
4547func (s UnauthorizedException) String() string {
4548	return awsutil.Prettify(s)
4549}
4550
4551// GoString returns the string representation.
4552//
4553// API parameter values that are decorated as "sensitive" in the API will not
4554// be included in the string output. The member name will be present, but the
4555// value will be replaced with "sensitive".
4556func (s UnauthorizedException) GoString() string {
4557	return s.String()
4558}
4559
4560func newErrorUnauthorizedException(v protocol.ResponseMetadata) error {
4561	return &UnauthorizedException{
4562		RespMetadata: v,
4563	}
4564}
4565
4566// Code returns the exception type name.
4567func (s *UnauthorizedException) Code() string {
4568	return "UnauthorizedException"
4569}
4570
4571// Message returns the exception's message.
4572func (s *UnauthorizedException) Message() string {
4573	if s.Message_ != nil {
4574		return *s.Message_
4575	}
4576	return ""
4577}
4578
4579// OrigErr always returns nil, satisfies awserr.Error interface.
4580func (s *UnauthorizedException) OrigErr() error {
4581	return nil
4582}
4583
4584func (s *UnauthorizedException) Error() string {
4585	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
4586}
4587
4588// Status code returns the HTTP status code for the request's response error.
4589func (s *UnauthorizedException) StatusCode() int {
4590	return s.RespMetadata.StatusCode
4591}
4592
4593// RequestID returns the service's response RequestID for request.
4594func (s *UnauthorizedException) RequestID() string {
4595	return s.RespMetadata.RequestID
4596}
4597
4598type UngroupResourcesInput struct {
4599	_ struct{} `type:"structure"`
4600
4601	// The name or the ARN of the resource group from which to remove the resources.
4602	//
4603	// Group is a required field
4604	Group *string `min:"1" type:"string" required:"true"`
4605
4606	// The ARNs of the resources to be removed from the group.
4607	//
4608	// ResourceArns is a required field
4609	ResourceArns []*string `min:"1" type:"list" required:"true"`
4610}
4611
4612// String returns the string representation.
4613//
4614// API parameter values that are decorated as "sensitive" in the API will not
4615// be included in the string output. The member name will be present, but the
4616// value will be replaced with "sensitive".
4617func (s UngroupResourcesInput) String() string {
4618	return awsutil.Prettify(s)
4619}
4620
4621// GoString returns the string representation.
4622//
4623// API parameter values that are decorated as "sensitive" in the API will not
4624// be included in the string output. The member name will be present, but the
4625// value will be replaced with "sensitive".
4626func (s UngroupResourcesInput) GoString() string {
4627	return s.String()
4628}
4629
4630// Validate inspects the fields of the type to determine if they are valid.
4631func (s *UngroupResourcesInput) Validate() error {
4632	invalidParams := request.ErrInvalidParams{Context: "UngroupResourcesInput"}
4633	if s.Group == nil {
4634		invalidParams.Add(request.NewErrParamRequired("Group"))
4635	}
4636	if s.Group != nil && len(*s.Group) < 1 {
4637		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
4638	}
4639	if s.ResourceArns == nil {
4640		invalidParams.Add(request.NewErrParamRequired("ResourceArns"))
4641	}
4642	if s.ResourceArns != nil && len(s.ResourceArns) < 1 {
4643		invalidParams.Add(request.NewErrParamMinLen("ResourceArns", 1))
4644	}
4645
4646	if invalidParams.Len() > 0 {
4647		return invalidParams
4648	}
4649	return nil
4650}
4651
4652// SetGroup sets the Group field's value.
4653func (s *UngroupResourcesInput) SetGroup(v string) *UngroupResourcesInput {
4654	s.Group = &v
4655	return s
4656}
4657
4658// SetResourceArns sets the ResourceArns field's value.
4659func (s *UngroupResourcesInput) SetResourceArns(v []*string) *UngroupResourcesInput {
4660	s.ResourceArns = v
4661	return s
4662}
4663
4664type UngroupResourcesOutput struct {
4665	_ struct{} `type:"structure"`
4666
4667	// A list of any resources that failed to be removed from the group by this
4668	// operation.
4669	Failed []*FailedResource `type:"list"`
4670
4671	// A list of any resources that are still in the process of being removed from
4672	// the group by this operation. These pending removals continue asynchronously.
4673	// You can check the status of pending removals by using the ListGroupResources
4674	// operation. After the resource is successfully removed, it no longer appears
4675	// in the response.
4676	Pending []*PendingResource `type:"list"`
4677
4678	// A list of resources that were successfully removed from the group by this
4679	// operation.
4680	Succeeded []*string `min:"1" type:"list"`
4681}
4682
4683// String returns the string representation.
4684//
4685// API parameter values that are decorated as "sensitive" in the API will not
4686// be included in the string output. The member name will be present, but the
4687// value will be replaced with "sensitive".
4688func (s UngroupResourcesOutput) String() string {
4689	return awsutil.Prettify(s)
4690}
4691
4692// GoString returns the string representation.
4693//
4694// API parameter values that are decorated as "sensitive" in the API will not
4695// be included in the string output. The member name will be present, but the
4696// value will be replaced with "sensitive".
4697func (s UngroupResourcesOutput) GoString() string {
4698	return s.String()
4699}
4700
4701// SetFailed sets the Failed field's value.
4702func (s *UngroupResourcesOutput) SetFailed(v []*FailedResource) *UngroupResourcesOutput {
4703	s.Failed = v
4704	return s
4705}
4706
4707// SetPending sets the Pending field's value.
4708func (s *UngroupResourcesOutput) SetPending(v []*PendingResource) *UngroupResourcesOutput {
4709	s.Pending = v
4710	return s
4711}
4712
4713// SetSucceeded sets the Succeeded field's value.
4714func (s *UngroupResourcesOutput) SetSucceeded(v []*string) *UngroupResourcesOutput {
4715	s.Succeeded = v
4716	return s
4717}
4718
4719type UntagInput struct {
4720	_ struct{} `type:"structure"`
4721
4722	// The ARN of the resource group from which to remove tags. The command removed
4723	// both the specified keys and any values associated with those keys.
4724	//
4725	// Arn is a required field
4726	Arn *string `location:"uri" locationName:"Arn" min:"12" type:"string" required:"true"`
4727
4728	// The keys of the tags to be removed.
4729	//
4730	// Keys is a required field
4731	Keys []*string `type:"list" required:"true"`
4732}
4733
4734// String returns the string representation.
4735//
4736// API parameter values that are decorated as "sensitive" in the API will not
4737// be included in the string output. The member name will be present, but the
4738// value will be replaced with "sensitive".
4739func (s UntagInput) String() string {
4740	return awsutil.Prettify(s)
4741}
4742
4743// GoString returns the string representation.
4744//
4745// API parameter values that are decorated as "sensitive" in the API will not
4746// be included in the string output. The member name will be present, but the
4747// value will be replaced with "sensitive".
4748func (s UntagInput) GoString() string {
4749	return s.String()
4750}
4751
4752// Validate inspects the fields of the type to determine if they are valid.
4753func (s *UntagInput) Validate() error {
4754	invalidParams := request.ErrInvalidParams{Context: "UntagInput"}
4755	if s.Arn == nil {
4756		invalidParams.Add(request.NewErrParamRequired("Arn"))
4757	}
4758	if s.Arn != nil && len(*s.Arn) < 12 {
4759		invalidParams.Add(request.NewErrParamMinLen("Arn", 12))
4760	}
4761	if s.Keys == nil {
4762		invalidParams.Add(request.NewErrParamRequired("Keys"))
4763	}
4764
4765	if invalidParams.Len() > 0 {
4766		return invalidParams
4767	}
4768	return nil
4769}
4770
4771// SetArn sets the Arn field's value.
4772func (s *UntagInput) SetArn(v string) *UntagInput {
4773	s.Arn = &v
4774	return s
4775}
4776
4777// SetKeys sets the Keys field's value.
4778func (s *UntagInput) SetKeys(v []*string) *UntagInput {
4779	s.Keys = v
4780	return s
4781}
4782
4783type UntagOutput struct {
4784	_ struct{} `type:"structure"`
4785
4786	// The ARN of the resource group from which tags have been removed.
4787	Arn *string `min:"12" type:"string"`
4788
4789	// The keys of the tags that were removed.
4790	Keys []*string `type:"list"`
4791}
4792
4793// String returns the string representation.
4794//
4795// API parameter values that are decorated as "sensitive" in the API will not
4796// be included in the string output. The member name will be present, but the
4797// value will be replaced with "sensitive".
4798func (s UntagOutput) String() string {
4799	return awsutil.Prettify(s)
4800}
4801
4802// GoString returns the string representation.
4803//
4804// API parameter values that are decorated as "sensitive" in the API will not
4805// be included in the string output. The member name will be present, but the
4806// value will be replaced with "sensitive".
4807func (s UntagOutput) GoString() string {
4808	return s.String()
4809}
4810
4811// SetArn sets the Arn field's value.
4812func (s *UntagOutput) SetArn(v string) *UntagOutput {
4813	s.Arn = &v
4814	return s
4815}
4816
4817// SetKeys sets the Keys field's value.
4818func (s *UntagOutput) SetKeys(v []*string) *UntagOutput {
4819	s.Keys = v
4820	return s
4821}
4822
4823type UpdateGroupInput struct {
4824	_ struct{} `type:"structure"`
4825
4826	// The new description that you want to update the resource group with. Descriptions
4827	// can contain letters, numbers, hyphens, underscores, periods, and spaces.
4828	Description *string `type:"string"`
4829
4830	// The name or the ARN of the resource group to modify.
4831	Group *string `min:"1" type:"string"`
4832
4833	// Don't use this parameter. Use Group instead.
4834	//
4835	// Deprecated: This field is deprecated, use Group instead.
4836	GroupName *string `min:"1" deprecated:"true" type:"string"`
4837}
4838
4839// String returns the string representation.
4840//
4841// API parameter values that are decorated as "sensitive" in the API will not
4842// be included in the string output. The member name will be present, but the
4843// value will be replaced with "sensitive".
4844func (s UpdateGroupInput) String() string {
4845	return awsutil.Prettify(s)
4846}
4847
4848// GoString returns the string representation.
4849//
4850// API parameter values that are decorated as "sensitive" in the API will not
4851// be included in the string output. The member name will be present, but the
4852// value will be replaced with "sensitive".
4853func (s UpdateGroupInput) GoString() string {
4854	return s.String()
4855}
4856
4857// Validate inspects the fields of the type to determine if they are valid.
4858func (s *UpdateGroupInput) Validate() error {
4859	invalidParams := request.ErrInvalidParams{Context: "UpdateGroupInput"}
4860	if s.Group != nil && len(*s.Group) < 1 {
4861		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
4862	}
4863	if s.GroupName != nil && len(*s.GroupName) < 1 {
4864		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
4865	}
4866
4867	if invalidParams.Len() > 0 {
4868		return invalidParams
4869	}
4870	return nil
4871}
4872
4873// SetDescription sets the Description field's value.
4874func (s *UpdateGroupInput) SetDescription(v string) *UpdateGroupInput {
4875	s.Description = &v
4876	return s
4877}
4878
4879// SetGroup sets the Group field's value.
4880func (s *UpdateGroupInput) SetGroup(v string) *UpdateGroupInput {
4881	s.Group = &v
4882	return s
4883}
4884
4885// SetGroupName sets the GroupName field's value.
4886func (s *UpdateGroupInput) SetGroupName(v string) *UpdateGroupInput {
4887	s.GroupName = &v
4888	return s
4889}
4890
4891type UpdateGroupOutput struct {
4892	_ struct{} `type:"structure"`
4893
4894	// The update description of the resource group.
4895	Group *Group `type:"structure"`
4896}
4897
4898// String returns the string representation.
4899//
4900// API parameter values that are decorated as "sensitive" in the API will not
4901// be included in the string output. The member name will be present, but the
4902// value will be replaced with "sensitive".
4903func (s UpdateGroupOutput) String() string {
4904	return awsutil.Prettify(s)
4905}
4906
4907// GoString returns the string representation.
4908//
4909// API parameter values that are decorated as "sensitive" in the API will not
4910// be included in the string output. The member name will be present, but the
4911// value will be replaced with "sensitive".
4912func (s UpdateGroupOutput) GoString() string {
4913	return s.String()
4914}
4915
4916// SetGroup sets the Group field's value.
4917func (s *UpdateGroupOutput) SetGroup(v *Group) *UpdateGroupOutput {
4918	s.Group = v
4919	return s
4920}
4921
4922type UpdateGroupQueryInput struct {
4923	_ struct{} `type:"structure"`
4924
4925	// The name or the ARN of the resource group to query.
4926	Group *string `min:"1" type:"string"`
4927
4928	// Don't use this parameter. Use Group instead.
4929	//
4930	// Deprecated: This field is deprecated, use Group instead.
4931	GroupName *string `min:"1" deprecated:"true" type:"string"`
4932
4933	// The resource query to determine which AWS resources are members of this resource
4934	// group.
4935	//
4936	// A resource group can contain either a Configuration or a ResourceQuery, but
4937	// not both.
4938	//
4939	// ResourceQuery is a required field
4940	ResourceQuery *ResourceQuery `type:"structure" required:"true"`
4941}
4942
4943// String returns the string representation.
4944//
4945// API parameter values that are decorated as "sensitive" in the API will not
4946// be included in the string output. The member name will be present, but the
4947// value will be replaced with "sensitive".
4948func (s UpdateGroupQueryInput) String() string {
4949	return awsutil.Prettify(s)
4950}
4951
4952// GoString returns the string representation.
4953//
4954// API parameter values that are decorated as "sensitive" in the API will not
4955// be included in the string output. The member name will be present, but the
4956// value will be replaced with "sensitive".
4957func (s UpdateGroupQueryInput) GoString() string {
4958	return s.String()
4959}
4960
4961// Validate inspects the fields of the type to determine if they are valid.
4962func (s *UpdateGroupQueryInput) Validate() error {
4963	invalidParams := request.ErrInvalidParams{Context: "UpdateGroupQueryInput"}
4964	if s.Group != nil && len(*s.Group) < 1 {
4965		invalidParams.Add(request.NewErrParamMinLen("Group", 1))
4966	}
4967	if s.GroupName != nil && len(*s.GroupName) < 1 {
4968		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
4969	}
4970	if s.ResourceQuery == nil {
4971		invalidParams.Add(request.NewErrParamRequired("ResourceQuery"))
4972	}
4973	if s.ResourceQuery != nil {
4974		if err := s.ResourceQuery.Validate(); err != nil {
4975			invalidParams.AddNested("ResourceQuery", err.(request.ErrInvalidParams))
4976		}
4977	}
4978
4979	if invalidParams.Len() > 0 {
4980		return invalidParams
4981	}
4982	return nil
4983}
4984
4985// SetGroup sets the Group field's value.
4986func (s *UpdateGroupQueryInput) SetGroup(v string) *UpdateGroupQueryInput {
4987	s.Group = &v
4988	return s
4989}
4990
4991// SetGroupName sets the GroupName field's value.
4992func (s *UpdateGroupQueryInput) SetGroupName(v string) *UpdateGroupQueryInput {
4993	s.GroupName = &v
4994	return s
4995}
4996
4997// SetResourceQuery sets the ResourceQuery field's value.
4998func (s *UpdateGroupQueryInput) SetResourceQuery(v *ResourceQuery) *UpdateGroupQueryInput {
4999	s.ResourceQuery = v
5000	return s
5001}
5002
5003type UpdateGroupQueryOutput struct {
5004	_ struct{} `type:"structure"`
5005
5006	// The updated resource query associated with the resource group after the update.
5007	GroupQuery *GroupQuery `type:"structure"`
5008}
5009
5010// String returns the string representation.
5011//
5012// API parameter values that are decorated as "sensitive" in the API will not
5013// be included in the string output. The member name will be present, but the
5014// value will be replaced with "sensitive".
5015func (s UpdateGroupQueryOutput) String() string {
5016	return awsutil.Prettify(s)
5017}
5018
5019// GoString returns the string representation.
5020//
5021// API parameter values that are decorated as "sensitive" in the API will not
5022// be included in the string output. The member name will be present, but the
5023// value will be replaced with "sensitive".
5024func (s UpdateGroupQueryOutput) GoString() string {
5025	return s.String()
5026}
5027
5028// SetGroupQuery sets the GroupQuery field's value.
5029func (s *UpdateGroupQueryOutput) SetGroupQuery(v *GroupQuery) *UpdateGroupQueryOutput {
5030	s.GroupQuery = v
5031	return s
5032}
5033
5034const (
5035	// GroupConfigurationStatusUpdating is a GroupConfigurationStatus enum value
5036	GroupConfigurationStatusUpdating = "UPDATING"
5037
5038	// GroupConfigurationStatusUpdateComplete is a GroupConfigurationStatus enum value
5039	GroupConfigurationStatusUpdateComplete = "UPDATE_COMPLETE"
5040
5041	// GroupConfigurationStatusUpdateFailed is a GroupConfigurationStatus enum value
5042	GroupConfigurationStatusUpdateFailed = "UPDATE_FAILED"
5043)
5044
5045// GroupConfigurationStatus_Values returns all elements of the GroupConfigurationStatus enum
5046func GroupConfigurationStatus_Values() []string {
5047	return []string{
5048		GroupConfigurationStatusUpdating,
5049		GroupConfigurationStatusUpdateComplete,
5050		GroupConfigurationStatusUpdateFailed,
5051	}
5052}
5053
5054const (
5055	// GroupFilterNameResourceType is a GroupFilterName enum value
5056	GroupFilterNameResourceType = "resource-type"
5057
5058	// GroupFilterNameConfigurationType is a GroupFilterName enum value
5059	GroupFilterNameConfigurationType = "configuration-type"
5060)
5061
5062// GroupFilterName_Values returns all elements of the GroupFilterName enum
5063func GroupFilterName_Values() []string {
5064	return []string{
5065		GroupFilterNameResourceType,
5066		GroupFilterNameConfigurationType,
5067	}
5068}
5069
5070const (
5071	// QueryErrorCodeCloudformationStackInactive is a QueryErrorCode enum value
5072	QueryErrorCodeCloudformationStackInactive = "CLOUDFORMATION_STACK_INACTIVE"
5073
5074	// QueryErrorCodeCloudformationStackNotExisting is a QueryErrorCode enum value
5075	QueryErrorCodeCloudformationStackNotExisting = "CLOUDFORMATION_STACK_NOT_EXISTING"
5076)
5077
5078// QueryErrorCode_Values returns all elements of the QueryErrorCode enum
5079func QueryErrorCode_Values() []string {
5080	return []string{
5081		QueryErrorCodeCloudformationStackInactive,
5082		QueryErrorCodeCloudformationStackNotExisting,
5083	}
5084}
5085
5086const (
5087	// QueryTypeTagFilters10 is a QueryType enum value
5088	QueryTypeTagFilters10 = "TAG_FILTERS_1_0"
5089
5090	// QueryTypeCloudformationStack10 is a QueryType enum value
5091	QueryTypeCloudformationStack10 = "CLOUDFORMATION_STACK_1_0"
5092)
5093
5094// QueryType_Values returns all elements of the QueryType enum
5095func QueryType_Values() []string {
5096	return []string{
5097		QueryTypeTagFilters10,
5098		QueryTypeCloudformationStack10,
5099	}
5100}
5101
5102const (
5103	// ResourceFilterNameResourceType is a ResourceFilterName enum value
5104	ResourceFilterNameResourceType = "resource-type"
5105)
5106
5107// ResourceFilterName_Values returns all elements of the ResourceFilterName enum
5108func ResourceFilterName_Values() []string {
5109	return []string{
5110		ResourceFilterNameResourceType,
5111	}
5112}
5113
5114const (
5115	// ResourceStatusValuePending is a ResourceStatusValue enum value
5116	ResourceStatusValuePending = "PENDING"
5117)
5118
5119// ResourceStatusValue_Values returns all elements of the ResourceStatusValue enum
5120func ResourceStatusValue_Values() []string {
5121	return []string{
5122		ResourceStatusValuePending,
5123	}
5124}
5125