404 Not Found


nginx
beegazpacho.com - GrazzMean
Uname: Linux in-mum-web1557.main-hosting.eu 5.14.0-611.42.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 24 05:30:20 EDT 2026 x86_64
Software: LiteSpeed
PHP version: 8.2.30 [ PHP INFO ] PHP os: Linux
Server Ip: 93.127.173.103
Your Ip: 216.73.216.168
User: u848900432 (848900432) | Group: o51372345 (1051372345)
Safe Mode: OFF
Disable Function:
NONE

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

package appregistry

import (
	"fmt"
	"time"

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

const opAssociateAttributeGroup = "AssociateAttributeGroup"

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

	if input == nil {
		input = &AssociateAttributeGroupInput{}
	}

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

// AssociateAttributeGroup API operation for AWS Service Catalog App Registry.
//
// Associates an attribute group with an application to augment the application's
// metadata with the group's attributes. This feature enables applications to
// be described with user-defined details that are machine-readable, such as
// third-party integrations.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation AssociateAttributeGroup for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
//   - ServiceQuotaExceededException
//     The maximum number of resources per account has been reached.
//
//   - ConflictException
//     There was a conflict when processing the request (for example, a resource
//     with the given name already exists within the account).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/AssociateAttributeGroup
func (c *AppRegistry) AssociateAttributeGroup(input *AssociateAttributeGroupInput) (*AssociateAttributeGroupOutput, error) {
	req, out := c.AssociateAttributeGroupRequest(input)
	return out, req.Send()
}

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

const opAssociateResource = "AssociateResource"

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

	if input == nil {
		input = &AssociateResourceInput{}
	}

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

// AssociateResource API operation for AWS Service Catalog App Registry.
//
// Associates a resource with an application. The resource can be specified
// by its ARN or name. The application can be specified by ARN, ID, or name.
//
// # Minimum permissions
//
// You must have the following permissions to associate a resource using the
// OPTIONS parameter set to APPLY_APPLICATION_TAG.
//
//   - tag:GetResources
//
//   - tag:TagResources
//
// You must also have these additional permissions if you don't use the AWSServiceCatalogAppRegistryFullAccess
// policy. For more information, see AWSServiceCatalogAppRegistryFullAccess
// (https://docs.aws.amazon.com/servicecatalog/latest/arguide/full.html) in
// the AppRegistry Administrator Guide.
//
//   - resource-groups:AssociateResource
//
//   - cloudformation:UpdateStack
//
//   - cloudformation:DescribeStacks
//
// In addition, you must have the tagging permission defined by the Amazon Web
// Services service that creates the resource. For more information, see TagResources
// (https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_TagResources.html)
// in the Resource Groups Tagging API Reference.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation AssociateResource for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
//   - ServiceQuotaExceededException
//     The maximum number of resources per account has been reached.
//
//   - ConflictException
//     There was a conflict when processing the request (for example, a resource
//     with the given name already exists within the account).
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - ThrottlingException
//     The maximum number of API requests has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/AssociateResource
func (c *AppRegistry) AssociateResource(input *AssociateResourceInput) (*AssociateResourceOutput, error) {
	req, out := c.AssociateResourceRequest(input)
	return out, req.Send()
}

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

const opCreateApplication = "CreateApplication"

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

	if input == nil {
		input = &CreateApplicationInput{}
	}

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

// CreateApplication API operation for AWS Service Catalog App Registry.
//
// Creates a new application that is the top-level node in a hierarchy of related
// cloud resource abstractions.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation CreateApplication for usage and error information.
//
// Returned Error Types:
//
//   - ServiceQuotaExceededException
//     The maximum number of resources per account has been reached.
//
//   - ConflictException
//     There was a conflict when processing the request (for example, a resource
//     with the given name already exists within the account).
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - ThrottlingException
//     The maximum number of API requests has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/CreateApplication
func (c *AppRegistry) CreateApplication(input *CreateApplicationInput) (*CreateApplicationOutput, error) {
	req, out := c.CreateApplicationRequest(input)
	return out, req.Send()
}

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

const opCreateAttributeGroup = "CreateAttributeGroup"

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

	if input == nil {
		input = &CreateAttributeGroupInput{}
	}

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

// CreateAttributeGroup API operation for AWS Service Catalog App Registry.
//
// Creates a new attribute group as a container for user-defined attributes.
// This feature enables users to have full control over their cloud application's
// metadata in a rich machine-readable format to facilitate integration with
// automated workflows and third-party tools.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation CreateAttributeGroup for usage and error information.
//
// Returned Error Types:
//
//   - ServiceQuotaExceededException
//     The maximum number of resources per account has been reached.
//
//   - ConflictException
//     There was a conflict when processing the request (for example, a resource
//     with the given name already exists within the account).
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/CreateAttributeGroup
func (c *AppRegistry) CreateAttributeGroup(input *CreateAttributeGroupInput) (*CreateAttributeGroupOutput, error) {
	req, out := c.CreateAttributeGroupRequest(input)
	return out, req.Send()
}

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

const opDeleteApplication = "DeleteApplication"

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

	if input == nil {
		input = &DeleteApplicationInput{}
	}

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

// DeleteApplication API operation for AWS Service Catalog App Registry.
//
// Deletes an application that is specified either by its application ID, name,
// or ARN. All associated attribute groups and resources must be disassociated
// from it before deleting an application.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation DeleteApplication for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/DeleteApplication
func (c *AppRegistry) DeleteApplication(input *DeleteApplicationInput) (*DeleteApplicationOutput, error) {
	req, out := c.DeleteApplicationRequest(input)
	return out, req.Send()
}

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

const opDeleteAttributeGroup = "DeleteAttributeGroup"

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

	if input == nil {
		input = &DeleteAttributeGroupInput{}
	}

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

// DeleteAttributeGroup API operation for AWS Service Catalog App Registry.
//
// Deletes an attribute group, specified either by its attribute group ID, name,
// or ARN.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation DeleteAttributeGroup for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/DeleteAttributeGroup
func (c *AppRegistry) DeleteAttributeGroup(input *DeleteAttributeGroupInput) (*DeleteAttributeGroupOutput, error) {
	req, out := c.DeleteAttributeGroupRequest(input)
	return out, req.Send()
}

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

const opDisassociateAttributeGroup = "DisassociateAttributeGroup"

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

	if input == nil {
		input = &DisassociateAttributeGroupInput{}
	}

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

// DisassociateAttributeGroup API operation for AWS Service Catalog App Registry.
//
// Disassociates an attribute group from an application to remove the extra
// attributes contained in the attribute group from the application's metadata.
// This operation reverts AssociateAttributeGroup.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation DisassociateAttributeGroup for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/DisassociateAttributeGroup
func (c *AppRegistry) DisassociateAttributeGroup(input *DisassociateAttributeGroupInput) (*DisassociateAttributeGroupOutput, error) {
	req, out := c.DisassociateAttributeGroupRequest(input)
	return out, req.Send()
}

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

const opDisassociateResource = "DisassociateResource"

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

	if input == nil {
		input = &DisassociateResourceInput{}
	}

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

// DisassociateResource API operation for AWS Service Catalog App Registry.
//
// Disassociates a resource from application. Both the resource and the application
// can be specified either by ID or name.
//
// # Minimum permissions
//
// You must have the following permissions to remove a resource that's been
// associated with an application using the APPLY_APPLICATION_TAG option for
// AssociateResource (https://docs.aws.amazon.com/servicecatalog/latest/dg/API_app-registry_AssociateResource.html).
//
//   - tag:GetResources
//
//   - tag:UntagResources
//
// You must also have the following permissions if you don't use the AWSServiceCatalogAppRegistryFullAccess
// policy. For more information, see AWSServiceCatalogAppRegistryFullAccess
// (https://docs.aws.amazon.com/servicecatalog/latest/arguide/full.html) in
// the AppRegistry Administrator Guide.
//
//   - resource-groups:DisassociateResource
//
//   - cloudformation:UpdateStack
//
//   - cloudformation:DescribeStacks
//
// In addition, you must have the tagging permission defined by the Amazon Web
// Services service that creates the resource. For more information, see UntagResources
// (https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_UntTagResources.html)
// in the Resource Groups Tagging API Reference.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation DisassociateResource for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - ThrottlingException
//     The maximum number of API requests has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/DisassociateResource
func (c *AppRegistry) DisassociateResource(input *DisassociateResourceInput) (*DisassociateResourceOutput, error) {
	req, out := c.DisassociateResourceRequest(input)
	return out, req.Send()
}

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

const opGetApplication = "GetApplication"

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

	if input == nil {
		input = &GetApplicationInput{}
	}

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

// GetApplication API operation for AWS Service Catalog App Registry.
//
// Retrieves metadata information about one of your applications. The application
// can be specified by its ARN, ID, or name (which is unique within one account
// in one region at a given point in time). Specify by ARN or ID in automated
// workflows if you want to make sure that the exact same application is returned
// or a ResourceNotFoundException is thrown, avoiding the ABA addressing problem.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation GetApplication for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
//   - ConflictException
//     There was a conflict when processing the request (for example, a resource
//     with the given name already exists within the account).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/GetApplication
func (c *AppRegistry) GetApplication(input *GetApplicationInput) (*GetApplicationOutput, error) {
	req, out := c.GetApplicationRequest(input)
	return out, req.Send()
}

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

const opGetAssociatedResource = "GetAssociatedResource"

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

	if input == nil {
		input = &GetAssociatedResourceInput{}
	}

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

// GetAssociatedResource API operation for AWS Service Catalog App Registry.
//
// Gets the resource associated with the application.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation GetAssociatedResource for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/GetAssociatedResource
func (c *AppRegistry) GetAssociatedResource(input *GetAssociatedResourceInput) (*GetAssociatedResourceOutput, error) {
	req, out := c.GetAssociatedResourceRequest(input)
	return out, req.Send()
}

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

const opGetAttributeGroup = "GetAttributeGroup"

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

	if input == nil {
		input = &GetAttributeGroupInput{}
	}

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

// GetAttributeGroup API operation for AWS Service Catalog App Registry.
//
// Retrieves an attribute group by its ARN, ID, or name. The attribute group
// can be specified by its ARN, ID, or name.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation GetAttributeGroup for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
//   - ConflictException
//     There was a conflict when processing the request (for example, a resource
//     with the given name already exists within the account).
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/GetAttributeGroup
func (c *AppRegistry) GetAttributeGroup(input *GetAttributeGroupInput) (*GetAttributeGroupOutput, error) {
	req, out := c.GetAttributeGroupRequest(input)
	return out, req.Send()
}

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

const opGetConfiguration = "GetConfiguration"

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

	if input == nil {
		input = &GetConfigurationInput{}
	}

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

// GetConfiguration API operation for AWS Service Catalog App Registry.
//
// Retrieves a TagKey configuration from an account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation GetConfiguration for usage and error information.
//
// Returned Error Types:
//   - InternalServerException
//     The service is experiencing internal problems.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/GetConfiguration
func (c *AppRegistry) GetConfiguration(input *GetConfigurationInput) (*GetConfigurationOutput, error) {
	req, out := c.GetConfigurationRequest(input)
	return out, req.Send()
}

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

const opListApplications = "ListApplications"

// ListApplicationsRequest generates a "aws/request.Request" representing the
// client's request for the ListApplications operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListApplications for more information on using the ListApplications
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListApplicationsRequest method.
//	req, resp := client.ListApplicationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/ListApplications
func (c *AppRegistry) ListApplicationsRequest(input *ListApplicationsInput) (req *request.Request, output *ListApplicationsOutput) {
	op := &request.Operation{
		Name:       opListApplications,
		HTTPMethod: "GET",
		HTTPPath:   "/applications",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListApplicationsInput{}
	}

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

// ListApplications API operation for AWS Service Catalog App Registry.
//
// Retrieves a list of all of your applications. Results are paginated.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation ListApplications for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/ListApplications
func (c *AppRegistry) ListApplications(input *ListApplicationsInput) (*ListApplicationsOutput, error) {
	req, out := c.ListApplicationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListAssociatedAttributeGroups = "ListAssociatedAttributeGroups"

// ListAssociatedAttributeGroupsRequest generates a "aws/request.Request" representing the
// client's request for the ListAssociatedAttributeGroups operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListAssociatedAttributeGroups for more information on using the ListAssociatedAttributeGroups
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListAssociatedAttributeGroupsRequest method.
//	req, resp := client.ListAssociatedAttributeGroupsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/ListAssociatedAttributeGroups
func (c *AppRegistry) ListAssociatedAttributeGroupsRequest(input *ListAssociatedAttributeGroupsInput) (req *request.Request, output *ListAssociatedAttributeGroupsOutput) {
	op := &request.Operation{
		Name:       opListAssociatedAttributeGroups,
		HTTPMethod: "GET",
		HTTPPath:   "/applications/{application}/attribute-groups",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListAssociatedAttributeGroupsInput{}
	}

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

// ListAssociatedAttributeGroups API operation for AWS Service Catalog App Registry.
//
// Lists all attribute groups that are associated with specified application.
// Results are paginated.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation ListAssociatedAttributeGroups for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/ListAssociatedAttributeGroups
func (c *AppRegistry) ListAssociatedAttributeGroups(input *ListAssociatedAttributeGroupsInput) (*ListAssociatedAttributeGroupsOutput, error) {
	req, out := c.ListAssociatedAttributeGroupsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListAssociatedResources = "ListAssociatedResources"

// ListAssociatedResourcesRequest generates a "aws/request.Request" representing the
// client's request for the ListAssociatedResources operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListAssociatedResources for more information on using the ListAssociatedResources
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListAssociatedResourcesRequest method.
//	req, resp := client.ListAssociatedResourcesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/ListAssociatedResources
func (c *AppRegistry) ListAssociatedResourcesRequest(input *ListAssociatedResourcesInput) (req *request.Request, output *ListAssociatedResourcesOutput) {
	op := &request.Operation{
		Name:       opListAssociatedResources,
		HTTPMethod: "GET",
		HTTPPath:   "/applications/{application}/resources",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListAssociatedResourcesInput{}
	}

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

// ListAssociatedResources API operation for AWS Service Catalog App Registry.
//
// Lists all of the resources that are associated with the specified application.
// Results are paginated.
//
// If you share an application, and a consumer account associates a tag query
// to the application, all of the users who can access the application can also
// view the tag values in all accounts that are associated with it using this
// API.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation ListAssociatedResources for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/ListAssociatedResources
func (c *AppRegistry) ListAssociatedResources(input *ListAssociatedResourcesInput) (*ListAssociatedResourcesOutput, error) {
	req, out := c.ListAssociatedResourcesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListAttributeGroups = "ListAttributeGroups"

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

	if input == nil {
		input = &ListAttributeGroupsInput{}
	}

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

// ListAttributeGroups API operation for AWS Service Catalog App Registry.
//
// Lists all attribute groups which you have access to. Results are paginated.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation ListAttributeGroups for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/ListAttributeGroups
func (c *AppRegistry) ListAttributeGroups(input *ListAttributeGroupsInput) (*ListAttributeGroupsOutput, error) {
	req, out := c.ListAttributeGroupsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListAttributeGroupsForApplication = "ListAttributeGroupsForApplication"

// ListAttributeGroupsForApplicationRequest generates a "aws/request.Request" representing the
// client's request for the ListAttributeGroupsForApplication operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListAttributeGroupsForApplication for more information on using the ListAttributeGroupsForApplication
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListAttributeGroupsForApplicationRequest method.
//	req, resp := client.ListAttributeGroupsForApplicationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/ListAttributeGroupsForApplication
func (c *AppRegistry) ListAttributeGroupsForApplicationRequest(input *ListAttributeGroupsForApplicationInput) (req *request.Request, output *ListAttributeGroupsForApplicationOutput) {
	op := &request.Operation{
		Name:       opListAttributeGroupsForApplication,
		HTTPMethod: "GET",
		HTTPPath:   "/applications/{application}/attribute-group-details",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListAttributeGroupsForApplicationInput{}
	}

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

// ListAttributeGroupsForApplication API operation for AWS Service Catalog App Registry.
//
// Lists the details of all attribute groups associated with a specific application.
// The results display in pages.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation ListAttributeGroupsForApplication for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/ListAttributeGroupsForApplication
func (c *AppRegistry) ListAttributeGroupsForApplication(input *ListAttributeGroupsForApplicationInput) (*ListAttributeGroupsForApplicationOutput, error) {
	req, out := c.ListAttributeGroupsForApplicationRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListTagsForResource = "ListTagsForResource"

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

	if input == nil {
		input = &ListTagsForResourceInput{}
	}

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

// ListTagsForResource API operation for AWS Service Catalog App Registry.
//
// Lists all of the tags on the resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation ListTagsForResource for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/ListTagsForResource
func (c *AppRegistry) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {
	req, out := c.ListTagsForResourceRequest(input)
	return out, req.Send()
}

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

const opPutConfiguration = "PutConfiguration"

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

	if input == nil {
		input = &PutConfigurationInput{}
	}

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

// PutConfiguration API operation for AWS Service Catalog App Registry.
//
// Associates a TagKey configuration to an account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation PutConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     There was a conflict when processing the request (for example, a resource
//     with the given name already exists within the account).
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/PutConfiguration
func (c *AppRegistry) PutConfiguration(input *PutConfigurationInput) (*PutConfigurationOutput, error) {
	req, out := c.PutConfigurationRequest(input)
	return out, req.Send()
}

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

const opSyncResource = "SyncResource"

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

	if input == nil {
		input = &SyncResourceInput{}
	}

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

// SyncResource API operation for AWS Service Catalog App Registry.
//
// Syncs the resource with current AppRegistry records.
//
// Specifically, the resource’s AppRegistry system tags sync with its associated
// application. We remove the resource's AppRegistry system tags if it does
// not associate with the application. The caller must have permissions to read
// and update the resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation SyncResource for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
//   - ConflictException
//     There was a conflict when processing the request (for example, a resource
//     with the given name already exists within the account).
//
//   - ThrottlingException
//     The maximum number of API requests has been exceeded.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/SyncResource
func (c *AppRegistry) SyncResource(input *SyncResourceInput) (*SyncResourceOutput, error) {
	req, out := c.SyncResourceRequest(input)
	return out, req.Send()
}

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

const opTagResource = "TagResource"

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

	if input == nil {
		input = &TagResourceInput{}
	}

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

// TagResource API operation for AWS Service Catalog App Registry.
//
// Assigns one or more tags (key-value pairs) to the specified resource.
//
// Each tag consists of a key and an optional value. If a tag with the same
// key is already associated with the resource, this action updates its value.
//
// This operation returns an empty response if the call was successful.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation TagResource for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/TagResource
func (c *AppRegistry) TagResource(input *TagResourceInput) (*TagResourceOutput, error) {
	req, out := c.TagResourceRequest(input)
	return out, req.Send()
}

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

const opUntagResource = "UntagResource"

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

	if input == nil {
		input = &UntagResourceInput{}
	}

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

// UntagResource API operation for AWS Service Catalog App Registry.
//
// Removes tags from a resource.
//
// This operation returns an empty response if the call was successful.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation UntagResource for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/UntagResource
func (c *AppRegistry) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) {
	req, out := c.UntagResourceRequest(input)
	return out, req.Send()
}

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

const opUpdateApplication = "UpdateApplication"

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

	if input == nil {
		input = &UpdateApplicationInput{}
	}

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

// UpdateApplication API operation for AWS Service Catalog App Registry.
//
// Updates an existing application with new attributes.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation UpdateApplication for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - ConflictException
//     There was a conflict when processing the request (for example, a resource
//     with the given name already exists within the account).
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
//   - ThrottlingException
//     The maximum number of API requests has been exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/UpdateApplication
func (c *AppRegistry) UpdateApplication(input *UpdateApplicationInput) (*UpdateApplicationOutput, error) {
	req, out := c.UpdateApplicationRequest(input)
	return out, req.Send()
}

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

const opUpdateAttributeGroup = "UpdateAttributeGroup"

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

	if input == nil {
		input = &UpdateAttributeGroupInput{}
	}

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

// UpdateAttributeGroup API operation for AWS Service Catalog App Registry.
//
// Updates an existing attribute group with new details.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Service Catalog App Registry's
// API operation UpdateAttributeGroup for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The specified resource does not exist.
//
//   - ValidationException
//     The request has invalid or missing parameters.
//
//   - ConflictException
//     There was a conflict when processing the request (for example, a resource
//     with the given name already exists within the account).
//
//   - InternalServerException
//     The service is experiencing internal problems.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/AWS242AppRegistry-2020-06-24/UpdateAttributeGroup
func (c *AppRegistry) UpdateAttributeGroup(input *UpdateAttributeGroupInput) (*UpdateAttributeGroupOutput, error) {
	req, out := c.UpdateAttributeGroupRequest(input)
	return out, req.Send()
}

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

// Includes all of the AppRegistry settings.
type AppRegistryConfiguration struct {
	_ struct{} `type:"structure"`

	// Includes the definition of a tagQuery.
	TagQueryConfiguration *TagQueryConfiguration `locationName:"tagQueryConfiguration" type:"structure"`
}

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

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

// SetTagQueryConfiguration sets the TagQueryConfiguration field's value.
func (s *AppRegistryConfiguration) SetTagQueryConfiguration(v *TagQueryConfiguration) *AppRegistryConfiguration {
	s.TagQueryConfiguration = v
	return s
}

// Represents a Amazon Web Services Service Catalog AppRegistry application
// that is the top-level node in a hierarchy of related cloud resource abstractions.
type Application struct {
	_ struct{} `type:"structure"`

	// A key-value pair that identifies an associated resource.
	ApplicationTag map[string]*string `locationName:"applicationTag" type:"map"`

	// The Amazon resource name (ARN) that specifies the application across services.
	Arn *string `locationName:"arn" type:"string"`

	// The ISO-8601 formatted timestamp of the moment when the application was created.
	CreationTime *time.Time `locationName:"creationTime" type:"timestamp" timestampFormat:"iso8601"`

	// The description of the application.
	Description *string `locationName:"description" type:"string"`

	// The identifier of the application.
	Id *string `locationName:"id" min:"26" type:"string"`

	// The ISO-8601 formatted timestamp of the moment when the application was last
	// updated.
	LastUpdateTime *time.Time `locationName:"lastUpdateTime" type:"timestamp" timestampFormat:"iso8601"`

	// The name of the application. The name must be unique in the region in which
	// you are creating the application.
	Name *string `locationName:"name" min:"1" type:"string"`

	// Key-value pairs you can use to associate with the application.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

// SetApplicationTag sets the ApplicationTag field's value.
func (s *Application) SetApplicationTag(v map[string]*string) *Application {
	s.ApplicationTag = v
	return s
}

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

// SetCreationTime sets the CreationTime field's value.
func (s *Application) SetCreationTime(v time.Time) *Application {
	s.CreationTime = &v
	return s
}

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

// SetId sets the Id field's value.
func (s *Application) SetId(v string) *Application {
	s.Id = &v
	return s
}

// SetLastUpdateTime sets the LastUpdateTime field's value.
func (s *Application) SetLastUpdateTime(v time.Time) *Application {
	s.LastUpdateTime = &v
	return s
}

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

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

// Summary of a Amazon Web Services Service Catalog AppRegistry application.
type ApplicationSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon resource name (ARN) that specifies the application across services.
	Arn *string `locationName:"arn" type:"string"`

	// The ISO-8601 formatted timestamp of the moment when the application was created.
	CreationTime *time.Time `locationName:"creationTime" type:"timestamp" timestampFormat:"iso8601"`

	// The description of the application.
	Description *string `locationName:"description" type:"string"`

	// The identifier of the application.
	Id *string `locationName:"id" min:"26" type:"string"`

	// The ISO-8601 formatted timestamp of the moment when the application was last
	// updated.
	LastUpdateTime *time.Time `locationName:"lastUpdateTime" type:"timestamp" timestampFormat:"iso8601"`

	// The name of the application. The name must be unique in the region in which
	// you are creating the application.
	Name *string `locationName:"name" min:"1" type:"string"`
}

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

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

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

// SetCreationTime sets the CreationTime field's value.
func (s *ApplicationSummary) SetCreationTime(v time.Time) *ApplicationSummary {
	s.CreationTime = &v
	return s
}

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

// SetId sets the Id field's value.
func (s *ApplicationSummary) SetId(v string) *ApplicationSummary {
	s.Id = &v
	return s
}

// SetLastUpdateTime sets the LastUpdateTime field's value.
func (s *ApplicationSummary) SetLastUpdateTime(v time.Time) *ApplicationSummary {
	s.LastUpdateTime = &v
	return s
}

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

// The result of the application tag that's applied to a resource.
type ApplicationTagResult struct {
	_ struct{} `type:"structure"`

	// The application tag is in the process of being applied to a resource, was
	// successfully applied to a resource, or failed to apply to a resource.
	ApplicationTagStatus *string `locationName:"applicationTagStatus" type:"string" enum:"ApplicationTagStatus"`

	// The message returned if the call fails.
	ErrorMessage *string `locationName:"errorMessage" type:"string"`

	// A unique pagination token for each page of results. Make the call again with
	// the returned token to retrieve the next page of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The resources associated with an application
	Resources []*ResourcesListItem `locationName:"resources" type:"list"`
}

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

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

// SetApplicationTagStatus sets the ApplicationTagStatus field's value.
func (s *ApplicationTagResult) SetApplicationTagStatus(v string) *ApplicationTagResult {
	s.ApplicationTagStatus = &v
	return s
}

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

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

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

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

	// The name, ID, or ARN of the application.
	//
	// Application is a required field
	Application *string `location:"uri" locationName:"application" min:"1" type:"string" required:"true"`

	// The name, ID, or ARN of the attribute group that holds the attributes to
	// describe the application.
	//
	// AttributeGroup is a required field
	AttributeGroup *string `location:"uri" locationName:"attributeGroup" min:"1" type:"string" required:"true"`
}

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

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

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

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

// SetApplication sets the Application field's value.
func (s *AssociateAttributeGroupInput) SetApplication(v string) *AssociateAttributeGroupInput {
	s.Application = &v
	return s
}

// SetAttributeGroup sets the AttributeGroup field's value.
func (s *AssociateAttributeGroupInput) SetAttributeGroup(v string) *AssociateAttributeGroupInput {
	s.AttributeGroup = &v
	return s
}

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

	// The Amazon resource name (ARN) of the application that was augmented with
	// attributes.
	ApplicationArn *string `locationName:"applicationArn" type:"string"`

	// The Amazon resource name (ARN) of the attribute group that contains the application's
	// new attributes.
	AttributeGroupArn *string `locationName:"attributeGroupArn" type:"string"`
}

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

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

// SetApplicationArn sets the ApplicationArn field's value.
func (s *AssociateAttributeGroupOutput) SetApplicationArn(v string) *AssociateAttributeGroupOutput {
	s.ApplicationArn = &v
	return s
}

// SetAttributeGroupArn sets the AttributeGroupArn field's value.
func (s *AssociateAttributeGroupOutput) SetAttributeGroupArn(v string) *AssociateAttributeGroupOutput {
	s.AttributeGroupArn = &v
	return s
}

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

	// The name, ID, or ARN of the application.
	//
	// Application is a required field
	Application *string `location:"uri" locationName:"application" min:"1" type:"string" required:"true"`

	// Determines whether an application tag is applied or skipped.
	Options []*string `locationName:"options" type:"list" enum:"AssociationOption"`

	// The name or ID of the resource of which the application will be associated.
	//
	// Resource is a required field
	Resource *string `location:"uri" locationName:"resource" min:"1" type:"string" required:"true"`

	// The type of resource of which the application will be associated.
	//
	// ResourceType is a required field
	ResourceType *string `location:"uri" locationName:"resourceType" type:"string" required:"true" enum:"ResourceType"`
}

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

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

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

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

// SetApplication sets the Application field's value.
func (s *AssociateResourceInput) SetApplication(v string) *AssociateResourceInput {
	s.Application = &v
	return s
}

// SetOptions sets the Options field's value.
func (s *AssociateResourceInput) SetOptions(v []*string) *AssociateResourceInput {
	s.Options = v
	return s
}

// SetResource sets the Resource field's value.
func (s *AssociateResourceInput) SetResource(v string) *AssociateResourceInput {
	s.Resource = &v
	return s
}

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

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

	// The Amazon resource name (ARN) of the application that was augmented with
	// attributes.
	ApplicationArn *string `locationName:"applicationArn" type:"string"`

	// Determines whether an application tag is applied or skipped.
	Options []*string `locationName:"options" type:"list" enum:"AssociationOption"`

	// The Amazon resource name (ARN) that specifies the resource.
	ResourceArn *string `locationName:"resourceArn" min:"1" type:"string"`
}

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

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

// SetApplicationArn sets the ApplicationArn field's value.
func (s *AssociateResourceOutput) SetApplicationArn(v string) *AssociateResourceOutput {
	s.ApplicationArn = &v
	return s
}

// SetOptions sets the Options field's value.
func (s *AssociateResourceOutput) SetOptions(v []*string) *AssociateResourceOutput {
	s.Options = v
	return s
}

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

// Represents a Amazon Web Services Service Catalog AppRegistry attribute group
// that is rich metadata which describes an application and its components.
type AttributeGroup struct {
	_ struct{} `type:"structure"`

	// The Amazon resource name (ARN) that specifies the attribute group across
	// services.
	Arn *string `locationName:"arn" type:"string"`

	// The ISO-8601 formatted timestamp of the moment the attribute group was created.
	CreationTime *time.Time `locationName:"creationTime" type:"timestamp" timestampFormat:"iso8601"`

	// The description of the attribute group that the user provides.
	Description *string `locationName:"description" type:"string"`

	// The globally unique attribute group identifier of the attribute group.
	Id *string `locationName:"id" min:"1" type:"string"`

	// The ISO-8601 formatted timestamp of the moment the attribute group was last
	// updated. This time is the same as the creationTime for a newly created attribute
	// group.
	LastUpdateTime *time.Time `locationName:"lastUpdateTime" type:"timestamp" timestampFormat:"iso8601"`

	// The name of the attribute group.
	Name *string `locationName:"name" min:"1" type:"string"`

	// Key-value pairs you can use to associate with the attribute group.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

// SetCreationTime sets the CreationTime field's value.
func (s *AttributeGroup) SetCreationTime(v time.Time) *AttributeGroup {
	s.CreationTime = &v
	return s
}

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

// SetId sets the Id field's value.
func (s *AttributeGroup) SetId(v string) *AttributeGroup {
	s.Id = &v
	return s
}

// SetLastUpdateTime sets the LastUpdateTime field's value.
func (s *AttributeGroup) SetLastUpdateTime(v time.Time) *AttributeGroup {
	s.LastUpdateTime = &v
	return s
}

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

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

// The details related to a specific AttributeGroup.
type AttributeGroupDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon resource name (ARN) that specifies the attribute group.
	Arn *string `locationName:"arn" type:"string"`

	// The service principal that created the attribute group.
	CreatedBy *string `locationName:"createdBy" min:"1" type:"string"`

	// The unique identifier of the attribute group.
	Id *string `locationName:"id" min:"1" type:"string"`

	//
	// This field is no longer supported. We recommend you don't use the field when
	// using ListAttributeGroupsForApplication.
	//
	// The name of the attribute group.
	Name *string `locationName:"name" min:"1" type:"string"`
}

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

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

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

// SetCreatedBy sets the CreatedBy field's value.
func (s *AttributeGroupDetails) SetCreatedBy(v string) *AttributeGroupDetails {
	s.CreatedBy = &v
	return s
}

// SetId sets the Id field's value.
func (s *AttributeGroupDetails) SetId(v string) *AttributeGroupDetails {
	s.Id = &v
	return s
}

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

// Summary of a Amazon Web Services Service Catalog AppRegistry attribute group.
type AttributeGroupSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon resource name (ARN) that specifies the attribute group across
	// services.
	Arn *string `locationName:"arn" type:"string"`

	// The service principal that created the attribute group.
	CreatedBy *string `locationName:"createdBy" min:"1" type:"string"`

	// The ISO-8601 formatted timestamp of the moment the attribute group was created.
	CreationTime *time.Time `locationName:"creationTime" type:"timestamp" timestampFormat:"iso8601"`

	// The description of the attribute group that the user provides.
	Description *string `locationName:"description" type:"string"`

	// The globally unique attribute group identifier of the attribute group.
	Id *string `locationName:"id" min:"1" type:"string"`

	// The ISO-8601 formatted timestamp of the moment the attribute group was last
	// updated. This time is the same as the creationTime for a newly created attribute
	// group.
	LastUpdateTime *time.Time `locationName:"lastUpdateTime" type:"timestamp" timestampFormat:"iso8601"`

	// The name of the attribute group.
	Name *string `locationName:"name" min:"1" type:"string"`
}

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

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

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

// SetCreatedBy sets the CreatedBy field's value.
func (s *AttributeGroupSummary) SetCreatedBy(v string) *AttributeGroupSummary {
	s.CreatedBy = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *AttributeGroupSummary) SetCreationTime(v time.Time) *AttributeGroupSummary {
	s.CreationTime = &v
	return s
}

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

// SetId sets the Id field's value.
func (s *AttributeGroupSummary) SetId(v string) *AttributeGroupSummary {
	s.Id = &v
	return s
}

// SetLastUpdateTime sets the LastUpdateTime field's value.
func (s *AttributeGroupSummary) SetLastUpdateTime(v time.Time) *AttributeGroupSummary {
	s.LastUpdateTime = &v
	return s
}

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

// There was a conflict when processing the request (for example, a resource
// with the given name already exists within the account).
type ConflictException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

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

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

func newErrorConflictException(v protocol.ResponseMetadata) error {
	return &ConflictException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

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

	// A unique identifier that you provide to ensure idempotency. If you retry
	// a request that completed successfully using the same client token and the
	// same parameters, the retry succeeds without performing any further actions.
	// If you retry a successful request using the same client token, but one or
	// more of the parameters are different, the retry fails.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The description of the application.
	Description *string `locationName:"description" type:"string"`

	// The name of the application. The name must be unique in the region in which
	// you are creating the application.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// Key-value pairs you can use to associate with the application.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

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

// SetClientToken sets the ClientToken field's value.
func (s *CreateApplicationInput) SetClientToken(v string) *CreateApplicationInput {
	s.ClientToken = &v
	return s
}

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

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

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

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

	// Information about the application.
	Application *Application `locationName:"application" type:"structure"`
}

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

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

// SetApplication sets the Application field's value.
func (s *CreateApplicationOutput) SetApplication(v *Application) *CreateApplicationOutput {
	s.Application = v
	return s
}

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

	// A JSON string in the form of nested key-value pairs that represent the attributes
	// in the group and describes an application and its components.
	//
	// Attributes is a required field
	Attributes *string `locationName:"attributes" min:"1" type:"string" required:"true"`

	// A unique identifier that you provide to ensure idempotency. If you retry
	// a request that completed successfully using the same client token and the
	// same parameters, the retry succeeds without performing any further actions.
	// If you retry a successful request using the same client token, but one or
	// more of the parameters are different, the retry fails.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The description of the attribute group that the user provides.
	Description *string `locationName:"description" type:"string"`

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

	// Key-value pairs you can use to associate with the attribute group.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

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

// SetAttributes sets the Attributes field's value.
func (s *CreateAttributeGroupInput) SetAttributes(v string) *CreateAttributeGroupInput {
	s.Attributes = &v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateAttributeGroupInput) SetClientToken(v string) *CreateAttributeGroupInput {
	s.ClientToken = &v
	return s
}

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

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

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

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

	// Information about the attribute group.
	AttributeGroup *AttributeGroup `locationName:"attributeGroup" type:"structure"`
}

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

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

// SetAttributeGroup sets the AttributeGroup field's value.
func (s *CreateAttributeGroupOutput) SetAttributeGroup(v *AttributeGroup) *CreateAttributeGroupOutput {
	s.AttributeGroup = v
	return s
}

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

	// The name, ID, or ARN of the application.
	//
	// Application is a required field
	Application *string `location:"uri" locationName:"application" min:"1" type:"string" required:"true"`
}

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

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

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

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

// SetApplication sets the Application field's value.
func (s *DeleteApplicationInput) SetApplication(v string) *DeleteApplicationInput {
	s.Application = &v
	return s
}

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

	// Information about the deleted application.
	Application *ApplicationSummary `locationName:"application" type:"structure"`
}

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

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

// SetApplication sets the Application field's value.
func (s *DeleteApplicationOutput) SetApplication(v *ApplicationSummary) *DeleteApplicationOutput {
	s.Application = v
	return s
}

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

	// The name, ID, or ARN of the attribute group that holds the attributes to
	// describe the application.
	//
	// AttributeGroup is a required field
	AttributeGroup *string `location:"uri" locationName:"attributeGroup" min:"1" type:"string" required:"true"`
}

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

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

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

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

// SetAttributeGroup sets the AttributeGroup field's value.
func (s *DeleteAttributeGroupInput) SetAttributeGroup(v string) *DeleteAttributeGroupInput {
	s.AttributeGroup = &v
	return s
}

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

	// Information about the deleted attribute group.
	AttributeGroup *AttributeGroupSummary `locationName:"attributeGroup" type:"structure"`
}

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

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

// SetAttributeGroup sets the AttributeGroup field's value.
func (s *DeleteAttributeGroupOutput) SetAttributeGroup(v *AttributeGroupSummary) *DeleteAttributeGroupOutput {
	s.AttributeGroup = v
	return s
}

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

	// The name, ID, or ARN of the application.
	//
	// Application is a required field
	Application *string `location:"uri" locationName:"application" min:"1" type:"string" required:"true"`

	// The name, ID, or ARN of the attribute group that holds the attributes to
	// describe the application.
	//
	// AttributeGroup is a required field
	AttributeGroup *string `location:"uri" locationName:"attributeGroup" min:"1" type:"string" required:"true"`
}

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

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

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

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

// SetApplication sets the Application field's value.
func (s *DisassociateAttributeGroupInput) SetApplication(v string) *DisassociateAttributeGroupInput {
	s.Application = &v
	return s
}

// SetAttributeGroup sets the AttributeGroup field's value.
func (s *DisassociateAttributeGroupInput) SetAttributeGroup(v string) *DisassociateAttributeGroupInput {
	s.AttributeGroup = &v
	return s
}

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

	// The Amazon resource name (ARN) that specifies the application.
	ApplicationArn *string `locationName:"applicationArn" type:"string"`

	// The Amazon resource name (ARN) that specifies the attribute group.
	AttributeGroupArn *string `locationName:"attributeGroupArn" type:"string"`
}

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

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

// SetApplicationArn sets the ApplicationArn field's value.
func (s *DisassociateAttributeGroupOutput) SetApplicationArn(v string) *DisassociateAttributeGroupOutput {
	s.ApplicationArn = &v
	return s
}

// SetAttributeGroupArn sets the AttributeGroupArn field's value.
func (s *DisassociateAttributeGroupOutput) SetAttributeGroupArn(v string) *DisassociateAttributeGroupOutput {
	s.AttributeGroupArn = &v
	return s
}

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

	// The name or ID of the application.
	//
	// Application is a required field
	Application *string `location:"uri" locationName:"application" min:"1" type:"string" required:"true"`

	// The name or ID of the resource.
	//
	// Resource is a required field
	Resource *string `location:"uri" locationName:"resource" min:"1" type:"string" required:"true"`

	// The type of the resource that is being disassociated.
	//
	// ResourceType is a required field
	ResourceType *string `location:"uri" locationName:"resourceType" type:"string" required:"true" enum:"ResourceType"`
}

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

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

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

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

// SetApplication sets the Application field's value.
func (s *DisassociateResourceInput) SetApplication(v string) *DisassociateResourceInput {
	s.Application = &v
	return s
}

// SetResource sets the Resource field's value.
func (s *DisassociateResourceInput) SetResource(v string) *DisassociateResourceInput {
	s.Resource = &v
	return s
}

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

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

	// The Amazon resource name (ARN) that specifies the application.
	ApplicationArn *string `locationName:"applicationArn" type:"string"`

	// The Amazon resource name (ARN) that specifies the resource.
	ResourceArn *string `locationName:"resourceArn" min:"1" type:"string"`
}

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

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

// SetApplicationArn sets the ApplicationArn field's value.
func (s *DisassociateResourceOutput) SetApplicationArn(v string) *DisassociateResourceOutput {
	s.ApplicationArn = &v
	return s
}

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

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

	// The name, ID, or ARN of the application.
	//
	// Application is a required field
	Application *string `location:"uri" locationName:"application" min:"1" type:"string" required:"true"`
}

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

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

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

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

// SetApplication sets the Application field's value.
func (s *GetApplicationInput) SetApplication(v string) *GetApplicationInput {
	s.Application = &v
	return s
}

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

	// A key-value pair that identifies an associated resource.
	ApplicationTag map[string]*string `locationName:"applicationTag" type:"map"`

	// The Amazon resource name (ARN) that specifies the application across services.
	Arn *string `locationName:"arn" type:"string"`

	// The number of top-level resources that were registered as part of this application.
	AssociatedResourceCount *int64 `locationName:"associatedResourceCount" type:"integer"`

	// The ISO-8601 formatted timestamp of the moment when the application was created.
	CreationTime *time.Time `locationName:"creationTime" type:"timestamp" timestampFormat:"iso8601"`

	// The description of the application.
	Description *string `locationName:"description" type:"string"`

	// The identifier of the application.
	Id *string `locationName:"id" min:"26" type:"string"`

	// The information about the integration of the application with other services,
	// such as Resource Groups.
	Integrations *Integrations `locationName:"integrations" type:"structure"`

	// The ISO-8601 formatted timestamp of the moment when the application was last
	// updated.
	LastUpdateTime *time.Time `locationName:"lastUpdateTime" type:"timestamp" timestampFormat:"iso8601"`

	// The name of the application. The name must be unique in the region in which
	// you are creating the application.
	Name *string `locationName:"name" min:"1" type:"string"`

	// Key-value pairs associated with the application.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

// SetApplicationTag sets the ApplicationTag field's value.
func (s *GetApplicationOutput) SetApplicationTag(v map[string]*string) *GetApplicationOutput {
	s.ApplicationTag = v
	return s
}

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

// SetAssociatedResourceCount sets the AssociatedResourceCount field's value.
func (s *GetApplicationOutput) SetAssociatedResourceCount(v int64) *GetApplicationOutput {
	s.AssociatedResourceCount = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *GetApplicationOutput) SetCreationTime(v time.Time) *GetApplicationOutput {
	s.CreationTime = &v
	return s
}

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

// SetId sets the Id field's value.
func (s *GetApplicationOutput) SetId(v string) *GetApplicationOutput {
	s.Id = &v
	return s
}

// SetIntegrations sets the Integrations field's value.
func (s *GetApplicationOutput) SetIntegrations(v *Integrations) *GetApplicationOutput {
	s.Integrations = v
	return s
}

// SetLastUpdateTime sets the LastUpdateTime field's value.
func (s *GetApplicationOutput) SetLastUpdateTime(v time.Time) *GetApplicationOutput {
	s.LastUpdateTime = &v
	return s
}

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

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

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

	// The name, ID, or ARN of the application.
	//
	// Application is a required field
	Application *string `location:"uri" locationName:"application" min:"1" type:"string" required:"true"`

	// The maximum number of results to return. If the parameter is omitted, it
	// defaults to 25. The value is optional.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// A unique pagination token for each page of results. Make the call again with
	// the returned token to retrieve the next page of results.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The name or ID of the resource associated with the application.
	//
	// Resource is a required field
	Resource *string `location:"uri" locationName:"resource" min:"1" type:"string" required:"true"`

	// States whether an application tag is applied, not applied, in the process
	// of being applied, or skipped.
	ResourceTagStatus []*string `location:"querystring" locationName:"resourceTagStatus" min:"1" type:"list" enum:"ResourceItemStatus"`

	// The type of resource associated with the application.
	//
	// ResourceType is a required field
	ResourceType *string `location:"uri" locationName:"resourceType" type:"string" required:"true" enum:"ResourceType"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetAssociatedResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetAssociatedResourceInput"}
	if s.Application == nil {
		invalidParams.Add(request.NewErrParamRequired("Application"))
	}
	if s.Application != nil && len(*s.Application) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Application", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}
	if s.Resource == nil {
		invalidParams.Add(request.NewErrParamRequired("Resource"))
	}
	if s.Resource != nil && len(*s.Resource) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Resource", 1))
	}
	if s.ResourceTagStatus != nil && len(s.ResourceTagStatus) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceTagStatus", 1))
	}
	if s.ResourceType == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceType"))
	}
	if s.ResourceType != nil && len(*s.ResourceType) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceType", 1))
	}

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

// SetApplication sets the Application field's value.
func (s *GetAssociatedResourceInput) SetApplication(v string) *GetAssociatedResourceInput {
	s.Application = &v
	return s
}

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

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

// SetResource sets the Resource field's value.
func (s *GetAssociatedResourceInput) SetResource(v string) *GetAssociatedResourceInput {
	s.Resource = &v
	return s
}

// SetResourceTagStatus sets the ResourceTagStatus field's value.
func (s *GetAssociatedResourceInput) SetResourceTagStatus(v []*string) *GetAssociatedResourceInput {
	s.ResourceTagStatus = v
	return s
}

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

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

	// The result of the application that's tag applied to a resource.
	ApplicationTagResult *ApplicationTagResult `locationName:"applicationTagResult" type:"structure"`

	// Determines whether an application tag is applied or skipped.
	Options []*string `locationName:"options" type:"list" enum:"AssociationOption"`

	// The resource associated with the application.
	Resource *Resource `locationName:"resource" type:"structure"`
}

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

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

// SetApplicationTagResult sets the ApplicationTagResult field's value.
func (s *GetAssociatedResourceOutput) SetApplicationTagResult(v *ApplicationTagResult) *GetAssociatedResourceOutput {
	s.ApplicationTagResult = v
	return s
}

// SetOptions sets the Options field's value.
func (s *GetAssociatedResourceOutput) SetOptions(v []*string) *GetAssociatedResourceOutput {
	s.Options = v
	return s
}

// SetResource sets the Resource field's value.
func (s *GetAssociatedResourceOutput) SetResource(v *Resource) *GetAssociatedResourceOutput {
	s.Resource = v
	return s
}

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

	// The name, ID, or ARN of the attribute group that holds the attributes to
	// describe the application.
	//
	// AttributeGroup is a required field
	AttributeGroup *string `location:"uri" locationName:"attributeGroup" min:"1" type:"string" required:"true"`
}

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

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

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

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

// SetAttributeGroup sets the AttributeGroup field's value.
func (s *GetAttributeGroupInput) SetAttributeGroup(v string) *GetAttributeGroupInput {
	s.AttributeGroup = &v
	return s
}

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

	// The Amazon resource name (ARN) that specifies the attribute group across
	// services.
	Arn *string `locationName:"arn" type:"string"`

	// A JSON string in the form of nested key-value pairs that represent the attributes
	// in the group and describes an application and its components.
	Attributes *string `locationName:"attributes" min:"1" type:"string"`

	// The service principal that created the attribute group.
	CreatedBy *string `locationName:"createdBy" min:"1" type:"string"`

	// The ISO-8601 formatted timestamp of the moment the attribute group was created.
	CreationTime *time.Time `locationName:"creationTime" type:"timestamp" timestampFormat:"iso8601"`

	// The description of the attribute group that the user provides.
	Description *string `locationName:"description" type:"string"`

	// The identifier of the attribute group.
	Id *string `locationName:"id" min:"1" type:"string"`

	// The ISO-8601 formatted timestamp of the moment the attribute group was last
	// updated. This time is the same as the creationTime for a newly created attribute
	// group.
	LastUpdateTime *time.Time `locationName:"lastUpdateTime" type:"timestamp" timestampFormat:"iso8601"`

	// The name of the attribute group.
	Name *string `locationName:"name" min:"1" type:"string"`

	// Key-value pairs associated with the attribute group.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

// SetAttributes sets the Attributes field's value.
func (s *GetAttributeGroupOutput) SetAttributes(v string) *GetAttributeGroupOutput {
	s.Attributes = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *GetAttributeGroupOutput) SetCreatedBy(v string) *GetAttributeGroupOutput {
	s.CreatedBy = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *GetAttributeGroupOutput) SetCreationTime(v time.Time) *GetAttributeGroupOutput {
	s.CreationTime = &v
	return s
}

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

// SetId sets the Id field's value.
func (s *GetAttributeGroupOutput) SetId(v string) *GetAttributeGroupOutput {
	s.Id = &v
	return s
}

// SetLastUpdateTime sets the LastUpdateTime field's value.
func (s *GetAttributeGroupOutput) SetLastUpdateTime(v time.Time) *GetAttributeGroupOutput {
	s.LastUpdateTime = &v
	return s
}

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

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

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

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

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

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

	// Retrieves TagKey configuration from an account.
	Configuration *AppRegistryConfiguration `locationName:"configuration" type:"structure"`
}

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

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

// SetConfiguration sets the Configuration field's value.
func (s *GetConfigurationOutput) SetConfiguration(v *AppRegistryConfiguration) *GetConfigurationOutput {
	s.Configuration = v
	return s
}

// The information about the service integration.
type Integrations struct {
	_ struct{} `type:"structure"`

	// The information about the resource group integration.
	ApplicationTagResourceGroup *ResourceGroup `locationName:"applicationTagResourceGroup" type:"structure"`

	// The information about the resource group integration.
	ResourceGroup *ResourceGroup `locationName:"resourceGroup" type:"structure"`
}

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

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

// SetApplicationTagResourceGroup sets the ApplicationTagResourceGroup field's value.
func (s *Integrations) SetApplicationTagResourceGroup(v *ResourceGroup) *Integrations {
	s.ApplicationTagResourceGroup = v
	return s
}

// SetResourceGroup sets the ResourceGroup field's value.
func (s *Integrations) SetResourceGroup(v *ResourceGroup) *Integrations {
	s.ResourceGroup = v
	return s
}

// The service is experiencing internal problems.
type InternalServerException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

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

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

func newErrorInternalServerException(v protocol.ResponseMetadata) error {
	return &InternalServerException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

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

	// The upper bound of the number of results to return (cannot exceed 25). If
	// this parameter is omitted, it defaults to 25. This value is optional.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token to use to get the next page of results after a previous API call.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

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

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

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

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

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

	// This list of applications.
	Applications []*ApplicationSummary `locationName:"applications" type:"list"`

	// The token to use to get the next page of results after a previous API call.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetApplications sets the Applications field's value.
func (s *ListApplicationsOutput) SetApplications(v []*ApplicationSummary) *ListApplicationsOutput {
	s.Applications = v
	return s
}

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

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

	// The name or ID of the application.
	//
	// Application is a required field
	Application *string `location:"uri" locationName:"application" min:"1" type:"string" required:"true"`

	// The upper bound of the number of results to return (cannot exceed 25). If
	// this parameter is omitted, it defaults to 25. This value is optional.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token to use to get the next page of results after a previous API call.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

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

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

// SetApplication sets the Application field's value.
func (s *ListAssociatedAttributeGroupsInput) SetApplication(v string) *ListAssociatedAttributeGroupsInput {
	s.Application = &v
	return s
}

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

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

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

	// A list of attribute group IDs.
	AttributeGroups []*string `locationName:"attributeGroups" type:"list"`

	// The token to use to get the next page of results after a previous API call.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetAttributeGroups sets the AttributeGroups field's value.
func (s *ListAssociatedAttributeGroupsOutput) SetAttributeGroups(v []*string) *ListAssociatedAttributeGroupsOutput {
	s.AttributeGroups = v
	return s
}

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

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

	// The name, ID, or ARN of the application.
	//
	// Application is a required field
	Application *string `location:"uri" locationName:"application" min:"1" type:"string" required:"true"`

	// The upper bound of the number of results to return (cannot exceed 25). If
	// this parameter is omitted, it defaults to 25. This value is optional.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token to use to get the next page of results after a previous API call.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

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

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

// SetApplication sets the Application field's value.
func (s *ListAssociatedResourcesInput) SetApplication(v string) *ListAssociatedResourcesInput {
	s.Application = &v
	return s
}

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

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

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

	// The token to use to get the next page of results after a previous API call.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// Information about the resources.
	Resources []*ResourceInfo `locationName:"resources" type:"list"`
}

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

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

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

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

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

	// The name or ID of the application.
	//
	// Application is a required field
	Application *string `location:"uri" locationName:"application" min:"1" type:"string" required:"true"`

	// The upper bound of the number of results to return. The value cannot exceed
	// 25. If you omit this parameter, it defaults to 25. This value is optional.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// This token retrieves the next page of results after a previous API call.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

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

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

// SetApplication sets the Application field's value.
func (s *ListAttributeGroupsForApplicationInput) SetApplication(v string) *ListAttributeGroupsForApplicationInput {
	s.Application = &v
	return s
}

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

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

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

	// The details related to a specific attribute group.
	AttributeGroupsDetails []*AttributeGroupDetails `locationName:"attributeGroupsDetails" type:"list"`

	// The token to use to get the next page of results after a previous API call.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetAttributeGroupsDetails sets the AttributeGroupsDetails field's value.
func (s *ListAttributeGroupsForApplicationOutput) SetAttributeGroupsDetails(v []*AttributeGroupDetails) *ListAttributeGroupsForApplicationOutput {
	s.AttributeGroupsDetails = v
	return s
}

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

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

	// The upper bound of the number of results to return (cannot exceed 25). If
	// this parameter is omitted, it defaults to 25. This value is optional.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The token to use to get the next page of results after a previous API call.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

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

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

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

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

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

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

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

	// This list of attribute groups.
	AttributeGroups []*AttributeGroupSummary `locationName:"attributeGroups" type:"list"`

	// The token to use to get the next page of results after a previous API call.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

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

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

// SetAttributeGroups sets the AttributeGroups field's value.
func (s *ListAttributeGroupsOutput) SetAttributeGroups(v []*AttributeGroupSummary) *ListAttributeGroupsOutput {
	s.AttributeGroups = v
	return s
}

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

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

	// The Amazon resource name (ARN) that specifies the resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" min:"1" type:"string" required:"true"`
}

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

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

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

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

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

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

	// The tags on the resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

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

	// Associates a TagKey configuration to an account.
	//
	// Configuration is a required field
	Configuration *AppRegistryConfiguration `locationName:"configuration" type:"structure" required:"true"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutConfigurationInput"}
	if s.Configuration == nil {
		invalidParams.Add(request.NewErrParamRequired("Configuration"))
	}

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

// SetConfiguration sets the Configuration field's value.
func (s *PutConfigurationInput) SetConfiguration(v *AppRegistryConfiguration) *PutConfigurationInput {
	s.Configuration = v
	return s
}

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

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

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

// The information about the resource.
type Resource struct {
	_ struct{} `type:"structure"`

	// The Amazon resource name (ARN) of the resource.
	Arn *string `locationName:"arn" min:"1" type:"string"`

	// The time the resource was associated with the application.
	AssociationTime *time.Time `locationName:"associationTime" type:"timestamp" timestampFormat:"iso8601"`

	// The service integration information about the resource.
	Integrations *ResourceIntegrations `locationName:"integrations" type:"structure"`

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

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

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

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

// SetAssociationTime sets the AssociationTime field's value.
func (s *Resource) SetAssociationTime(v time.Time) *Resource {
	s.AssociationTime = &v
	return s
}

// SetIntegrations sets the Integrations field's value.
func (s *Resource) SetIntegrations(v *ResourceIntegrations) *Resource {
	s.Integrations = v
	return s
}

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

// The details related to the resource.
type ResourceDetails struct {
	_ struct{} `type:"structure"`

	// The value of the tag.
	TagValue *string `locationName:"tagValue" type:"string"`
}

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

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

// SetTagValue sets the TagValue field's value.
func (s *ResourceDetails) SetTagValue(v string) *ResourceDetails {
	s.TagValue = &v
	return s
}

// The information about the resource group integration.
type ResourceGroup struct {
	_ struct{} `type:"structure"`

	// The Amazon resource name (ARN) of the resource group.
	Arn *string `locationName:"arn" min:"1" type:"string"`

	// The error message that generates when the propagation process for the resource
	// group fails.
	ErrorMessage *string `locationName:"errorMessage" type:"string"`

	// The state of the propagation process for the resource group. The states includes:
	//
	// CREATING if the resource group is in the process of being created.
	//
	// CREATE_COMPLETE if the resource group was created successfully.
	//
	// CREATE_FAILED if the resource group failed to be created.
	//
	// UPDATING if the resource group is in the process of being updated.
	//
	// UPDATE_COMPLETE if the resource group updated successfully.
	//
	// UPDATE_FAILED if the resource group could not update successfully.
	State *string `locationName:"state" type:"string" enum:"ResourceGroupState"`
}

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

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

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

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

// SetState sets the State field's value.
func (s *ResourceGroup) SetState(v string) *ResourceGroup {
	s.State = &v
	return s
}

// The information about the resource.
type ResourceInfo struct {
	_ struct{} `type:"structure"`

	// The Amazon resource name (ARN) that specifies the resource across services.
	Arn *string `locationName:"arn" min:"1" type:"string"`

	// The name of the resource.
	Name *string `locationName:"name" min:"1" type:"string"`

	// Determines whether an application tag is applied or skipped.
	Options []*string `locationName:"options" type:"list" enum:"AssociationOption"`

	// The details related to the resource.
	ResourceDetails *ResourceDetails `locationName:"resourceDetails" type:"structure"`

	// Provides information about the Service Catalog App Registry resource type.
	ResourceType *string `locationName:"resourceType" type:"string" enum:"ResourceType"`
}

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

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

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

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

// SetOptions sets the Options field's value.
func (s *ResourceInfo) SetOptions(v []*string) *ResourceInfo {
	s.Options = v
	return s
}

// SetResourceDetails sets the ResourceDetails field's value.
func (s *ResourceInfo) SetResourceDetails(v *ResourceDetails) *ResourceInfo {
	s.ResourceDetails = v
	return s
}

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

// The service integration information about the resource.
type ResourceIntegrations struct {
	_ struct{} `type:"structure"`

	// The information about the integration of Resource Groups.
	ResourceGroup *ResourceGroup `locationName:"resourceGroup" type:"structure"`
}

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

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

// SetResourceGroup sets the ResourceGroup field's value.
func (s *ResourceIntegrations) SetResourceGroup(v *ResourceGroup) *ResourceIntegrations {
	s.ResourceGroup = v
	return s
}

// The specified resource does not exist.
type ResourceNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

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

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

func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
	return &ResourceNotFoundException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

// The resource in a list of resources.
type ResourcesListItem struct {
	_ struct{} `type:"structure"`

	// The message returned if the call fails.
	ErrorMessage *string `locationName:"errorMessage" min:"1" type:"string"`

	// The Amazon resource name (ARN) of the resource.
	ResourceArn *string `locationName:"resourceArn" min:"1" type:"string"`

	// Provides information about the AppRegistry resource type.
	ResourceType *string `locationName:"resourceType" type:"string"`

	// The status of the list item.
	Status *string `locationName:"status" type:"string"`
}

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

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

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

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

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

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

// The maximum number of resources per account has been reached.
type ServiceQuotaExceededException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

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

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

func newErrorServiceQuotaExceededException(v protocol.ResponseMetadata) error {
	return &ServiceQuotaExceededException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

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

	// An entity you can work with and specify with a name or ID. Examples include
	// an Amazon EC2 instance, an Amazon Web Services CloudFormation stack, or an
	// Amazon S3 bucket.
	//
	// Resource is a required field
	Resource *string `location:"uri" locationName:"resource" min:"1" type:"string" required:"true"`

	// The type of resource of which the application will be associated.
	//
	// ResourceType is a required field
	ResourceType *string `location:"uri" locationName:"resourceType" type:"string" required:"true" enum:"ResourceType"`
}

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

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

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

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

// SetResource sets the Resource field's value.
func (s *SyncResourceInput) SetResource(v string) *SyncResourceInput {
	s.Resource = &v
	return s
}

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

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

	// The results of the output if an application is associated with an ARN value,
	// which could be syncStarted or None.
	ActionTaken *string `locationName:"actionTaken" type:"string" enum:"SyncAction"`

	// The Amazon resource name (ARN) that specifies the application.
	ApplicationArn *string `locationName:"applicationArn" type:"string"`

	// The Amazon resource name (ARN) that specifies the resource.
	ResourceArn *string `locationName:"resourceArn" min:"1" type:"string"`
}

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

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

// SetActionTaken sets the ActionTaken field's value.
func (s *SyncResourceOutput) SetActionTaken(v string) *SyncResourceOutput {
	s.ActionTaken = &v
	return s
}

// SetApplicationArn sets the ApplicationArn field's value.
func (s *SyncResourceOutput) SetApplicationArn(v string) *SyncResourceOutput {
	s.ApplicationArn = &v
	return s
}

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

// The definition of tagQuery. Specifies which resources are associated with
// an application.
type TagQueryConfiguration struct {
	_ struct{} `type:"structure"`

	// Condition in the IAM policy that associates resources to an application.
	TagKey *string `locationName:"tagKey" type:"string"`
}

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

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

// SetTagKey sets the TagKey field's value.
func (s *TagQueryConfiguration) SetTagKey(v string) *TagQueryConfiguration {
	s.TagKey = &v
	return s
}

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

	// The Amazon resource name (ARN) that specifies the resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" min:"1" type:"string" required:"true"`

	// The new or modified tags for the resource.
	//
	// Tags is a required field
	Tags map[string]*string `locationName:"tags" type:"map" required:"true"`
}

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

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

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

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

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

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

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

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

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

// The maximum number of API requests has been exceeded.
type ThrottlingException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message associated with the Throttling exception.
	Message_ *string `locationName:"message" type:"string"`

	// The originating service code.
	ServiceCode *string `locationName:"serviceCode" type:"string"`
}

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

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

func newErrorThrottlingException(v protocol.ResponseMetadata) error {
	return &ThrottlingException{
		RespMetadata: v,
	}
}

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

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

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

func (s *ThrottlingException) Error() string {
	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
}

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

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

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

	// The Amazon resource name (ARN) that specifies the resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" min:"1" type:"string" required:"true"`

	// A list of the tag keys to remove from the specified resource.
	//
	// TagKeys is a required field
	TagKeys []*string `location:"querystring" locationName:"tagKeys" type:"list" required:"true"`
}

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

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

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

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

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

// SetTagKeys sets the TagKeys field's value.
func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
	s.TagKeys = v
	return s
}

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

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

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

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

	// The name, ID, or ARN of the application that will be updated.
	//
	// Application is a required field
	Application *string `location:"uri" locationName:"application" min:"1" type:"string" required:"true"`

	// The new description of the application.
	Description *string `locationName:"description" type:"string"`

	// Deprecated: The new name of the application. The name must be unique in the
	// region in which you are updating the application. Please do not use this
	// field as we have stopped supporting name updates.
	//
	// Deprecated: Name update for application is deprecated.
	Name *string `locationName:"name" min:"1" deprecated:"true" type:"string"`
}

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

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

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

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

// SetApplication sets the Application field's value.
func (s *UpdateApplicationInput) SetApplication(v string) *UpdateApplicationInput {
	s.Application = &v
	return s
}

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

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

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

	// The updated information of the application.
	Application *Application `locationName:"application" type:"structure"`
}

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

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

// SetApplication sets the Application field's value.
func (s *UpdateApplicationOutput) SetApplication(v *Application) *UpdateApplicationOutput {
	s.Application = v
	return s
}

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

	// The name, ID, or ARN of the attribute group that holds the attributes to
	// describe the application.
	//
	// AttributeGroup is a required field
	AttributeGroup *string `location:"uri" locationName:"attributeGroup" min:"1" type:"string" required:"true"`

	// A JSON string in the form of nested key-value pairs that represent the attributes
	// in the group and describes an application and its components.
	Attributes *string `locationName:"attributes" min:"1" type:"string"`

	// The description of the attribute group that the user provides.
	Description *string `locationName:"description" type:"string"`

	// Deprecated: The new name of the attribute group. The name must be unique
	// in the region in which you are updating the attribute group. Please do not
	// use this field as we have stopped supporting name updates.
	//
	// Deprecated: Name update for attribute group is deprecated.
	Name *string `locationName:"name" min:"1" deprecated:"true" type:"string"`
}

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

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

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

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

// SetAttributeGroup sets the AttributeGroup field's value.
func (s *UpdateAttributeGroupInput) SetAttributeGroup(v string) *UpdateAttributeGroupInput {
	s.AttributeGroup = &v
	return s
}

// SetAttributes sets the Attributes field's value.
func (s *UpdateAttributeGroupInput) SetAttributes(v string) *UpdateAttributeGroupInput {
	s.Attributes = &v
	return s
}

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

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

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

	// The updated information of the attribute group.
	AttributeGroup *AttributeGroup `locationName:"attributeGroup" type:"structure"`
}

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

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

// SetAttributeGroup sets the AttributeGroup field's value.
func (s *UpdateAttributeGroupOutput) SetAttributeGroup(v *AttributeGroup) *UpdateAttributeGroupOutput {
	s.AttributeGroup = v
	return s
}

// The request has invalid or missing parameters.
type ValidationException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

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

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

func newErrorValidationException(v protocol.ResponseMetadata) error {
	return &ValidationException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

const (
	// ApplicationTagStatusInProgress is a ApplicationTagStatus enum value
	ApplicationTagStatusInProgress = "IN_PROGRESS"

	// ApplicationTagStatusSuccess is a ApplicationTagStatus enum value
	ApplicationTagStatusSuccess = "SUCCESS"

	// ApplicationTagStatusFailure is a ApplicationTagStatus enum value
	ApplicationTagStatusFailure = "FAILURE"
)

// ApplicationTagStatus_Values returns all elements of the ApplicationTagStatus enum
func ApplicationTagStatus_Values() []string {
	return []string{
		ApplicationTagStatusInProgress,
		ApplicationTagStatusSuccess,
		ApplicationTagStatusFailure,
	}
}

const (
	// AssociationOptionApplyApplicationTag is a AssociationOption enum value
	AssociationOptionApplyApplicationTag = "APPLY_APPLICATION_TAG"

	// AssociationOptionSkipApplicationTag is a AssociationOption enum value
	AssociationOptionSkipApplicationTag = "SKIP_APPLICATION_TAG"
)

// AssociationOption_Values returns all elements of the AssociationOption enum
func AssociationOption_Values() []string {
	return []string{
		AssociationOptionApplyApplicationTag,
		AssociationOptionSkipApplicationTag,
	}
}

const (
	// ResourceGroupStateCreating is a ResourceGroupState enum value
	ResourceGroupStateCreating = "CREATING"

	// ResourceGroupStateCreateComplete is a ResourceGroupState enum value
	ResourceGroupStateCreateComplete = "CREATE_COMPLETE"

	// ResourceGroupStateCreateFailed is a ResourceGroupState enum value
	ResourceGroupStateCreateFailed = "CREATE_FAILED"

	// ResourceGroupStateUpdating is a ResourceGroupState enum value
	ResourceGroupStateUpdating = "UPDATING"

	// ResourceGroupStateUpdateComplete is a ResourceGroupState enum value
	ResourceGroupStateUpdateComplete = "UPDATE_COMPLETE"

	// ResourceGroupStateUpdateFailed is a ResourceGroupState enum value
	ResourceGroupStateUpdateFailed = "UPDATE_FAILED"
)

// ResourceGroupState_Values returns all elements of the ResourceGroupState enum
func ResourceGroupState_Values() []string {
	return []string{
		ResourceGroupStateCreating,
		ResourceGroupStateCreateComplete,
		ResourceGroupStateCreateFailed,
		ResourceGroupStateUpdating,
		ResourceGroupStateUpdateComplete,
		ResourceGroupStateUpdateFailed,
	}
}

const (
	// ResourceItemStatusSuccess is a ResourceItemStatus enum value
	ResourceItemStatusSuccess = "SUCCESS"

	// ResourceItemStatusFailed is a ResourceItemStatus enum value
	ResourceItemStatusFailed = "FAILED"

	// ResourceItemStatusInProgress is a ResourceItemStatus enum value
	ResourceItemStatusInProgress = "IN_PROGRESS"

	// ResourceItemStatusSkipped is a ResourceItemStatus enum value
	ResourceItemStatusSkipped = "SKIPPED"
)

// ResourceItemStatus_Values returns all elements of the ResourceItemStatus enum
func ResourceItemStatus_Values() []string {
	return []string{
		ResourceItemStatusSuccess,
		ResourceItemStatusFailed,
		ResourceItemStatusInProgress,
		ResourceItemStatusSkipped,
	}
}

const (
	// ResourceTypeCfnStack is a ResourceType enum value
	ResourceTypeCfnStack = "CFN_STACK"

	// ResourceTypeResourceTagValue is a ResourceType enum value
	ResourceTypeResourceTagValue = "RESOURCE_TAG_VALUE"
)

// ResourceType_Values returns all elements of the ResourceType enum
func ResourceType_Values() []string {
	return []string{
		ResourceTypeCfnStack,
		ResourceTypeResourceTagValue,
	}
}

const (
	// SyncActionStartSync is a SyncAction enum value
	SyncActionStartSync = "START_SYNC"

	// SyncActionNoAction is a SyncAction enum value
	SyncActionNoAction = "NO_ACTION"
)

// SyncAction_Values returns all elements of the SyncAction enum
func SyncAction_Values() []string {
	return []string{
		SyncActionStartSync,
		SyncActionNoAction,
	}
}
© 2026 GrazzMean
Beegazpacho


Let’s  Start  Your  Online  Journey  with  Beegazpacho 

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


Contact
Now


OUR CLIENTS

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

Transforming Ideas into
Success

.01
Digital Marketing

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

Learn More

.02
SEO

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

Learn More

.03
Website Designing

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

Learn More

.04
App Development

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

Learn More

.05
Social Media Ads

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

Learn More

.06
Google Ads

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

Learn More

.07
Google My Business

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

Learn More

.08
Graphic Designing

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

Learn More

.09
3D Videos

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

Learn More

about BEEGAZPACHO

creating special Things
For special brands

Join the ranks of successful brands by partnering with Beegazpacho

00+

Happy Customer

00+

Continents

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

Explore
more

Our Recent Work

Crafted with Passion and Precision

Connect now


Web Design
Design, Development & Identity

Logo Design
Design, Development & Identity

Creative Brand design
Design, Development & Identity

Product Design Marketing
Design, Development & Identity

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

Hear It from Those Who Know Us Best

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

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

— Sarah Williams

Head of Marketing, GreenPlanet Apparel

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

— Arvind Shah

CEO, InnovateTech Solutions

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

— Rina Kapoor

Marketing Director, Luxury Home Interiors

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

— Sarah Williams

Head of Marketing, GreenPlanet Apparel

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

— Arvind Shah

CEO, InnovateTech Solutions

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

— Rina Kapoor

Marketing Director, Luxury Home Interiors