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

package quicksight

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"
)

const opBatchCreateTopicReviewedAnswer = "BatchCreateTopicReviewedAnswer"

// BatchCreateTopicReviewedAnswerRequest generates a "aws/request.Request" representing the
// client's request for the BatchCreateTopicReviewedAnswer 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 BatchCreateTopicReviewedAnswer for more information on using the BatchCreateTopicReviewedAnswer
// 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 BatchCreateTopicReviewedAnswerRequest method.
//	req, resp := client.BatchCreateTopicReviewedAnswerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/BatchCreateTopicReviewedAnswer
func (c *QuickSight) BatchCreateTopicReviewedAnswerRequest(input *BatchCreateTopicReviewedAnswerInput) (req *request.Request, output *BatchCreateTopicReviewedAnswerOutput) {
	op := &request.Operation{
		Name:       opBatchCreateTopicReviewedAnswer,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/topics/{TopicId}/batch-create-reviewed-answers",
	}

	if input == nil {
		input = &BatchCreateTopicReviewedAnswerInput{}
	}

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

// BatchCreateTopicReviewedAnswer API operation for Amazon QuickSight.
//
// Creates new reviewed answers for a Q Topic.
//
// 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 Amazon QuickSight's
// API operation BatchCreateTopicReviewedAnswer for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/BatchCreateTopicReviewedAnswer
func (c *QuickSight) BatchCreateTopicReviewedAnswer(input *BatchCreateTopicReviewedAnswerInput) (*BatchCreateTopicReviewedAnswerOutput, error) {
	req, out := c.BatchCreateTopicReviewedAnswerRequest(input)
	return out, req.Send()
}

// BatchCreateTopicReviewedAnswerWithContext is the same as BatchCreateTopicReviewedAnswer with the addition of
// the ability to pass a context and additional request options.
//
// See BatchCreateTopicReviewedAnswer 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 *QuickSight) BatchCreateTopicReviewedAnswerWithContext(ctx aws.Context, input *BatchCreateTopicReviewedAnswerInput, opts ...request.Option) (*BatchCreateTopicReviewedAnswerOutput, error) {
	req, out := c.BatchCreateTopicReviewedAnswerRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opBatchDeleteTopicReviewedAnswer = "BatchDeleteTopicReviewedAnswer"

// BatchDeleteTopicReviewedAnswerRequest generates a "aws/request.Request" representing the
// client's request for the BatchDeleteTopicReviewedAnswer 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 BatchDeleteTopicReviewedAnswer for more information on using the BatchDeleteTopicReviewedAnswer
// 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 BatchDeleteTopicReviewedAnswerRequest method.
//	req, resp := client.BatchDeleteTopicReviewedAnswerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/BatchDeleteTopicReviewedAnswer
func (c *QuickSight) BatchDeleteTopicReviewedAnswerRequest(input *BatchDeleteTopicReviewedAnswerInput) (req *request.Request, output *BatchDeleteTopicReviewedAnswerOutput) {
	op := &request.Operation{
		Name:       opBatchDeleteTopicReviewedAnswer,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/topics/{TopicId}/batch-delete-reviewed-answers",
	}

	if input == nil {
		input = &BatchDeleteTopicReviewedAnswerInput{}
	}

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

// BatchDeleteTopicReviewedAnswer API operation for Amazon QuickSight.
//
// Deletes reviewed answers for Q Topic.
//
// 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 Amazon QuickSight's
// API operation BatchDeleteTopicReviewedAnswer for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/BatchDeleteTopicReviewedAnswer
func (c *QuickSight) BatchDeleteTopicReviewedAnswer(input *BatchDeleteTopicReviewedAnswerInput) (*BatchDeleteTopicReviewedAnswerOutput, error) {
	req, out := c.BatchDeleteTopicReviewedAnswerRequest(input)
	return out, req.Send()
}

// BatchDeleteTopicReviewedAnswerWithContext is the same as BatchDeleteTopicReviewedAnswer with the addition of
// the ability to pass a context and additional request options.
//
// See BatchDeleteTopicReviewedAnswer 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 *QuickSight) BatchDeleteTopicReviewedAnswerWithContext(ctx aws.Context, input *BatchDeleteTopicReviewedAnswerInput, opts ...request.Option) (*BatchDeleteTopicReviewedAnswerOutput, error) {
	req, out := c.BatchDeleteTopicReviewedAnswerRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCancelIngestion = "CancelIngestion"

// CancelIngestionRequest generates a "aws/request.Request" representing the
// client's request for the CancelIngestion 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 CancelIngestion for more information on using the CancelIngestion
// 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 CancelIngestionRequest method.
//	req, resp := client.CancelIngestionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CancelIngestion
func (c *QuickSight) CancelIngestionRequest(input *CancelIngestionInput) (req *request.Request, output *CancelIngestionOutput) {
	op := &request.Operation{
		Name:       opCancelIngestion,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}/ingestions/{IngestionId}",
	}

	if input == nil {
		input = &CancelIngestionInput{}
	}

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

// CancelIngestion API operation for Amazon QuickSight.
//
// Cancels an ongoing ingestion of data into SPICE.
//
// 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 Amazon QuickSight's
// API operation CancelIngestion for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CancelIngestion
func (c *QuickSight) CancelIngestion(input *CancelIngestionInput) (*CancelIngestionOutput, error) {
	req, out := c.CancelIngestionRequest(input)
	return out, req.Send()
}

// CancelIngestionWithContext is the same as CancelIngestion with the addition of
// the ability to pass a context and additional request options.
//
// See CancelIngestion 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 *QuickSight) CancelIngestionWithContext(ctx aws.Context, input *CancelIngestionInput, opts ...request.Option) (*CancelIngestionOutput, error) {
	req, out := c.CancelIngestionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateAccountCustomization = "CreateAccountCustomization"

// CreateAccountCustomizationRequest generates a "aws/request.Request" representing the
// client's request for the CreateAccountCustomization 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 CreateAccountCustomization for more information on using the CreateAccountCustomization
// 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 CreateAccountCustomizationRequest method.
//	req, resp := client.CreateAccountCustomizationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateAccountCustomization
func (c *QuickSight) CreateAccountCustomizationRequest(input *CreateAccountCustomizationInput) (req *request.Request, output *CreateAccountCustomizationOutput) {
	op := &request.Operation{
		Name:       opCreateAccountCustomization,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/customizations",
	}

	if input == nil {
		input = &CreateAccountCustomizationInput{}
	}

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

// CreateAccountCustomization API operation for Amazon QuickSight.
//
// Creates Amazon QuickSight customizations for the current Amazon Web Services
// Region. Currently, you can add a custom default theme by using the CreateAccountCustomization
// or UpdateAccountCustomization API operation. To further customize Amazon
// QuickSight by removing Amazon QuickSight sample assets and videos for all
// new users, see Customizing Amazon QuickSight (https://docs.aws.amazon.com/quicksight/latest/user/customizing-quicksight.html)
// in the Amazon QuickSight User Guide.
//
// You can create customizations for your Amazon Web Services account or, if
// you specify a namespace, for a QuickSight namespace instead. Customizations
// that apply to a namespace always override customizations that apply to an
// Amazon Web Services account. To find out which customizations apply, use
// the DescribeAccountCustomization API operation.
//
// Before you use the CreateAccountCustomization API operation to add a theme
// as the namespace default, make sure that you first share the theme with the
// namespace. If you don't share it with the namespace, the theme isn't visible
// to your users even if you make it the default theme. To check if the theme
// is shared, view the current permissions by using the DescribeThemePermissions
// (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeThemePermissions.html)
// API operation. To share the theme, grant permissions by using the UpdateThemePermissions
// (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateThemePermissions.html)
// API operation.
//
// 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 Amazon QuickSight's
// API operation CreateAccountCustomization for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateAccountCustomization
func (c *QuickSight) CreateAccountCustomization(input *CreateAccountCustomizationInput) (*CreateAccountCustomizationOutput, error) {
	req, out := c.CreateAccountCustomizationRequest(input)
	return out, req.Send()
}

// CreateAccountCustomizationWithContext is the same as CreateAccountCustomization with the addition of
// the ability to pass a context and additional request options.
//
// See CreateAccountCustomization 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 *QuickSight) CreateAccountCustomizationWithContext(ctx aws.Context, input *CreateAccountCustomizationInput, opts ...request.Option) (*CreateAccountCustomizationOutput, error) {
	req, out := c.CreateAccountCustomizationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateAccountSubscription = "CreateAccountSubscription"

// CreateAccountSubscriptionRequest generates a "aws/request.Request" representing the
// client's request for the CreateAccountSubscription 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 CreateAccountSubscription for more information on using the CreateAccountSubscription
// 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 CreateAccountSubscriptionRequest method.
//	req, resp := client.CreateAccountSubscriptionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateAccountSubscription
func (c *QuickSight) CreateAccountSubscriptionRequest(input *CreateAccountSubscriptionInput) (req *request.Request, output *CreateAccountSubscriptionOutput) {
	op := &request.Operation{
		Name:       opCreateAccountSubscription,
		HTTPMethod: "POST",
		HTTPPath:   "/account/{AwsAccountId}",
	}

	if input == nil {
		input = &CreateAccountSubscriptionInput{}
	}

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

// CreateAccountSubscription API operation for Amazon QuickSight.
//
// Creates an Amazon QuickSight account, or subscribes to Amazon QuickSight
// Q.
//
// The Amazon Web Services Region for the account is derived from what is configured
// in the CLI or SDK.
//
// Before you use this operation, make sure that you can connect to an existing
// Amazon Web Services account. If you don't have an Amazon Web Services account,
// see Sign up for Amazon Web Services (https://docs.aws.amazon.com/quicksight/latest/user/setting-up-aws-sign-up.html)
// in the Amazon QuickSight User Guide. The person who signs up for Amazon QuickSight
// needs to have the correct Identity and Access Management (IAM) permissions.
// For more information, see IAM Policy Examples for Amazon QuickSight (https://docs.aws.amazon.com/quicksight/latest/user/iam-policy-examples.html)
// in the Amazon QuickSight User Guide.
//
// If your IAM policy includes both the Subscribe and CreateAccountSubscription
// actions, make sure that both actions are set to Allow. If either action is
// set to Deny, the Deny action prevails and your API call fails.
//
// You can't pass an existing IAM role to access other Amazon Web Services services
// using this API operation. To pass your existing IAM role to Amazon QuickSight,
// see Passing IAM roles to Amazon QuickSight (https://docs.aws.amazon.com/quicksight/latest/user/security_iam_service-with-iam.html#security-create-iam-role)
// in the Amazon QuickSight User Guide.
//
// You can't set default resource access on the new account from the Amazon
// QuickSight API. Instead, add default resource access from the Amazon QuickSight
// console. For more information about setting default resource access to Amazon
// Web Services services, see Setting default resource access to Amazon Web
// Services services (https://docs.aws.amazon.com/quicksight/latest/user/scoping-policies-defaults.html)
// in the Amazon QuickSight User Guide.
//
// 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 Amazon QuickSight's
// API operation CreateAccountSubscription for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateAccountSubscription
func (c *QuickSight) CreateAccountSubscription(input *CreateAccountSubscriptionInput) (*CreateAccountSubscriptionOutput, error) {
	req, out := c.CreateAccountSubscriptionRequest(input)
	return out, req.Send()
}

// CreateAccountSubscriptionWithContext is the same as CreateAccountSubscription with the addition of
// the ability to pass a context and additional request options.
//
// See CreateAccountSubscription 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 *QuickSight) CreateAccountSubscriptionWithContext(ctx aws.Context, input *CreateAccountSubscriptionInput, opts ...request.Option) (*CreateAccountSubscriptionOutput, error) {
	req, out := c.CreateAccountSubscriptionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateAnalysis = "CreateAnalysis"

// CreateAnalysisRequest generates a "aws/request.Request" representing the
// client's request for the CreateAnalysis 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 CreateAnalysis for more information on using the CreateAnalysis
// 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 CreateAnalysisRequest method.
//	req, resp := client.CreateAnalysisRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateAnalysis
func (c *QuickSight) CreateAnalysisRequest(input *CreateAnalysisInput) (req *request.Request, output *CreateAnalysisOutput) {
	op := &request.Operation{
		Name:       opCreateAnalysis,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/analyses/{AnalysisId}",
	}

	if input == nil {
		input = &CreateAnalysisInput{}
	}

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

// CreateAnalysis API operation for Amazon QuickSight.
//
// Creates an analysis in Amazon QuickSight. Analyses can be created either
// from a template or from an AnalysisDefinition.
//
// 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 Amazon QuickSight's
// API operation CreateAnalysis for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateAnalysis
func (c *QuickSight) CreateAnalysis(input *CreateAnalysisInput) (*CreateAnalysisOutput, error) {
	req, out := c.CreateAnalysisRequest(input)
	return out, req.Send()
}

// CreateAnalysisWithContext is the same as CreateAnalysis with the addition of
// the ability to pass a context and additional request options.
//
// See CreateAnalysis 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 *QuickSight) CreateAnalysisWithContext(ctx aws.Context, input *CreateAnalysisInput, opts ...request.Option) (*CreateAnalysisOutput, error) {
	req, out := c.CreateAnalysisRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateDashboard = "CreateDashboard"

// CreateDashboardRequest generates a "aws/request.Request" representing the
// client's request for the CreateDashboard 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 CreateDashboard for more information on using the CreateDashboard
// 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 CreateDashboardRequest method.
//	req, resp := client.CreateDashboardRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateDashboard
func (c *QuickSight) CreateDashboardRequest(input *CreateDashboardInput) (req *request.Request, output *CreateDashboardOutput) {
	op := &request.Operation{
		Name:       opCreateDashboard,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/dashboards/{DashboardId}",
	}

	if input == nil {
		input = &CreateDashboardInput{}
	}

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

// CreateDashboard API operation for Amazon QuickSight.
//
// Creates a dashboard from either a template or directly with a DashboardDefinition.
// To first create a template, see the CreateTemplate (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateTemplate.html)
// API operation.
//
// A dashboard is an entity in Amazon QuickSight that identifies Amazon QuickSight
// reports, created from analyses. You can share Amazon QuickSight dashboards.
// With the right permissions, you can create scheduled email reports from them.
// If you have the correct permissions, you can create a dashboard from a template
// that exists in a different Amazon Web Services 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 Amazon QuickSight's
// API operation CreateDashboard for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateDashboard
func (c *QuickSight) CreateDashboard(input *CreateDashboardInput) (*CreateDashboardOutput, error) {
	req, out := c.CreateDashboardRequest(input)
	return out, req.Send()
}

// CreateDashboardWithContext is the same as CreateDashboard with the addition of
// the ability to pass a context and additional request options.
//
// See CreateDashboard 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 *QuickSight) CreateDashboardWithContext(ctx aws.Context, input *CreateDashboardInput, opts ...request.Option) (*CreateDashboardOutput, error) {
	req, out := c.CreateDashboardRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateDataSet = "CreateDataSet"

// CreateDataSetRequest generates a "aws/request.Request" representing the
// client's request for the CreateDataSet 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 CreateDataSet for more information on using the CreateDataSet
// 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 CreateDataSetRequest method.
//	req, resp := client.CreateDataSetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateDataSet
func (c *QuickSight) CreateDataSetRequest(input *CreateDataSetInput) (req *request.Request, output *CreateDataSetOutput) {
	op := &request.Operation{
		Name:       opCreateDataSet,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets",
	}

	if input == nil {
		input = &CreateDataSetInput{}
	}

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

// CreateDataSet API operation for Amazon QuickSight.
//
// Creates a dataset. This operation doesn't support datasets that include uploaded
// files as a source.
//
// 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 Amazon QuickSight's
// API operation CreateDataSet for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateDataSet
func (c *QuickSight) CreateDataSet(input *CreateDataSetInput) (*CreateDataSetOutput, error) {
	req, out := c.CreateDataSetRequest(input)
	return out, req.Send()
}

// CreateDataSetWithContext is the same as CreateDataSet with the addition of
// the ability to pass a context and additional request options.
//
// See CreateDataSet 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 *QuickSight) CreateDataSetWithContext(ctx aws.Context, input *CreateDataSetInput, opts ...request.Option) (*CreateDataSetOutput, error) {
	req, out := c.CreateDataSetRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateDataSource = "CreateDataSource"

// CreateDataSourceRequest generates a "aws/request.Request" representing the
// client's request for the CreateDataSource 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 CreateDataSource for more information on using the CreateDataSource
// 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 CreateDataSourceRequest method.
//	req, resp := client.CreateDataSourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateDataSource
func (c *QuickSight) CreateDataSourceRequest(input *CreateDataSourceInput) (req *request.Request, output *CreateDataSourceOutput) {
	op := &request.Operation{
		Name:       opCreateDataSource,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sources",
	}

	if input == nil {
		input = &CreateDataSourceInput{}
	}

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

// CreateDataSource API operation for Amazon QuickSight.
//
// Creates a data source.
//
// 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 Amazon QuickSight's
// API operation CreateDataSource for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateDataSource
func (c *QuickSight) CreateDataSource(input *CreateDataSourceInput) (*CreateDataSourceOutput, error) {
	req, out := c.CreateDataSourceRequest(input)
	return out, req.Send()
}

// CreateDataSourceWithContext is the same as CreateDataSource with the addition of
// the ability to pass a context and additional request options.
//
// See CreateDataSource 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 *QuickSight) CreateDataSourceWithContext(ctx aws.Context, input *CreateDataSourceInput, opts ...request.Option) (*CreateDataSourceOutput, error) {
	req, out := c.CreateDataSourceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateFolder = "CreateFolder"

// CreateFolderRequest generates a "aws/request.Request" representing the
// client's request for the CreateFolder 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 CreateFolder for more information on using the CreateFolder
// 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 CreateFolderRequest method.
//	req, resp := client.CreateFolderRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateFolder
func (c *QuickSight) CreateFolderRequest(input *CreateFolderInput) (req *request.Request, output *CreateFolderOutput) {
	op := &request.Operation{
		Name:       opCreateFolder,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/folders/{FolderId}",
	}

	if input == nil {
		input = &CreateFolderInput{}
	}

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

// CreateFolder API operation for Amazon QuickSight.
//
// Creates an empty shared folder.
//
// 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 Amazon QuickSight's
// API operation CreateFolder for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateFolder
func (c *QuickSight) CreateFolder(input *CreateFolderInput) (*CreateFolderOutput, error) {
	req, out := c.CreateFolderRequest(input)
	return out, req.Send()
}

// CreateFolderWithContext is the same as CreateFolder with the addition of
// the ability to pass a context and additional request options.
//
// See CreateFolder 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 *QuickSight) CreateFolderWithContext(ctx aws.Context, input *CreateFolderInput, opts ...request.Option) (*CreateFolderOutput, error) {
	req, out := c.CreateFolderRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateFolderMembership = "CreateFolderMembership"

// CreateFolderMembershipRequest generates a "aws/request.Request" representing the
// client's request for the CreateFolderMembership 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 CreateFolderMembership for more information on using the CreateFolderMembership
// 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 CreateFolderMembershipRequest method.
//	req, resp := client.CreateFolderMembershipRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateFolderMembership
func (c *QuickSight) CreateFolderMembershipRequest(input *CreateFolderMembershipInput) (req *request.Request, output *CreateFolderMembershipOutput) {
	op := &request.Operation{
		Name:       opCreateFolderMembership,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/folders/{FolderId}/members/{MemberType}/{MemberId}",
	}

	if input == nil {
		input = &CreateFolderMembershipInput{}
	}

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

// CreateFolderMembership API operation for Amazon QuickSight.
//
// Adds an asset, such as a dashboard, analysis, or dataset into a folder.
//
// 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 Amazon QuickSight's
// API operation CreateFolderMembership for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateFolderMembership
func (c *QuickSight) CreateFolderMembership(input *CreateFolderMembershipInput) (*CreateFolderMembershipOutput, error) {
	req, out := c.CreateFolderMembershipRequest(input)
	return out, req.Send()
}

// CreateFolderMembershipWithContext is the same as CreateFolderMembership with the addition of
// the ability to pass a context and additional request options.
//
// See CreateFolderMembership 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 *QuickSight) CreateFolderMembershipWithContext(ctx aws.Context, input *CreateFolderMembershipInput, opts ...request.Option) (*CreateFolderMembershipOutput, error) {
	req, out := c.CreateFolderMembershipRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateGroup = "CreateGroup"

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

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

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

// CreateGroup API operation for Amazon QuickSight.
//
// Use the CreateGroup operation to create a group in Amazon QuickSight. You
// can create up to 10,000 groups in a namespace. If you want to create more
// than 10,000 groups in a namespace, contact Amazon Web Services Support.
//
// The permissions resource is arn:aws:quicksight:<your-region>:<relevant-aws-account-id>:group/default/<group-name> .
//
// The response is a group object.
//
// 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 Amazon QuickSight's
// API operation CreateGroup for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateGroup
func (c *QuickSight) CreateGroup(input *CreateGroupInput) (*CreateGroupOutput, error) {
	req, out := c.CreateGroupRequest(input)
	return out, req.Send()
}

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

const opCreateGroupMembership = "CreateGroupMembership"

// CreateGroupMembershipRequest generates a "aws/request.Request" representing the
// client's request for the CreateGroupMembership 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 CreateGroupMembership for more information on using the CreateGroupMembership
// 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 CreateGroupMembershipRequest method.
//	req, resp := client.CreateGroupMembershipRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateGroupMembership
func (c *QuickSight) CreateGroupMembershipRequest(input *CreateGroupMembershipInput) (req *request.Request, output *CreateGroupMembershipOutput) {
	op := &request.Operation{
		Name:       opCreateGroupMembership,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups/{GroupName}/members/{MemberName}",
	}

	if input == nil {
		input = &CreateGroupMembershipInput{}
	}

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

// CreateGroupMembership API operation for Amazon QuickSight.
//
// Adds an Amazon QuickSight user to an Amazon QuickSight group.
//
// 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 Amazon QuickSight's
// API operation CreateGroupMembership for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateGroupMembership
func (c *QuickSight) CreateGroupMembership(input *CreateGroupMembershipInput) (*CreateGroupMembershipOutput, error) {
	req, out := c.CreateGroupMembershipRequest(input)
	return out, req.Send()
}

// CreateGroupMembershipWithContext is the same as CreateGroupMembership with the addition of
// the ability to pass a context and additional request options.
//
// See CreateGroupMembership 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 *QuickSight) CreateGroupMembershipWithContext(ctx aws.Context, input *CreateGroupMembershipInput, opts ...request.Option) (*CreateGroupMembershipOutput, error) {
	req, out := c.CreateGroupMembershipRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateIAMPolicyAssignment = "CreateIAMPolicyAssignment"

// CreateIAMPolicyAssignmentRequest generates a "aws/request.Request" representing the
// client's request for the CreateIAMPolicyAssignment 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 CreateIAMPolicyAssignment for more information on using the CreateIAMPolicyAssignment
// 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 CreateIAMPolicyAssignmentRequest method.
//	req, resp := client.CreateIAMPolicyAssignmentRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateIAMPolicyAssignment
func (c *QuickSight) CreateIAMPolicyAssignmentRequest(input *CreateIAMPolicyAssignmentInput) (req *request.Request, output *CreateIAMPolicyAssignmentOutput) {
	op := &request.Operation{
		Name:       opCreateIAMPolicyAssignment,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/iam-policy-assignments/",
	}

	if input == nil {
		input = &CreateIAMPolicyAssignmentInput{}
	}

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

// CreateIAMPolicyAssignment API operation for Amazon QuickSight.
//
// Creates an assignment with one specified IAM policy, identified by its Amazon
// Resource Name (ARN). This policy assignment is attached to the specified
// groups or users of Amazon QuickSight. Assignment names are unique per Amazon
// Web Services account. To avoid overwriting rules in other namespaces, use
// assignment names that are unique.
//
// 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 Amazon QuickSight's
// API operation CreateIAMPolicyAssignment for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ConcurrentUpdatingException
//     A resource is already in a state that indicates an operation is happening
//     that must complete before a new update can be applied.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateIAMPolicyAssignment
func (c *QuickSight) CreateIAMPolicyAssignment(input *CreateIAMPolicyAssignmentInput) (*CreateIAMPolicyAssignmentOutput, error) {
	req, out := c.CreateIAMPolicyAssignmentRequest(input)
	return out, req.Send()
}

// CreateIAMPolicyAssignmentWithContext is the same as CreateIAMPolicyAssignment with the addition of
// the ability to pass a context and additional request options.
//
// See CreateIAMPolicyAssignment 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 *QuickSight) CreateIAMPolicyAssignmentWithContext(ctx aws.Context, input *CreateIAMPolicyAssignmentInput, opts ...request.Option) (*CreateIAMPolicyAssignmentOutput, error) {
	req, out := c.CreateIAMPolicyAssignmentRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateIngestion = "CreateIngestion"

// CreateIngestionRequest generates a "aws/request.Request" representing the
// client's request for the CreateIngestion 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 CreateIngestion for more information on using the CreateIngestion
// 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 CreateIngestionRequest method.
//	req, resp := client.CreateIngestionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateIngestion
func (c *QuickSight) CreateIngestionRequest(input *CreateIngestionInput) (req *request.Request, output *CreateIngestionOutput) {
	op := &request.Operation{
		Name:       opCreateIngestion,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}/ingestions/{IngestionId}",
	}

	if input == nil {
		input = &CreateIngestionInput{}
	}

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

// CreateIngestion API operation for Amazon QuickSight.
//
// Creates and starts a new SPICE ingestion for a dataset. You can manually
// refresh datasets in an Enterprise edition account 32 times in a 24-hour period.
// You can manually refresh datasets in a Standard edition account 8 times in
// a 24-hour period. Each 24-hour period is measured starting 24 hours before
// the current date and time.
//
// Any ingestions operating on tagged datasets inherit the same tags automatically
// for use in access control. For an example, see How do I create an IAM policy
// to control access to Amazon EC2 resources using tags? (http://aws.amazon.com/premiumsupport/knowledge-center/iam-ec2-resource-tags/)
// in the Amazon Web Services Knowledge Center. Tags are visible on the tagged
// dataset, but not on the ingestion 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 Amazon QuickSight's
// API operation CreateIngestion for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateIngestion
func (c *QuickSight) CreateIngestion(input *CreateIngestionInput) (*CreateIngestionOutput, error) {
	req, out := c.CreateIngestionRequest(input)
	return out, req.Send()
}

// CreateIngestionWithContext is the same as CreateIngestion with the addition of
// the ability to pass a context and additional request options.
//
// See CreateIngestion 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 *QuickSight) CreateIngestionWithContext(ctx aws.Context, input *CreateIngestionInput, opts ...request.Option) (*CreateIngestionOutput, error) {
	req, out := c.CreateIngestionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateNamespace = "CreateNamespace"

// CreateNamespaceRequest generates a "aws/request.Request" representing the
// client's request for the CreateNamespace 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 CreateNamespace for more information on using the CreateNamespace
// 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 CreateNamespaceRequest method.
//	req, resp := client.CreateNamespaceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateNamespace
func (c *QuickSight) CreateNamespaceRequest(input *CreateNamespaceInput) (req *request.Request, output *CreateNamespaceOutput) {
	op := &request.Operation{
		Name:       opCreateNamespace,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}",
	}

	if input == nil {
		input = &CreateNamespaceInput{}
	}

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

// CreateNamespace API operation for Amazon QuickSight.
//
// (Enterprise edition only) Creates a new namespace for you to use with Amazon
// QuickSight.
//
// A namespace allows you to isolate the Amazon QuickSight users and groups
// that are registered for that namespace. Users that access the namespace can
// share assets only with other users or groups in the same namespace. They
// can't see users and groups in other namespaces. You can create a namespace
// after your Amazon Web Services account is subscribed to Amazon QuickSight.
// The namespace must be unique within the Amazon Web Services account. By default,
// there is a limit of 100 namespaces per Amazon Web Services account. To increase
// your limit, create a ticket with Amazon Web Services Support.
//
// 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 Amazon QuickSight's
// API operation CreateNamespace for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateNamespace
func (c *QuickSight) CreateNamespace(input *CreateNamespaceInput) (*CreateNamespaceOutput, error) {
	req, out := c.CreateNamespaceRequest(input)
	return out, req.Send()
}

// CreateNamespaceWithContext is the same as CreateNamespace with the addition of
// the ability to pass a context and additional request options.
//
// See CreateNamespace 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 *QuickSight) CreateNamespaceWithContext(ctx aws.Context, input *CreateNamespaceInput, opts ...request.Option) (*CreateNamespaceOutput, error) {
	req, out := c.CreateNamespaceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateRefreshSchedule = "CreateRefreshSchedule"

// CreateRefreshScheduleRequest generates a "aws/request.Request" representing the
// client's request for the CreateRefreshSchedule 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 CreateRefreshSchedule for more information on using the CreateRefreshSchedule
// 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 CreateRefreshScheduleRequest method.
//	req, resp := client.CreateRefreshScheduleRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateRefreshSchedule
func (c *QuickSight) CreateRefreshScheduleRequest(input *CreateRefreshScheduleInput) (req *request.Request, output *CreateRefreshScheduleOutput) {
	op := &request.Operation{
		Name:       opCreateRefreshSchedule,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}/refresh-schedules",
	}

	if input == nil {
		input = &CreateRefreshScheduleInput{}
	}

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

// CreateRefreshSchedule API operation for Amazon QuickSight.
//
// Creates a refresh schedule for a dataset. You can create up to 5 different
// schedules for a single dataset.
//
// 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 Amazon QuickSight's
// API operation CreateRefreshSchedule for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateRefreshSchedule
func (c *QuickSight) CreateRefreshSchedule(input *CreateRefreshScheduleInput) (*CreateRefreshScheduleOutput, error) {
	req, out := c.CreateRefreshScheduleRequest(input)
	return out, req.Send()
}

// CreateRefreshScheduleWithContext is the same as CreateRefreshSchedule with the addition of
// the ability to pass a context and additional request options.
//
// See CreateRefreshSchedule 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 *QuickSight) CreateRefreshScheduleWithContext(ctx aws.Context, input *CreateRefreshScheduleInput, opts ...request.Option) (*CreateRefreshScheduleOutput, error) {
	req, out := c.CreateRefreshScheduleRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateRoleMembership = "CreateRoleMembership"

// CreateRoleMembershipRequest generates a "aws/request.Request" representing the
// client's request for the CreateRoleMembership 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 CreateRoleMembership for more information on using the CreateRoleMembership
// 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 CreateRoleMembershipRequest method.
//	req, resp := client.CreateRoleMembershipRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateRoleMembership
func (c *QuickSight) CreateRoleMembershipRequest(input *CreateRoleMembershipInput) (req *request.Request, output *CreateRoleMembershipOutput) {
	op := &request.Operation{
		Name:       opCreateRoleMembership,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/roles/{Role}/members/{MemberName}",
	}

	if input == nil {
		input = &CreateRoleMembershipInput{}
	}

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

// CreateRoleMembership API operation for Amazon QuickSight.
//
// Use CreateRoleMembership to add an existing Amazon QuickSight group to an
// existing role.
//
// 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 Amazon QuickSight's
// API operation CreateRoleMembership for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateRoleMembership
func (c *QuickSight) CreateRoleMembership(input *CreateRoleMembershipInput) (*CreateRoleMembershipOutput, error) {
	req, out := c.CreateRoleMembershipRequest(input)
	return out, req.Send()
}

// CreateRoleMembershipWithContext is the same as CreateRoleMembership with the addition of
// the ability to pass a context and additional request options.
//
// See CreateRoleMembership 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 *QuickSight) CreateRoleMembershipWithContext(ctx aws.Context, input *CreateRoleMembershipInput, opts ...request.Option) (*CreateRoleMembershipOutput, error) {
	req, out := c.CreateRoleMembershipRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateTemplate = "CreateTemplate"

// CreateTemplateRequest generates a "aws/request.Request" representing the
// client's request for the CreateTemplate 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 CreateTemplate for more information on using the CreateTemplate
// 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 CreateTemplateRequest method.
//	req, resp := client.CreateTemplateRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateTemplate
func (c *QuickSight) CreateTemplateRequest(input *CreateTemplateInput) (req *request.Request, output *CreateTemplateOutput) {
	op := &request.Operation{
		Name:       opCreateTemplate,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/templates/{TemplateId}",
	}

	if input == nil {
		input = &CreateTemplateInput{}
	}

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

// CreateTemplate API operation for Amazon QuickSight.
//
// Creates a template either from a TemplateDefinition or from an existing Amazon
// QuickSight analysis or template. You can use the resulting template to create
// additional dashboards, templates, or analyses.
//
// A template is an entity in Amazon QuickSight that encapsulates the metadata
// required to create an analysis and that you can use to create s dashboard.
// A template adds a layer of abstraction by using placeholders to replace the
// dataset associated with the analysis. You can use templates to create dashboards
// by replacing dataset placeholders with datasets that follow the same schema
// that was used to create the source analysis and template.
//
// 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 Amazon QuickSight's
// API operation CreateTemplate for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateTemplate
func (c *QuickSight) CreateTemplate(input *CreateTemplateInput) (*CreateTemplateOutput, error) {
	req, out := c.CreateTemplateRequest(input)
	return out, req.Send()
}

// CreateTemplateWithContext is the same as CreateTemplate with the addition of
// the ability to pass a context and additional request options.
//
// See CreateTemplate 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 *QuickSight) CreateTemplateWithContext(ctx aws.Context, input *CreateTemplateInput, opts ...request.Option) (*CreateTemplateOutput, error) {
	req, out := c.CreateTemplateRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateTemplateAlias = "CreateTemplateAlias"

// CreateTemplateAliasRequest generates a "aws/request.Request" representing the
// client's request for the CreateTemplateAlias 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 CreateTemplateAlias for more information on using the CreateTemplateAlias
// 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 CreateTemplateAliasRequest method.
//	req, resp := client.CreateTemplateAliasRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateTemplateAlias
func (c *QuickSight) CreateTemplateAliasRequest(input *CreateTemplateAliasInput) (req *request.Request, output *CreateTemplateAliasOutput) {
	op := &request.Operation{
		Name:       opCreateTemplateAlias,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/templates/{TemplateId}/aliases/{AliasName}",
	}

	if input == nil {
		input = &CreateTemplateAliasInput{}
	}

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

// CreateTemplateAlias API operation for Amazon QuickSight.
//
// Creates a template alias for a template.
//
// 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 Amazon QuickSight's
// API operation CreateTemplateAlias for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateTemplateAlias
func (c *QuickSight) CreateTemplateAlias(input *CreateTemplateAliasInput) (*CreateTemplateAliasOutput, error) {
	req, out := c.CreateTemplateAliasRequest(input)
	return out, req.Send()
}

// CreateTemplateAliasWithContext is the same as CreateTemplateAlias with the addition of
// the ability to pass a context and additional request options.
//
// See CreateTemplateAlias 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 *QuickSight) CreateTemplateAliasWithContext(ctx aws.Context, input *CreateTemplateAliasInput, opts ...request.Option) (*CreateTemplateAliasOutput, error) {
	req, out := c.CreateTemplateAliasRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateTheme = "CreateTheme"

// CreateThemeRequest generates a "aws/request.Request" representing the
// client's request for the CreateTheme 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 CreateTheme for more information on using the CreateTheme
// 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 CreateThemeRequest method.
//	req, resp := client.CreateThemeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateTheme
func (c *QuickSight) CreateThemeRequest(input *CreateThemeInput) (req *request.Request, output *CreateThemeOutput) {
	op := &request.Operation{
		Name:       opCreateTheme,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/themes/{ThemeId}",
	}

	if input == nil {
		input = &CreateThemeInput{}
	}

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

// CreateTheme API operation for Amazon QuickSight.
//
// Creates a theme.
//
// A theme is set of configuration options for color and layout. Themes apply
// to analyses and dashboards. For more information, see Using Themes in Amazon
// QuickSight (https://docs.aws.amazon.com/quicksight/latest/user/themes-in-quicksight.html)
// in the Amazon QuickSight User Guide.
//
// 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 Amazon QuickSight's
// API operation CreateTheme for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateTheme
func (c *QuickSight) CreateTheme(input *CreateThemeInput) (*CreateThemeOutput, error) {
	req, out := c.CreateThemeRequest(input)
	return out, req.Send()
}

// CreateThemeWithContext is the same as CreateTheme with the addition of
// the ability to pass a context and additional request options.
//
// See CreateTheme 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 *QuickSight) CreateThemeWithContext(ctx aws.Context, input *CreateThemeInput, opts ...request.Option) (*CreateThemeOutput, error) {
	req, out := c.CreateThemeRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateThemeAlias = "CreateThemeAlias"

// CreateThemeAliasRequest generates a "aws/request.Request" representing the
// client's request for the CreateThemeAlias 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 CreateThemeAlias for more information on using the CreateThemeAlias
// 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 CreateThemeAliasRequest method.
//	req, resp := client.CreateThemeAliasRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateThemeAlias
func (c *QuickSight) CreateThemeAliasRequest(input *CreateThemeAliasInput) (req *request.Request, output *CreateThemeAliasOutput) {
	op := &request.Operation{
		Name:       opCreateThemeAlias,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/themes/{ThemeId}/aliases/{AliasName}",
	}

	if input == nil {
		input = &CreateThemeAliasInput{}
	}

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

// CreateThemeAlias API operation for Amazon QuickSight.
//
// Creates a theme alias for a theme.
//
// 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 Amazon QuickSight's
// API operation CreateThemeAlias for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateThemeAlias
func (c *QuickSight) CreateThemeAlias(input *CreateThemeAliasInput) (*CreateThemeAliasOutput, error) {
	req, out := c.CreateThemeAliasRequest(input)
	return out, req.Send()
}

// CreateThemeAliasWithContext is the same as CreateThemeAlias with the addition of
// the ability to pass a context and additional request options.
//
// See CreateThemeAlias 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 *QuickSight) CreateThemeAliasWithContext(ctx aws.Context, input *CreateThemeAliasInput, opts ...request.Option) (*CreateThemeAliasOutput, error) {
	req, out := c.CreateThemeAliasRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateTopic = "CreateTopic"

// CreateTopicRequest generates a "aws/request.Request" representing the
// client's request for the CreateTopic 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 CreateTopic for more information on using the CreateTopic
// 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 CreateTopicRequest method.
//	req, resp := client.CreateTopicRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateTopic
func (c *QuickSight) CreateTopicRequest(input *CreateTopicInput) (req *request.Request, output *CreateTopicOutput) {
	op := &request.Operation{
		Name:       opCreateTopic,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/topics",
	}

	if input == nil {
		input = &CreateTopicInput{}
	}

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

// CreateTopic API operation for Amazon QuickSight.
//
// Creates a new Q topic.
//
// 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 Amazon QuickSight's
// API operation CreateTopic for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateTopic
func (c *QuickSight) CreateTopic(input *CreateTopicInput) (*CreateTopicOutput, error) {
	req, out := c.CreateTopicRequest(input)
	return out, req.Send()
}

// CreateTopicWithContext is the same as CreateTopic with the addition of
// the ability to pass a context and additional request options.
//
// See CreateTopic 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 *QuickSight) CreateTopicWithContext(ctx aws.Context, input *CreateTopicInput, opts ...request.Option) (*CreateTopicOutput, error) {
	req, out := c.CreateTopicRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateTopicRefreshSchedule = "CreateTopicRefreshSchedule"

// CreateTopicRefreshScheduleRequest generates a "aws/request.Request" representing the
// client's request for the CreateTopicRefreshSchedule 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 CreateTopicRefreshSchedule for more information on using the CreateTopicRefreshSchedule
// 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 CreateTopicRefreshScheduleRequest method.
//	req, resp := client.CreateTopicRefreshScheduleRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateTopicRefreshSchedule
func (c *QuickSight) CreateTopicRefreshScheduleRequest(input *CreateTopicRefreshScheduleInput) (req *request.Request, output *CreateTopicRefreshScheduleOutput) {
	op := &request.Operation{
		Name:       opCreateTopicRefreshSchedule,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/topics/{TopicId}/schedules",
	}

	if input == nil {
		input = &CreateTopicRefreshScheduleInput{}
	}

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

// CreateTopicRefreshSchedule API operation for Amazon QuickSight.
//
// Creates a topic refresh schedule.
//
// 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 Amazon QuickSight's
// API operation CreateTopicRefreshSchedule for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateTopicRefreshSchedule
func (c *QuickSight) CreateTopicRefreshSchedule(input *CreateTopicRefreshScheduleInput) (*CreateTopicRefreshScheduleOutput, error) {
	req, out := c.CreateTopicRefreshScheduleRequest(input)
	return out, req.Send()
}

// CreateTopicRefreshScheduleWithContext is the same as CreateTopicRefreshSchedule with the addition of
// the ability to pass a context and additional request options.
//
// See CreateTopicRefreshSchedule 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 *QuickSight) CreateTopicRefreshScheduleWithContext(ctx aws.Context, input *CreateTopicRefreshScheduleInput, opts ...request.Option) (*CreateTopicRefreshScheduleOutput, error) {
	req, out := c.CreateTopicRefreshScheduleRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opCreateVPCConnection = "CreateVPCConnection"

// CreateVPCConnectionRequest generates a "aws/request.Request" representing the
// client's request for the CreateVPCConnection 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 CreateVPCConnection for more information on using the CreateVPCConnection
// 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 CreateVPCConnectionRequest method.
//	req, resp := client.CreateVPCConnectionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateVPCConnection
func (c *QuickSight) CreateVPCConnectionRequest(input *CreateVPCConnectionInput) (req *request.Request, output *CreateVPCConnectionOutput) {
	op := &request.Operation{
		Name:       opCreateVPCConnection,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/vpc-connections",
	}

	if input == nil {
		input = &CreateVPCConnectionInput{}
	}

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

// CreateVPCConnection API operation for Amazon QuickSight.
//
// Creates a new VPC connection.
//
// 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 Amazon QuickSight's
// API operation CreateVPCConnection for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/CreateVPCConnection
func (c *QuickSight) CreateVPCConnection(input *CreateVPCConnectionInput) (*CreateVPCConnectionOutput, error) {
	req, out := c.CreateVPCConnectionRequest(input)
	return out, req.Send()
}

// CreateVPCConnectionWithContext is the same as CreateVPCConnection with the addition of
// the ability to pass a context and additional request options.
//
// See CreateVPCConnection 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 *QuickSight) CreateVPCConnectionWithContext(ctx aws.Context, input *CreateVPCConnectionInput, opts ...request.Option) (*CreateVPCConnectionOutput, error) {
	req, out := c.CreateVPCConnectionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteAccountCustomization = "DeleteAccountCustomization"

// DeleteAccountCustomizationRequest generates a "aws/request.Request" representing the
// client's request for the DeleteAccountCustomization 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 DeleteAccountCustomization for more information on using the DeleteAccountCustomization
// 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 DeleteAccountCustomizationRequest method.
//	req, resp := client.DeleteAccountCustomizationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteAccountCustomization
func (c *QuickSight) DeleteAccountCustomizationRequest(input *DeleteAccountCustomizationInput) (req *request.Request, output *DeleteAccountCustomizationOutput) {
	op := &request.Operation{
		Name:       opDeleteAccountCustomization,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/customizations",
	}

	if input == nil {
		input = &DeleteAccountCustomizationInput{}
	}

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

// DeleteAccountCustomization API operation for Amazon QuickSight.
//
// Deletes all Amazon QuickSight customizations in this Amazon Web Services
// Region for the specified Amazon Web Services account and Amazon QuickSight
// namespace.
//
// 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 Amazon QuickSight's
// API operation DeleteAccountCustomization for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteAccountCustomization
func (c *QuickSight) DeleteAccountCustomization(input *DeleteAccountCustomizationInput) (*DeleteAccountCustomizationOutput, error) {
	req, out := c.DeleteAccountCustomizationRequest(input)
	return out, req.Send()
}

// DeleteAccountCustomizationWithContext is the same as DeleteAccountCustomization with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteAccountCustomization 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 *QuickSight) DeleteAccountCustomizationWithContext(ctx aws.Context, input *DeleteAccountCustomizationInput, opts ...request.Option) (*DeleteAccountCustomizationOutput, error) {
	req, out := c.DeleteAccountCustomizationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteAccountSubscription = "DeleteAccountSubscription"

// DeleteAccountSubscriptionRequest generates a "aws/request.Request" representing the
// client's request for the DeleteAccountSubscription 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 DeleteAccountSubscription for more information on using the DeleteAccountSubscription
// 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 DeleteAccountSubscriptionRequest method.
//	req, resp := client.DeleteAccountSubscriptionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteAccountSubscription
func (c *QuickSight) DeleteAccountSubscriptionRequest(input *DeleteAccountSubscriptionInput) (req *request.Request, output *DeleteAccountSubscriptionOutput) {
	op := &request.Operation{
		Name:       opDeleteAccountSubscription,
		HTTPMethod: "DELETE",
		HTTPPath:   "/account/{AwsAccountId}",
	}

	if input == nil {
		input = &DeleteAccountSubscriptionInput{}
	}

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

// DeleteAccountSubscription API operation for Amazon QuickSight.
//
// Use the DeleteAccountSubscription operation to delete an Amazon QuickSight
// account. This operation will result in an error message if you have configured
// your account termination protection settings to True. To change this setting
// and delete your account, call the UpdateAccountSettings API and set the value
// of the TerminationProtectionEnabled parameter to False, then make another
// call to the DeleteAccountSubscription 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 Amazon QuickSight's
// API operation DeleteAccountSubscription for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteAccountSubscription
func (c *QuickSight) DeleteAccountSubscription(input *DeleteAccountSubscriptionInput) (*DeleteAccountSubscriptionOutput, error) {
	req, out := c.DeleteAccountSubscriptionRequest(input)
	return out, req.Send()
}

// DeleteAccountSubscriptionWithContext is the same as DeleteAccountSubscription with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteAccountSubscription 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 *QuickSight) DeleteAccountSubscriptionWithContext(ctx aws.Context, input *DeleteAccountSubscriptionInput, opts ...request.Option) (*DeleteAccountSubscriptionOutput, error) {
	req, out := c.DeleteAccountSubscriptionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteAnalysis = "DeleteAnalysis"

// DeleteAnalysisRequest generates a "aws/request.Request" representing the
// client's request for the DeleteAnalysis 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 DeleteAnalysis for more information on using the DeleteAnalysis
// 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 DeleteAnalysisRequest method.
//	req, resp := client.DeleteAnalysisRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteAnalysis
func (c *QuickSight) DeleteAnalysisRequest(input *DeleteAnalysisInput) (req *request.Request, output *DeleteAnalysisOutput) {
	op := &request.Operation{
		Name:       opDeleteAnalysis,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/analyses/{AnalysisId}",
	}

	if input == nil {
		input = &DeleteAnalysisInput{}
	}

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

// DeleteAnalysis API operation for Amazon QuickSight.
//
// Deletes an analysis from Amazon QuickSight. You can optionally include a
// recovery window during which you can restore the analysis. If you don't specify
// a recovery window value, the operation defaults to 30 days. Amazon QuickSight
// attaches a DeletionTime stamp to the response that specifies the end of the
// recovery window. At the end of the recovery window, Amazon QuickSight deletes
// the analysis permanently.
//
// At any time before recovery window ends, you can use the RestoreAnalysis
// API operation to remove the DeletionTime stamp and cancel the deletion of
// the analysis. The analysis remains visible in the API until it's deleted,
// so you can describe it but you can't make a template from it.
//
// An analysis that's scheduled for deletion isn't accessible in the Amazon
// QuickSight console. To access it in the console, restore it. Deleting an
// analysis doesn't delete the dashboards that you publish from it.
//
// 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 Amazon QuickSight's
// API operation DeleteAnalysis for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteAnalysis
func (c *QuickSight) DeleteAnalysis(input *DeleteAnalysisInput) (*DeleteAnalysisOutput, error) {
	req, out := c.DeleteAnalysisRequest(input)
	return out, req.Send()
}

// DeleteAnalysisWithContext is the same as DeleteAnalysis with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteAnalysis 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 *QuickSight) DeleteAnalysisWithContext(ctx aws.Context, input *DeleteAnalysisInput, opts ...request.Option) (*DeleteAnalysisOutput, error) {
	req, out := c.DeleteAnalysisRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteDashboard = "DeleteDashboard"

// DeleteDashboardRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDashboard 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 DeleteDashboard for more information on using the DeleteDashboard
// 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 DeleteDashboardRequest method.
//	req, resp := client.DeleteDashboardRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteDashboard
func (c *QuickSight) DeleteDashboardRequest(input *DeleteDashboardInput) (req *request.Request, output *DeleteDashboardOutput) {
	op := &request.Operation{
		Name:       opDeleteDashboard,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/dashboards/{DashboardId}",
	}

	if input == nil {
		input = &DeleteDashboardInput{}
	}

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

// DeleteDashboard API operation for Amazon QuickSight.
//
// Deletes a dashboard.
//
// 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 Amazon QuickSight's
// API operation DeleteDashboard for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteDashboard
func (c *QuickSight) DeleteDashboard(input *DeleteDashboardInput) (*DeleteDashboardOutput, error) {
	req, out := c.DeleteDashboardRequest(input)
	return out, req.Send()
}

// DeleteDashboardWithContext is the same as DeleteDashboard with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteDashboard 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 *QuickSight) DeleteDashboardWithContext(ctx aws.Context, input *DeleteDashboardInput, opts ...request.Option) (*DeleteDashboardOutput, error) {
	req, out := c.DeleteDashboardRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteDataSet = "DeleteDataSet"

// DeleteDataSetRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDataSet 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 DeleteDataSet for more information on using the DeleteDataSet
// 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 DeleteDataSetRequest method.
//	req, resp := client.DeleteDataSetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteDataSet
func (c *QuickSight) DeleteDataSetRequest(input *DeleteDataSetInput) (req *request.Request, output *DeleteDataSetOutput) {
	op := &request.Operation{
		Name:       opDeleteDataSet,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}",
	}

	if input == nil {
		input = &DeleteDataSetInput{}
	}

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

// DeleteDataSet API operation for Amazon QuickSight.
//
// Deletes a dataset.
//
// 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 Amazon QuickSight's
// API operation DeleteDataSet for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteDataSet
func (c *QuickSight) DeleteDataSet(input *DeleteDataSetInput) (*DeleteDataSetOutput, error) {
	req, out := c.DeleteDataSetRequest(input)
	return out, req.Send()
}

// DeleteDataSetWithContext is the same as DeleteDataSet with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteDataSet 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 *QuickSight) DeleteDataSetWithContext(ctx aws.Context, input *DeleteDataSetInput, opts ...request.Option) (*DeleteDataSetOutput, error) {
	req, out := c.DeleteDataSetRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteDataSetRefreshProperties = "DeleteDataSetRefreshProperties"

// DeleteDataSetRefreshPropertiesRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDataSetRefreshProperties 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 DeleteDataSetRefreshProperties for more information on using the DeleteDataSetRefreshProperties
// 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 DeleteDataSetRefreshPropertiesRequest method.
//	req, resp := client.DeleteDataSetRefreshPropertiesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteDataSetRefreshProperties
func (c *QuickSight) DeleteDataSetRefreshPropertiesRequest(input *DeleteDataSetRefreshPropertiesInput) (req *request.Request, output *DeleteDataSetRefreshPropertiesOutput) {
	op := &request.Operation{
		Name:       opDeleteDataSetRefreshProperties,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}/refresh-properties",
	}

	if input == nil {
		input = &DeleteDataSetRefreshPropertiesInput{}
	}

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

// DeleteDataSetRefreshProperties API operation for Amazon QuickSight.
//
// Deletes the dataset refresh properties of the dataset.
//
// 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 Amazon QuickSight's
// API operation DeleteDataSetRefreshProperties for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteDataSetRefreshProperties
func (c *QuickSight) DeleteDataSetRefreshProperties(input *DeleteDataSetRefreshPropertiesInput) (*DeleteDataSetRefreshPropertiesOutput, error) {
	req, out := c.DeleteDataSetRefreshPropertiesRequest(input)
	return out, req.Send()
}

// DeleteDataSetRefreshPropertiesWithContext is the same as DeleteDataSetRefreshProperties with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteDataSetRefreshProperties 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 *QuickSight) DeleteDataSetRefreshPropertiesWithContext(ctx aws.Context, input *DeleteDataSetRefreshPropertiesInput, opts ...request.Option) (*DeleteDataSetRefreshPropertiesOutput, error) {
	req, out := c.DeleteDataSetRefreshPropertiesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteDataSource = "DeleteDataSource"

// DeleteDataSourceRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDataSource 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 DeleteDataSource for more information on using the DeleteDataSource
// 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 DeleteDataSourceRequest method.
//	req, resp := client.DeleteDataSourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteDataSource
func (c *QuickSight) DeleteDataSourceRequest(input *DeleteDataSourceInput) (req *request.Request, output *DeleteDataSourceOutput) {
	op := &request.Operation{
		Name:       opDeleteDataSource,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sources/{DataSourceId}",
	}

	if input == nil {
		input = &DeleteDataSourceInput{}
	}

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

// DeleteDataSource API operation for Amazon QuickSight.
//
// Deletes the data source permanently. This operation breaks all the datasets
// that reference the deleted data source.
//
// 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 Amazon QuickSight's
// API operation DeleteDataSource for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteDataSource
func (c *QuickSight) DeleteDataSource(input *DeleteDataSourceInput) (*DeleteDataSourceOutput, error) {
	req, out := c.DeleteDataSourceRequest(input)
	return out, req.Send()
}

// DeleteDataSourceWithContext is the same as DeleteDataSource with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteDataSource 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 *QuickSight) DeleteDataSourceWithContext(ctx aws.Context, input *DeleteDataSourceInput, opts ...request.Option) (*DeleteDataSourceOutput, error) {
	req, out := c.DeleteDataSourceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteFolder = "DeleteFolder"

// DeleteFolderRequest generates a "aws/request.Request" representing the
// client's request for the DeleteFolder 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 DeleteFolder for more information on using the DeleteFolder
// 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 DeleteFolderRequest method.
//	req, resp := client.DeleteFolderRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteFolder
func (c *QuickSight) DeleteFolderRequest(input *DeleteFolderInput) (req *request.Request, output *DeleteFolderOutput) {
	op := &request.Operation{
		Name:       opDeleteFolder,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/folders/{FolderId}",
	}

	if input == nil {
		input = &DeleteFolderInput{}
	}

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

// DeleteFolder API operation for Amazon QuickSight.
//
// Deletes an empty folder.
//
// 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 Amazon QuickSight's
// API operation DeleteFolder for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteFolder
func (c *QuickSight) DeleteFolder(input *DeleteFolderInput) (*DeleteFolderOutput, error) {
	req, out := c.DeleteFolderRequest(input)
	return out, req.Send()
}

// DeleteFolderWithContext is the same as DeleteFolder with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteFolder 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 *QuickSight) DeleteFolderWithContext(ctx aws.Context, input *DeleteFolderInput, opts ...request.Option) (*DeleteFolderOutput, error) {
	req, out := c.DeleteFolderRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteFolderMembership = "DeleteFolderMembership"

// DeleteFolderMembershipRequest generates a "aws/request.Request" representing the
// client's request for the DeleteFolderMembership 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 DeleteFolderMembership for more information on using the DeleteFolderMembership
// 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 DeleteFolderMembershipRequest method.
//	req, resp := client.DeleteFolderMembershipRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteFolderMembership
func (c *QuickSight) DeleteFolderMembershipRequest(input *DeleteFolderMembershipInput) (req *request.Request, output *DeleteFolderMembershipOutput) {
	op := &request.Operation{
		Name:       opDeleteFolderMembership,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/folders/{FolderId}/members/{MemberType}/{MemberId}",
	}

	if input == nil {
		input = &DeleteFolderMembershipInput{}
	}

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

// DeleteFolderMembership API operation for Amazon QuickSight.
//
// Removes an asset, such as a dashboard, analysis, or dataset, from a folder.
//
// 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 Amazon QuickSight's
// API operation DeleteFolderMembership for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteFolderMembership
func (c *QuickSight) DeleteFolderMembership(input *DeleteFolderMembershipInput) (*DeleteFolderMembershipOutput, error) {
	req, out := c.DeleteFolderMembershipRequest(input)
	return out, req.Send()
}

// DeleteFolderMembershipWithContext is the same as DeleteFolderMembership with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteFolderMembership 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 *QuickSight) DeleteFolderMembershipWithContext(ctx aws.Context, input *DeleteFolderMembershipInput, opts ...request.Option) (*DeleteFolderMembershipOutput, error) {
	req, out := c.DeleteFolderMembershipRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteGroup = "DeleteGroup"

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

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

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

// DeleteGroup API operation for Amazon QuickSight.
//
// Removes a user group from Amazon QuickSight.
//
// 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 Amazon QuickSight's
// API operation DeleteGroup for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteGroup
func (c *QuickSight) DeleteGroup(input *DeleteGroupInput) (*DeleteGroupOutput, error) {
	req, out := c.DeleteGroupRequest(input)
	return out, req.Send()
}

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

const opDeleteGroupMembership = "DeleteGroupMembership"

// DeleteGroupMembershipRequest generates a "aws/request.Request" representing the
// client's request for the DeleteGroupMembership 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 DeleteGroupMembership for more information on using the DeleteGroupMembership
// 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 DeleteGroupMembershipRequest method.
//	req, resp := client.DeleteGroupMembershipRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteGroupMembership
func (c *QuickSight) DeleteGroupMembershipRequest(input *DeleteGroupMembershipInput) (req *request.Request, output *DeleteGroupMembershipOutput) {
	op := &request.Operation{
		Name:       opDeleteGroupMembership,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups/{GroupName}/members/{MemberName}",
	}

	if input == nil {
		input = &DeleteGroupMembershipInput{}
	}

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

// DeleteGroupMembership API operation for Amazon QuickSight.
//
// Removes a user from a group so that the user is no longer a member of the
// group.
//
// 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 Amazon QuickSight's
// API operation DeleteGroupMembership for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteGroupMembership
func (c *QuickSight) DeleteGroupMembership(input *DeleteGroupMembershipInput) (*DeleteGroupMembershipOutput, error) {
	req, out := c.DeleteGroupMembershipRequest(input)
	return out, req.Send()
}

// DeleteGroupMembershipWithContext is the same as DeleteGroupMembership with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteGroupMembership 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 *QuickSight) DeleteGroupMembershipWithContext(ctx aws.Context, input *DeleteGroupMembershipInput, opts ...request.Option) (*DeleteGroupMembershipOutput, error) {
	req, out := c.DeleteGroupMembershipRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteIAMPolicyAssignment = "DeleteIAMPolicyAssignment"

// DeleteIAMPolicyAssignmentRequest generates a "aws/request.Request" representing the
// client's request for the DeleteIAMPolicyAssignment 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 DeleteIAMPolicyAssignment for more information on using the DeleteIAMPolicyAssignment
// 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 DeleteIAMPolicyAssignmentRequest method.
//	req, resp := client.DeleteIAMPolicyAssignmentRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteIAMPolicyAssignment
func (c *QuickSight) DeleteIAMPolicyAssignmentRequest(input *DeleteIAMPolicyAssignmentInput) (req *request.Request, output *DeleteIAMPolicyAssignmentOutput) {
	op := &request.Operation{
		Name:       opDeleteIAMPolicyAssignment,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/namespace/{Namespace}/iam-policy-assignments/{AssignmentName}",
	}

	if input == nil {
		input = &DeleteIAMPolicyAssignmentInput{}
	}

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

// DeleteIAMPolicyAssignment API operation for Amazon QuickSight.
//
// Deletes an existing IAM policy assignment.
//
// 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 Amazon QuickSight's
// API operation DeleteIAMPolicyAssignment for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ConcurrentUpdatingException
//     A resource is already in a state that indicates an operation is happening
//     that must complete before a new update can be applied.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteIAMPolicyAssignment
func (c *QuickSight) DeleteIAMPolicyAssignment(input *DeleteIAMPolicyAssignmentInput) (*DeleteIAMPolicyAssignmentOutput, error) {
	req, out := c.DeleteIAMPolicyAssignmentRequest(input)
	return out, req.Send()
}

// DeleteIAMPolicyAssignmentWithContext is the same as DeleteIAMPolicyAssignment with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteIAMPolicyAssignment 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 *QuickSight) DeleteIAMPolicyAssignmentWithContext(ctx aws.Context, input *DeleteIAMPolicyAssignmentInput, opts ...request.Option) (*DeleteIAMPolicyAssignmentOutput, error) {
	req, out := c.DeleteIAMPolicyAssignmentRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteIdentityPropagationConfig = "DeleteIdentityPropagationConfig"

// DeleteIdentityPropagationConfigRequest generates a "aws/request.Request" representing the
// client's request for the DeleteIdentityPropagationConfig 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 DeleteIdentityPropagationConfig for more information on using the DeleteIdentityPropagationConfig
// 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 DeleteIdentityPropagationConfigRequest method.
//	req, resp := client.DeleteIdentityPropagationConfigRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteIdentityPropagationConfig
func (c *QuickSight) DeleteIdentityPropagationConfigRequest(input *DeleteIdentityPropagationConfigInput) (req *request.Request, output *DeleteIdentityPropagationConfigOutput) {
	op := &request.Operation{
		Name:       opDeleteIdentityPropagationConfig,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/identity-propagation-config/{Service}",
	}

	if input == nil {
		input = &DeleteIdentityPropagationConfigInput{}
	}

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

// DeleteIdentityPropagationConfig API operation for Amazon QuickSight.
//
// Deletes all access scopes and authorized targets that are associated with
// a service from the Amazon QuickSight IAM Identity Center application.
//
// This operation is only supported for Amazon QuickSight accounts that use
// IAM Identity Center.
//
// 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 Amazon QuickSight's
// API operation DeleteIdentityPropagationConfig for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteIdentityPropagationConfig
func (c *QuickSight) DeleteIdentityPropagationConfig(input *DeleteIdentityPropagationConfigInput) (*DeleteIdentityPropagationConfigOutput, error) {
	req, out := c.DeleteIdentityPropagationConfigRequest(input)
	return out, req.Send()
}

// DeleteIdentityPropagationConfigWithContext is the same as DeleteIdentityPropagationConfig with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteIdentityPropagationConfig 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 *QuickSight) DeleteIdentityPropagationConfigWithContext(ctx aws.Context, input *DeleteIdentityPropagationConfigInput, opts ...request.Option) (*DeleteIdentityPropagationConfigOutput, error) {
	req, out := c.DeleteIdentityPropagationConfigRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteNamespace = "DeleteNamespace"

// DeleteNamespaceRequest generates a "aws/request.Request" representing the
// client's request for the DeleteNamespace 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 DeleteNamespace for more information on using the DeleteNamespace
// 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 DeleteNamespaceRequest method.
//	req, resp := client.DeleteNamespaceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteNamespace
func (c *QuickSight) DeleteNamespaceRequest(input *DeleteNamespaceInput) (req *request.Request, output *DeleteNamespaceOutput) {
	op := &request.Operation{
		Name:       opDeleteNamespace,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}",
	}

	if input == nil {
		input = &DeleteNamespaceInput{}
	}

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

// DeleteNamespace API operation for Amazon QuickSight.
//
// Deletes a namespace and the users and groups that are associated with the
// namespace. This is an asynchronous process. Assets including dashboards,
// analyses, datasets and data sources are not deleted. To delete these assets,
// you use the API operations for the relevant asset.
//
// 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 Amazon QuickSight's
// API operation DeleteNamespace for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteNamespace
func (c *QuickSight) DeleteNamespace(input *DeleteNamespaceInput) (*DeleteNamespaceOutput, error) {
	req, out := c.DeleteNamespaceRequest(input)
	return out, req.Send()
}

// DeleteNamespaceWithContext is the same as DeleteNamespace with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteNamespace 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 *QuickSight) DeleteNamespaceWithContext(ctx aws.Context, input *DeleteNamespaceInput, opts ...request.Option) (*DeleteNamespaceOutput, error) {
	req, out := c.DeleteNamespaceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteRefreshSchedule = "DeleteRefreshSchedule"

// DeleteRefreshScheduleRequest generates a "aws/request.Request" representing the
// client's request for the DeleteRefreshSchedule 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 DeleteRefreshSchedule for more information on using the DeleteRefreshSchedule
// 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 DeleteRefreshScheduleRequest method.
//	req, resp := client.DeleteRefreshScheduleRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteRefreshSchedule
func (c *QuickSight) DeleteRefreshScheduleRequest(input *DeleteRefreshScheduleInput) (req *request.Request, output *DeleteRefreshScheduleOutput) {
	op := &request.Operation{
		Name:       opDeleteRefreshSchedule,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}/refresh-schedules/{ScheduleId}",
	}

	if input == nil {
		input = &DeleteRefreshScheduleInput{}
	}

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

// DeleteRefreshSchedule API operation for Amazon QuickSight.
//
// Deletes a refresh schedule from a dataset.
//
// 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 Amazon QuickSight's
// API operation DeleteRefreshSchedule for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteRefreshSchedule
func (c *QuickSight) DeleteRefreshSchedule(input *DeleteRefreshScheduleInput) (*DeleteRefreshScheduleOutput, error) {
	req, out := c.DeleteRefreshScheduleRequest(input)
	return out, req.Send()
}

// DeleteRefreshScheduleWithContext is the same as DeleteRefreshSchedule with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteRefreshSchedule 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 *QuickSight) DeleteRefreshScheduleWithContext(ctx aws.Context, input *DeleteRefreshScheduleInput, opts ...request.Option) (*DeleteRefreshScheduleOutput, error) {
	req, out := c.DeleteRefreshScheduleRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteRoleCustomPermission = "DeleteRoleCustomPermission"

// DeleteRoleCustomPermissionRequest generates a "aws/request.Request" representing the
// client's request for the DeleteRoleCustomPermission 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 DeleteRoleCustomPermission for more information on using the DeleteRoleCustomPermission
// 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 DeleteRoleCustomPermissionRequest method.
//	req, resp := client.DeleteRoleCustomPermissionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteRoleCustomPermission
func (c *QuickSight) DeleteRoleCustomPermissionRequest(input *DeleteRoleCustomPermissionInput) (req *request.Request, output *DeleteRoleCustomPermissionOutput) {
	op := &request.Operation{
		Name:       opDeleteRoleCustomPermission,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/roles/{Role}/custom-permission",
	}

	if input == nil {
		input = &DeleteRoleCustomPermissionInput{}
	}

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

// DeleteRoleCustomPermission API operation for Amazon QuickSight.
//
// Removes custom permissions from the role.
//
// 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 Amazon QuickSight's
// API operation DeleteRoleCustomPermission for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteRoleCustomPermission
func (c *QuickSight) DeleteRoleCustomPermission(input *DeleteRoleCustomPermissionInput) (*DeleteRoleCustomPermissionOutput, error) {
	req, out := c.DeleteRoleCustomPermissionRequest(input)
	return out, req.Send()
}

// DeleteRoleCustomPermissionWithContext is the same as DeleteRoleCustomPermission with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteRoleCustomPermission 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 *QuickSight) DeleteRoleCustomPermissionWithContext(ctx aws.Context, input *DeleteRoleCustomPermissionInput, opts ...request.Option) (*DeleteRoleCustomPermissionOutput, error) {
	req, out := c.DeleteRoleCustomPermissionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteRoleMembership = "DeleteRoleMembership"

// DeleteRoleMembershipRequest generates a "aws/request.Request" representing the
// client's request for the DeleteRoleMembership 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 DeleteRoleMembership for more information on using the DeleteRoleMembership
// 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 DeleteRoleMembershipRequest method.
//	req, resp := client.DeleteRoleMembershipRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteRoleMembership
func (c *QuickSight) DeleteRoleMembershipRequest(input *DeleteRoleMembershipInput) (req *request.Request, output *DeleteRoleMembershipOutput) {
	op := &request.Operation{
		Name:       opDeleteRoleMembership,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/roles/{Role}/members/{MemberName}",
	}

	if input == nil {
		input = &DeleteRoleMembershipInput{}
	}

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

// DeleteRoleMembership API operation for Amazon QuickSight.
//
// Removes a group from a role.
//
// 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 Amazon QuickSight's
// API operation DeleteRoleMembership for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteRoleMembership
func (c *QuickSight) DeleteRoleMembership(input *DeleteRoleMembershipInput) (*DeleteRoleMembershipOutput, error) {
	req, out := c.DeleteRoleMembershipRequest(input)
	return out, req.Send()
}

// DeleteRoleMembershipWithContext is the same as DeleteRoleMembership with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteRoleMembership 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 *QuickSight) DeleteRoleMembershipWithContext(ctx aws.Context, input *DeleteRoleMembershipInput, opts ...request.Option) (*DeleteRoleMembershipOutput, error) {
	req, out := c.DeleteRoleMembershipRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteTemplate = "DeleteTemplate"

// DeleteTemplateRequest generates a "aws/request.Request" representing the
// client's request for the DeleteTemplate 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 DeleteTemplate for more information on using the DeleteTemplate
// 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 DeleteTemplateRequest method.
//	req, resp := client.DeleteTemplateRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteTemplate
func (c *QuickSight) DeleteTemplateRequest(input *DeleteTemplateInput) (req *request.Request, output *DeleteTemplateOutput) {
	op := &request.Operation{
		Name:       opDeleteTemplate,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/templates/{TemplateId}",
	}

	if input == nil {
		input = &DeleteTemplateInput{}
	}

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

// DeleteTemplate API operation for Amazon QuickSight.
//
// Deletes a template.
//
// 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 Amazon QuickSight's
// API operation DeleteTemplate for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteTemplate
func (c *QuickSight) DeleteTemplate(input *DeleteTemplateInput) (*DeleteTemplateOutput, error) {
	req, out := c.DeleteTemplateRequest(input)
	return out, req.Send()
}

// DeleteTemplateWithContext is the same as DeleteTemplate with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteTemplate 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 *QuickSight) DeleteTemplateWithContext(ctx aws.Context, input *DeleteTemplateInput, opts ...request.Option) (*DeleteTemplateOutput, error) {
	req, out := c.DeleteTemplateRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteTemplateAlias = "DeleteTemplateAlias"

// DeleteTemplateAliasRequest generates a "aws/request.Request" representing the
// client's request for the DeleteTemplateAlias 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 DeleteTemplateAlias for more information on using the DeleteTemplateAlias
// 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 DeleteTemplateAliasRequest method.
//	req, resp := client.DeleteTemplateAliasRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteTemplateAlias
func (c *QuickSight) DeleteTemplateAliasRequest(input *DeleteTemplateAliasInput) (req *request.Request, output *DeleteTemplateAliasOutput) {
	op := &request.Operation{
		Name:       opDeleteTemplateAlias,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/templates/{TemplateId}/aliases/{AliasName}",
	}

	if input == nil {
		input = &DeleteTemplateAliasInput{}
	}

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

// DeleteTemplateAlias API operation for Amazon QuickSight.
//
// Deletes the item that the specified template alias points to. If you provide
// a specific alias, you delete the version of the template that the alias points
// to.
//
// 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 Amazon QuickSight's
// API operation DeleteTemplateAlias for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteTemplateAlias
func (c *QuickSight) DeleteTemplateAlias(input *DeleteTemplateAliasInput) (*DeleteTemplateAliasOutput, error) {
	req, out := c.DeleteTemplateAliasRequest(input)
	return out, req.Send()
}

// DeleteTemplateAliasWithContext is the same as DeleteTemplateAlias with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteTemplateAlias 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 *QuickSight) DeleteTemplateAliasWithContext(ctx aws.Context, input *DeleteTemplateAliasInput, opts ...request.Option) (*DeleteTemplateAliasOutput, error) {
	req, out := c.DeleteTemplateAliasRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteTheme = "DeleteTheme"

// DeleteThemeRequest generates a "aws/request.Request" representing the
// client's request for the DeleteTheme 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 DeleteTheme for more information on using the DeleteTheme
// 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 DeleteThemeRequest method.
//	req, resp := client.DeleteThemeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteTheme
func (c *QuickSight) DeleteThemeRequest(input *DeleteThemeInput) (req *request.Request, output *DeleteThemeOutput) {
	op := &request.Operation{
		Name:       opDeleteTheme,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/themes/{ThemeId}",
	}

	if input == nil {
		input = &DeleteThemeInput{}
	}

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

// DeleteTheme API operation for Amazon QuickSight.
//
// Deletes a theme.
//
// 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 Amazon QuickSight's
// API operation DeleteTheme for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteTheme
func (c *QuickSight) DeleteTheme(input *DeleteThemeInput) (*DeleteThemeOutput, error) {
	req, out := c.DeleteThemeRequest(input)
	return out, req.Send()
}

// DeleteThemeWithContext is the same as DeleteTheme with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteTheme 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 *QuickSight) DeleteThemeWithContext(ctx aws.Context, input *DeleteThemeInput, opts ...request.Option) (*DeleteThemeOutput, error) {
	req, out := c.DeleteThemeRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteThemeAlias = "DeleteThemeAlias"

// DeleteThemeAliasRequest generates a "aws/request.Request" representing the
// client's request for the DeleteThemeAlias 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 DeleteThemeAlias for more information on using the DeleteThemeAlias
// 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 DeleteThemeAliasRequest method.
//	req, resp := client.DeleteThemeAliasRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteThemeAlias
func (c *QuickSight) DeleteThemeAliasRequest(input *DeleteThemeAliasInput) (req *request.Request, output *DeleteThemeAliasOutput) {
	op := &request.Operation{
		Name:       opDeleteThemeAlias,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/themes/{ThemeId}/aliases/{AliasName}",
	}

	if input == nil {
		input = &DeleteThemeAliasInput{}
	}

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

// DeleteThemeAlias API operation for Amazon QuickSight.
//
// Deletes the version of the theme that the specified theme alias points to.
// If you provide a specific alias, you delete the version of the theme that
// the alias points to.
//
// 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 Amazon QuickSight's
// API operation DeleteThemeAlias for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteThemeAlias
func (c *QuickSight) DeleteThemeAlias(input *DeleteThemeAliasInput) (*DeleteThemeAliasOutput, error) {
	req, out := c.DeleteThemeAliasRequest(input)
	return out, req.Send()
}

// DeleteThemeAliasWithContext is the same as DeleteThemeAlias with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteThemeAlias 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 *QuickSight) DeleteThemeAliasWithContext(ctx aws.Context, input *DeleteThemeAliasInput, opts ...request.Option) (*DeleteThemeAliasOutput, error) {
	req, out := c.DeleteThemeAliasRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteTopic = "DeleteTopic"

// DeleteTopicRequest generates a "aws/request.Request" representing the
// client's request for the DeleteTopic 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 DeleteTopic for more information on using the DeleteTopic
// 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 DeleteTopicRequest method.
//	req, resp := client.DeleteTopicRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteTopic
func (c *QuickSight) DeleteTopicRequest(input *DeleteTopicInput) (req *request.Request, output *DeleteTopicOutput) {
	op := &request.Operation{
		Name:       opDeleteTopic,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/topics/{TopicId}",
	}

	if input == nil {
		input = &DeleteTopicInput{}
	}

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

// DeleteTopic API operation for Amazon QuickSight.
//
// Deletes a topic.
//
// 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 Amazon QuickSight's
// API operation DeleteTopic for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteTopic
func (c *QuickSight) DeleteTopic(input *DeleteTopicInput) (*DeleteTopicOutput, error) {
	req, out := c.DeleteTopicRequest(input)
	return out, req.Send()
}

// DeleteTopicWithContext is the same as DeleteTopic with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteTopic 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 *QuickSight) DeleteTopicWithContext(ctx aws.Context, input *DeleteTopicInput, opts ...request.Option) (*DeleteTopicOutput, error) {
	req, out := c.DeleteTopicRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteTopicRefreshSchedule = "DeleteTopicRefreshSchedule"

// DeleteTopicRefreshScheduleRequest generates a "aws/request.Request" representing the
// client's request for the DeleteTopicRefreshSchedule 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 DeleteTopicRefreshSchedule for more information on using the DeleteTopicRefreshSchedule
// 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 DeleteTopicRefreshScheduleRequest method.
//	req, resp := client.DeleteTopicRefreshScheduleRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteTopicRefreshSchedule
func (c *QuickSight) DeleteTopicRefreshScheduleRequest(input *DeleteTopicRefreshScheduleInput) (req *request.Request, output *DeleteTopicRefreshScheduleOutput) {
	op := &request.Operation{
		Name:       opDeleteTopicRefreshSchedule,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/topics/{TopicId}/schedules/{DatasetId}",
	}

	if input == nil {
		input = &DeleteTopicRefreshScheduleInput{}
	}

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

// DeleteTopicRefreshSchedule API operation for Amazon QuickSight.
//
// Deletes a topic refresh schedule.
//
// 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 Amazon QuickSight's
// API operation DeleteTopicRefreshSchedule for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteTopicRefreshSchedule
func (c *QuickSight) DeleteTopicRefreshSchedule(input *DeleteTopicRefreshScheduleInput) (*DeleteTopicRefreshScheduleOutput, error) {
	req, out := c.DeleteTopicRefreshScheduleRequest(input)
	return out, req.Send()
}

// DeleteTopicRefreshScheduleWithContext is the same as DeleteTopicRefreshSchedule with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteTopicRefreshSchedule 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 *QuickSight) DeleteTopicRefreshScheduleWithContext(ctx aws.Context, input *DeleteTopicRefreshScheduleInput, opts ...request.Option) (*DeleteTopicRefreshScheduleOutput, error) {
	req, out := c.DeleteTopicRefreshScheduleRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteUser = "DeleteUser"

// DeleteUserRequest generates a "aws/request.Request" representing the
// client's request for the DeleteUser 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 DeleteUser for more information on using the DeleteUser
// 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 DeleteUserRequest method.
//	req, resp := client.DeleteUserRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteUser
func (c *QuickSight) DeleteUserRequest(input *DeleteUserInput) (req *request.Request, output *DeleteUserOutput) {
	op := &request.Operation{
		Name:       opDeleteUser,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/users/{UserName}",
	}

	if input == nil {
		input = &DeleteUserInput{}
	}

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

// DeleteUser API operation for Amazon QuickSight.
//
// Deletes the Amazon QuickSight user that is associated with the identity of
// the IAM user or role that's making the call. The IAM user isn't deleted as
// a result of this call.
//
// 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 Amazon QuickSight's
// API operation DeleteUser for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteUser
func (c *QuickSight) DeleteUser(input *DeleteUserInput) (*DeleteUserOutput, error) {
	req, out := c.DeleteUserRequest(input)
	return out, req.Send()
}

// DeleteUserWithContext is the same as DeleteUser with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteUser 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 *QuickSight) DeleteUserWithContext(ctx aws.Context, input *DeleteUserInput, opts ...request.Option) (*DeleteUserOutput, error) {
	req, out := c.DeleteUserRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteUserByPrincipalId = "DeleteUserByPrincipalId"

// DeleteUserByPrincipalIdRequest generates a "aws/request.Request" representing the
// client's request for the DeleteUserByPrincipalId 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 DeleteUserByPrincipalId for more information on using the DeleteUserByPrincipalId
// 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 DeleteUserByPrincipalIdRequest method.
//	req, resp := client.DeleteUserByPrincipalIdRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteUserByPrincipalId
func (c *QuickSight) DeleteUserByPrincipalIdRequest(input *DeleteUserByPrincipalIdInput) (req *request.Request, output *DeleteUserByPrincipalIdOutput) {
	op := &request.Operation{
		Name:       opDeleteUserByPrincipalId,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/user-principals/{PrincipalId}",
	}

	if input == nil {
		input = &DeleteUserByPrincipalIdInput{}
	}

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

// DeleteUserByPrincipalId API operation for Amazon QuickSight.
//
// Deletes a user identified by its principal ID.
//
// 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 Amazon QuickSight's
// API operation DeleteUserByPrincipalId for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteUserByPrincipalId
func (c *QuickSight) DeleteUserByPrincipalId(input *DeleteUserByPrincipalIdInput) (*DeleteUserByPrincipalIdOutput, error) {
	req, out := c.DeleteUserByPrincipalIdRequest(input)
	return out, req.Send()
}

// DeleteUserByPrincipalIdWithContext is the same as DeleteUserByPrincipalId with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteUserByPrincipalId 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 *QuickSight) DeleteUserByPrincipalIdWithContext(ctx aws.Context, input *DeleteUserByPrincipalIdInput, opts ...request.Option) (*DeleteUserByPrincipalIdOutput, error) {
	req, out := c.DeleteUserByPrincipalIdRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeleteVPCConnection = "DeleteVPCConnection"

// DeleteVPCConnectionRequest generates a "aws/request.Request" representing the
// client's request for the DeleteVPCConnection 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 DeleteVPCConnection for more information on using the DeleteVPCConnection
// 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 DeleteVPCConnectionRequest method.
//	req, resp := client.DeleteVPCConnectionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteVPCConnection
func (c *QuickSight) DeleteVPCConnectionRequest(input *DeleteVPCConnectionInput) (req *request.Request, output *DeleteVPCConnectionOutput) {
	op := &request.Operation{
		Name:       opDeleteVPCConnection,
		HTTPMethod: "DELETE",
		HTTPPath:   "/accounts/{AwsAccountId}/vpc-connections/{VPCConnectionId}",
	}

	if input == nil {
		input = &DeleteVPCConnectionInput{}
	}

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

// DeleteVPCConnection API operation for Amazon QuickSight.
//
// Deletes a VPC connection.
//
// 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 Amazon QuickSight's
// API operation DeleteVPCConnection for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DeleteVPCConnection
func (c *QuickSight) DeleteVPCConnection(input *DeleteVPCConnectionInput) (*DeleteVPCConnectionOutput, error) {
	req, out := c.DeleteVPCConnectionRequest(input)
	return out, req.Send()
}

// DeleteVPCConnectionWithContext is the same as DeleteVPCConnection with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteVPCConnection 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 *QuickSight) DeleteVPCConnectionWithContext(ctx aws.Context, input *DeleteVPCConnectionInput, opts ...request.Option) (*DeleteVPCConnectionOutput, error) {
	req, out := c.DeleteVPCConnectionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeAccountCustomization = "DescribeAccountCustomization"

// DescribeAccountCustomizationRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAccountCustomization 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 DescribeAccountCustomization for more information on using the DescribeAccountCustomization
// 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 DescribeAccountCustomizationRequest method.
//	req, resp := client.DescribeAccountCustomizationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeAccountCustomization
func (c *QuickSight) DescribeAccountCustomizationRequest(input *DescribeAccountCustomizationInput) (req *request.Request, output *DescribeAccountCustomizationOutput) {
	op := &request.Operation{
		Name:       opDescribeAccountCustomization,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/customizations",
	}

	if input == nil {
		input = &DescribeAccountCustomizationInput{}
	}

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

// DescribeAccountCustomization API operation for Amazon QuickSight.
//
// Describes the customizations associated with the provided Amazon Web Services
// account and Amazon Amazon QuickSight namespace in an Amazon Web Services
// Region. The Amazon QuickSight console evaluates which customizations to apply
// by running this API operation with the Resolved flag included.
//
// To determine what customizations display when you run this command, it can
// help to visualize the relationship of the entities involved.
//
//   - Amazon Web Services account - The Amazon Web Services account exists
//     at the top of the hierarchy. It has the potential to use all of the Amazon
//     Web Services Regions and Amazon Web Services Services. When you subscribe
//     to Amazon QuickSight, you choose one Amazon Web Services Region to use
//     as your home Region. That's where your free SPICE capacity is located.
//     You can use Amazon QuickSight in any supported Amazon Web Services Region.
//
//   - Amazon Web Services Region - In each Amazon Web Services Region where
//     you sign in to Amazon QuickSight at least once, Amazon QuickSight acts
//     as a separate instance of the same service. If you have a user directory,
//     it resides in us-east-1, which is the US East (N. Virginia). Generally
//     speaking, these users have access to Amazon QuickSight in any Amazon Web
//     Services Region, unless they are constrained to a namespace. To run the
//     command in a different Amazon Web Services Region, you change your Region
//     settings. If you're using the CLI, you can use one of the following options:
//     Use command line options (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html).
//     Use named profiles (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html).
//     Run aws configure to change your default Amazon Web Services Region. Use
//     Enter to key the same settings for your keys. For more information, see
//     Configuring the CLI (https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).
//
//   - Namespace - A QuickSight namespace is a partition that contains users
//     and assets (data sources, datasets, dashboards, and so on). To access
//     assets that are in a specific namespace, users and groups must also be
//     part of the same namespace. People who share a namespace are completely
//     isolated from users and assets in other namespaces, even if they are in
//     the same Amazon Web Services account and Amazon Web Services Region.
//
//   - Applied customizations - Within an Amazon Web Services Region, a set
//     of Amazon QuickSight customizations can apply to an Amazon Web Services
//     account or to a namespace. Settings that you apply to a namespace override
//     settings that you apply to an Amazon Web Services account. All settings
//     are isolated to a single Amazon Web Services Region. To apply them in
//     other Amazon Web Services Regions, run the CreateAccountCustomization
//     command in each Amazon Web Services Region where you want to apply the
//     same customizations.
//
// 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 Amazon QuickSight's
// API operation DescribeAccountCustomization for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeAccountCustomization
func (c *QuickSight) DescribeAccountCustomization(input *DescribeAccountCustomizationInput) (*DescribeAccountCustomizationOutput, error) {
	req, out := c.DescribeAccountCustomizationRequest(input)
	return out, req.Send()
}

// DescribeAccountCustomizationWithContext is the same as DescribeAccountCustomization with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeAccountCustomization 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 *QuickSight) DescribeAccountCustomizationWithContext(ctx aws.Context, input *DescribeAccountCustomizationInput, opts ...request.Option) (*DescribeAccountCustomizationOutput, error) {
	req, out := c.DescribeAccountCustomizationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeAccountSettings = "DescribeAccountSettings"

// DescribeAccountSettingsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAccountSettings 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 DescribeAccountSettings for more information on using the DescribeAccountSettings
// 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 DescribeAccountSettingsRequest method.
//	req, resp := client.DescribeAccountSettingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeAccountSettings
func (c *QuickSight) DescribeAccountSettingsRequest(input *DescribeAccountSettingsInput) (req *request.Request, output *DescribeAccountSettingsOutput) {
	op := &request.Operation{
		Name:       opDescribeAccountSettings,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/settings",
	}

	if input == nil {
		input = &DescribeAccountSettingsInput{}
	}

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

// DescribeAccountSettings API operation for Amazon QuickSight.
//
// Describes the settings that were used when your Amazon QuickSight subscription
// was first created in this Amazon Web Services 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 Amazon QuickSight's
// API operation DescribeAccountSettings for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeAccountSettings
func (c *QuickSight) DescribeAccountSettings(input *DescribeAccountSettingsInput) (*DescribeAccountSettingsOutput, error) {
	req, out := c.DescribeAccountSettingsRequest(input)
	return out, req.Send()
}

// DescribeAccountSettingsWithContext is the same as DescribeAccountSettings with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeAccountSettings 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 *QuickSight) DescribeAccountSettingsWithContext(ctx aws.Context, input *DescribeAccountSettingsInput, opts ...request.Option) (*DescribeAccountSettingsOutput, error) {
	req, out := c.DescribeAccountSettingsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeAccountSubscription = "DescribeAccountSubscription"

// DescribeAccountSubscriptionRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAccountSubscription 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 DescribeAccountSubscription for more information on using the DescribeAccountSubscription
// 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 DescribeAccountSubscriptionRequest method.
//	req, resp := client.DescribeAccountSubscriptionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeAccountSubscription
func (c *QuickSight) DescribeAccountSubscriptionRequest(input *DescribeAccountSubscriptionInput) (req *request.Request, output *DescribeAccountSubscriptionOutput) {
	op := &request.Operation{
		Name:       opDescribeAccountSubscription,
		HTTPMethod: "GET",
		HTTPPath:   "/account/{AwsAccountId}",
	}

	if input == nil {
		input = &DescribeAccountSubscriptionInput{}
	}

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

// DescribeAccountSubscription API operation for Amazon QuickSight.
//
// Use the DescribeAccountSubscription operation to receive a description of
// an Amazon QuickSight account's subscription. A successful API call returns
// an AccountInfo object that includes an account's name, subscription status,
// authentication type, edition, and notification email address.
//
// 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 Amazon QuickSight's
// API operation DescribeAccountSubscription for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeAccountSubscription
func (c *QuickSight) DescribeAccountSubscription(input *DescribeAccountSubscriptionInput) (*DescribeAccountSubscriptionOutput, error) {
	req, out := c.DescribeAccountSubscriptionRequest(input)
	return out, req.Send()
}

// DescribeAccountSubscriptionWithContext is the same as DescribeAccountSubscription with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeAccountSubscription 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 *QuickSight) DescribeAccountSubscriptionWithContext(ctx aws.Context, input *DescribeAccountSubscriptionInput, opts ...request.Option) (*DescribeAccountSubscriptionOutput, error) {
	req, out := c.DescribeAccountSubscriptionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeAnalysis = "DescribeAnalysis"

// DescribeAnalysisRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAnalysis 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 DescribeAnalysis for more information on using the DescribeAnalysis
// 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 DescribeAnalysisRequest method.
//	req, resp := client.DescribeAnalysisRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeAnalysis
func (c *QuickSight) DescribeAnalysisRequest(input *DescribeAnalysisInput) (req *request.Request, output *DescribeAnalysisOutput) {
	op := &request.Operation{
		Name:       opDescribeAnalysis,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/analyses/{AnalysisId}",
	}

	if input == nil {
		input = &DescribeAnalysisInput{}
	}

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

// DescribeAnalysis API operation for Amazon QuickSight.
//
// Provides a summary of the metadata for an analysis.
//
// 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 Amazon QuickSight's
// API operation DescribeAnalysis for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeAnalysis
func (c *QuickSight) DescribeAnalysis(input *DescribeAnalysisInput) (*DescribeAnalysisOutput, error) {
	req, out := c.DescribeAnalysisRequest(input)
	return out, req.Send()
}

// DescribeAnalysisWithContext is the same as DescribeAnalysis with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeAnalysis 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 *QuickSight) DescribeAnalysisWithContext(ctx aws.Context, input *DescribeAnalysisInput, opts ...request.Option) (*DescribeAnalysisOutput, error) {
	req, out := c.DescribeAnalysisRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeAnalysisDefinition = "DescribeAnalysisDefinition"

// DescribeAnalysisDefinitionRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAnalysisDefinition 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 DescribeAnalysisDefinition for more information on using the DescribeAnalysisDefinition
// 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 DescribeAnalysisDefinitionRequest method.
//	req, resp := client.DescribeAnalysisDefinitionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeAnalysisDefinition
func (c *QuickSight) DescribeAnalysisDefinitionRequest(input *DescribeAnalysisDefinitionInput) (req *request.Request, output *DescribeAnalysisDefinitionOutput) {
	op := &request.Operation{
		Name:       opDescribeAnalysisDefinition,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/analyses/{AnalysisId}/definition",
	}

	if input == nil {
		input = &DescribeAnalysisDefinitionInput{}
	}

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

// DescribeAnalysisDefinition API operation for Amazon QuickSight.
//
// Provides a detailed description of the definition of an analysis.
//
// If you do not need to know details about the content of an Analysis, for
// instance if you are trying to check the status of a recently created or updated
// Analysis, use the DescribeAnalysis (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeAnalysis.html)
// instead.
//
// 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 Amazon QuickSight's
// API operation DescribeAnalysisDefinition for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeAnalysisDefinition
func (c *QuickSight) DescribeAnalysisDefinition(input *DescribeAnalysisDefinitionInput) (*DescribeAnalysisDefinitionOutput, error) {
	req, out := c.DescribeAnalysisDefinitionRequest(input)
	return out, req.Send()
}

// DescribeAnalysisDefinitionWithContext is the same as DescribeAnalysisDefinition with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeAnalysisDefinition 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 *QuickSight) DescribeAnalysisDefinitionWithContext(ctx aws.Context, input *DescribeAnalysisDefinitionInput, opts ...request.Option) (*DescribeAnalysisDefinitionOutput, error) {
	req, out := c.DescribeAnalysisDefinitionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeAnalysisPermissions = "DescribeAnalysisPermissions"

// DescribeAnalysisPermissionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAnalysisPermissions 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 DescribeAnalysisPermissions for more information on using the DescribeAnalysisPermissions
// 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 DescribeAnalysisPermissionsRequest method.
//	req, resp := client.DescribeAnalysisPermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeAnalysisPermissions
func (c *QuickSight) DescribeAnalysisPermissionsRequest(input *DescribeAnalysisPermissionsInput) (req *request.Request, output *DescribeAnalysisPermissionsOutput) {
	op := &request.Operation{
		Name:       opDescribeAnalysisPermissions,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/analyses/{AnalysisId}/permissions",
	}

	if input == nil {
		input = &DescribeAnalysisPermissionsInput{}
	}

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

// DescribeAnalysisPermissions API operation for Amazon QuickSight.
//
// Provides the read and write permissions for an analysis.
//
// 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 Amazon QuickSight's
// API operation DescribeAnalysisPermissions for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeAnalysisPermissions
func (c *QuickSight) DescribeAnalysisPermissions(input *DescribeAnalysisPermissionsInput) (*DescribeAnalysisPermissionsOutput, error) {
	req, out := c.DescribeAnalysisPermissionsRequest(input)
	return out, req.Send()
}

// DescribeAnalysisPermissionsWithContext is the same as DescribeAnalysisPermissions with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeAnalysisPermissions 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 *QuickSight) DescribeAnalysisPermissionsWithContext(ctx aws.Context, input *DescribeAnalysisPermissionsInput, opts ...request.Option) (*DescribeAnalysisPermissionsOutput, error) {
	req, out := c.DescribeAnalysisPermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeAssetBundleExportJob = "DescribeAssetBundleExportJob"

// DescribeAssetBundleExportJobRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAssetBundleExportJob 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 DescribeAssetBundleExportJob for more information on using the DescribeAssetBundleExportJob
// 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 DescribeAssetBundleExportJobRequest method.
//	req, resp := client.DescribeAssetBundleExportJobRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeAssetBundleExportJob
func (c *QuickSight) DescribeAssetBundleExportJobRequest(input *DescribeAssetBundleExportJobInput) (req *request.Request, output *DescribeAssetBundleExportJobOutput) {
	op := &request.Operation{
		Name:       opDescribeAssetBundleExportJob,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/asset-bundle-export-jobs/{AssetBundleExportJobId}",
	}

	if input == nil {
		input = &DescribeAssetBundleExportJobInput{}
	}

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

// DescribeAssetBundleExportJob API operation for Amazon QuickSight.
//
// Describes an existing export job.
//
// Poll job descriptions after a job starts to know the status of the job. When
// a job succeeds, a URL is provided to download the exported assets' data from.
// Download URLs are valid for five minutes after they are generated. You can
// call the DescribeAssetBundleExportJob API for a new download URL as needed.
//
// Job descriptions are available for 14 days after the job starts.
//
// 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 Amazon QuickSight's
// API operation DescribeAssetBundleExportJob for usage and error information.
//
// Returned Error Types:
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeAssetBundleExportJob
func (c *QuickSight) DescribeAssetBundleExportJob(input *DescribeAssetBundleExportJobInput) (*DescribeAssetBundleExportJobOutput, error) {
	req, out := c.DescribeAssetBundleExportJobRequest(input)
	return out, req.Send()
}

// DescribeAssetBundleExportJobWithContext is the same as DescribeAssetBundleExportJob with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeAssetBundleExportJob 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 *QuickSight) DescribeAssetBundleExportJobWithContext(ctx aws.Context, input *DescribeAssetBundleExportJobInput, opts ...request.Option) (*DescribeAssetBundleExportJobOutput, error) {
	req, out := c.DescribeAssetBundleExportJobRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeAssetBundleImportJob = "DescribeAssetBundleImportJob"

// DescribeAssetBundleImportJobRequest generates a "aws/request.Request" representing the
// client's request for the DescribeAssetBundleImportJob 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 DescribeAssetBundleImportJob for more information on using the DescribeAssetBundleImportJob
// 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 DescribeAssetBundleImportJobRequest method.
//	req, resp := client.DescribeAssetBundleImportJobRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeAssetBundleImportJob
func (c *QuickSight) DescribeAssetBundleImportJobRequest(input *DescribeAssetBundleImportJobInput) (req *request.Request, output *DescribeAssetBundleImportJobOutput) {
	op := &request.Operation{
		Name:       opDescribeAssetBundleImportJob,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/asset-bundle-import-jobs/{AssetBundleImportJobId}",
	}

	if input == nil {
		input = &DescribeAssetBundleImportJobInput{}
	}

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

// DescribeAssetBundleImportJob API operation for Amazon QuickSight.
//
// Describes an existing import job.
//
// Poll job descriptions after starting a job to know when it has succeeded
// or failed. Job descriptions are available for 14 days after job starts.
//
// 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 Amazon QuickSight's
// API operation DescribeAssetBundleImportJob for usage and error information.
//
// Returned Error Types:
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeAssetBundleImportJob
func (c *QuickSight) DescribeAssetBundleImportJob(input *DescribeAssetBundleImportJobInput) (*DescribeAssetBundleImportJobOutput, error) {
	req, out := c.DescribeAssetBundleImportJobRequest(input)
	return out, req.Send()
}

// DescribeAssetBundleImportJobWithContext is the same as DescribeAssetBundleImportJob with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeAssetBundleImportJob 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 *QuickSight) DescribeAssetBundleImportJobWithContext(ctx aws.Context, input *DescribeAssetBundleImportJobInput, opts ...request.Option) (*DescribeAssetBundleImportJobOutput, error) {
	req, out := c.DescribeAssetBundleImportJobRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeDashboard = "DescribeDashboard"

// DescribeDashboardRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDashboard 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 DescribeDashboard for more information on using the DescribeDashboard
// 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 DescribeDashboardRequest method.
//	req, resp := client.DescribeDashboardRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDashboard
func (c *QuickSight) DescribeDashboardRequest(input *DescribeDashboardInput) (req *request.Request, output *DescribeDashboardOutput) {
	op := &request.Operation{
		Name:       opDescribeDashboard,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/dashboards/{DashboardId}",
	}

	if input == nil {
		input = &DescribeDashboardInput{}
	}

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

// DescribeDashboard API operation for Amazon QuickSight.
//
// Provides a summary for a dashboard.
//
// 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 Amazon QuickSight's
// API operation DescribeDashboard for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDashboard
func (c *QuickSight) DescribeDashboard(input *DescribeDashboardInput) (*DescribeDashboardOutput, error) {
	req, out := c.DescribeDashboardRequest(input)
	return out, req.Send()
}

// DescribeDashboardWithContext is the same as DescribeDashboard with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeDashboard 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 *QuickSight) DescribeDashboardWithContext(ctx aws.Context, input *DescribeDashboardInput, opts ...request.Option) (*DescribeDashboardOutput, error) {
	req, out := c.DescribeDashboardRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeDashboardDefinition = "DescribeDashboardDefinition"

// DescribeDashboardDefinitionRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDashboardDefinition 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 DescribeDashboardDefinition for more information on using the DescribeDashboardDefinition
// 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 DescribeDashboardDefinitionRequest method.
//	req, resp := client.DescribeDashboardDefinitionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDashboardDefinition
func (c *QuickSight) DescribeDashboardDefinitionRequest(input *DescribeDashboardDefinitionInput) (req *request.Request, output *DescribeDashboardDefinitionOutput) {
	op := &request.Operation{
		Name:       opDescribeDashboardDefinition,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/dashboards/{DashboardId}/definition",
	}

	if input == nil {
		input = &DescribeDashboardDefinitionInput{}
	}

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

// DescribeDashboardDefinition API operation for Amazon QuickSight.
//
// Provides a detailed description of the definition of a dashboard.
//
// If you do not need to know details about the content of a dashboard, for
// instance if you are trying to check the status of a recently created or updated
// dashboard, use the DescribeDashboard (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeDashboard.html)
// instead.
//
// 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 Amazon QuickSight's
// API operation DescribeDashboardDefinition for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDashboardDefinition
func (c *QuickSight) DescribeDashboardDefinition(input *DescribeDashboardDefinitionInput) (*DescribeDashboardDefinitionOutput, error) {
	req, out := c.DescribeDashboardDefinitionRequest(input)
	return out, req.Send()
}

// DescribeDashboardDefinitionWithContext is the same as DescribeDashboardDefinition with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeDashboardDefinition 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 *QuickSight) DescribeDashboardDefinitionWithContext(ctx aws.Context, input *DescribeDashboardDefinitionInput, opts ...request.Option) (*DescribeDashboardDefinitionOutput, error) {
	req, out := c.DescribeDashboardDefinitionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeDashboardPermissions = "DescribeDashboardPermissions"

// DescribeDashboardPermissionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDashboardPermissions 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 DescribeDashboardPermissions for more information on using the DescribeDashboardPermissions
// 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 DescribeDashboardPermissionsRequest method.
//	req, resp := client.DescribeDashboardPermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDashboardPermissions
func (c *QuickSight) DescribeDashboardPermissionsRequest(input *DescribeDashboardPermissionsInput) (req *request.Request, output *DescribeDashboardPermissionsOutput) {
	op := &request.Operation{
		Name:       opDescribeDashboardPermissions,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/dashboards/{DashboardId}/permissions",
	}

	if input == nil {
		input = &DescribeDashboardPermissionsInput{}
	}

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

// DescribeDashboardPermissions API operation for Amazon QuickSight.
//
// Describes read and write permissions for a dashboard.
//
// 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 Amazon QuickSight's
// API operation DescribeDashboardPermissions for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDashboardPermissions
func (c *QuickSight) DescribeDashboardPermissions(input *DescribeDashboardPermissionsInput) (*DescribeDashboardPermissionsOutput, error) {
	req, out := c.DescribeDashboardPermissionsRequest(input)
	return out, req.Send()
}

// DescribeDashboardPermissionsWithContext is the same as DescribeDashboardPermissions with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeDashboardPermissions 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 *QuickSight) DescribeDashboardPermissionsWithContext(ctx aws.Context, input *DescribeDashboardPermissionsInput, opts ...request.Option) (*DescribeDashboardPermissionsOutput, error) {
	req, out := c.DescribeDashboardPermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeDashboardSnapshotJob = "DescribeDashboardSnapshotJob"

// DescribeDashboardSnapshotJobRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDashboardSnapshotJob 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 DescribeDashboardSnapshotJob for more information on using the DescribeDashboardSnapshotJob
// 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 DescribeDashboardSnapshotJobRequest method.
//	req, resp := client.DescribeDashboardSnapshotJobRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDashboardSnapshotJob
func (c *QuickSight) DescribeDashboardSnapshotJobRequest(input *DescribeDashboardSnapshotJobInput) (req *request.Request, output *DescribeDashboardSnapshotJobOutput) {
	op := &request.Operation{
		Name:       opDescribeDashboardSnapshotJob,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/dashboards/{DashboardId}/snapshot-jobs/{SnapshotJobId}",
	}

	if input == nil {
		input = &DescribeDashboardSnapshotJobInput{}
	}

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

// DescribeDashboardSnapshotJob API operation for Amazon QuickSight.
//
// Describes an existing snapshot job.
//
// Poll job descriptions after a job starts to know the status of the job. For
// information on available status codes, see JobStatus.
//
// 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 Amazon QuickSight's
// API operation DescribeDashboardSnapshotJob for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDashboardSnapshotJob
func (c *QuickSight) DescribeDashboardSnapshotJob(input *DescribeDashboardSnapshotJobInput) (*DescribeDashboardSnapshotJobOutput, error) {
	req, out := c.DescribeDashboardSnapshotJobRequest(input)
	return out, req.Send()
}

// DescribeDashboardSnapshotJobWithContext is the same as DescribeDashboardSnapshotJob with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeDashboardSnapshotJob 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 *QuickSight) DescribeDashboardSnapshotJobWithContext(ctx aws.Context, input *DescribeDashboardSnapshotJobInput, opts ...request.Option) (*DescribeDashboardSnapshotJobOutput, error) {
	req, out := c.DescribeDashboardSnapshotJobRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeDashboardSnapshotJobResult = "DescribeDashboardSnapshotJobResult"

// DescribeDashboardSnapshotJobResultRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDashboardSnapshotJobResult 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 DescribeDashboardSnapshotJobResult for more information on using the DescribeDashboardSnapshotJobResult
// 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 DescribeDashboardSnapshotJobResultRequest method.
//	req, resp := client.DescribeDashboardSnapshotJobResultRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDashboardSnapshotJobResult
func (c *QuickSight) DescribeDashboardSnapshotJobResultRequest(input *DescribeDashboardSnapshotJobResultInput) (req *request.Request, output *DescribeDashboardSnapshotJobResultOutput) {
	op := &request.Operation{
		Name:       opDescribeDashboardSnapshotJobResult,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/dashboards/{DashboardId}/snapshot-jobs/{SnapshotJobId}/result",
	}

	if input == nil {
		input = &DescribeDashboardSnapshotJobResultInput{}
	}

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

// DescribeDashboardSnapshotJobResult API operation for Amazon QuickSight.
//
// Describes the result of an existing snapshot job that has finished running.
//
// A finished snapshot job will return a COMPLETED or FAILED status when you
// poll the job with a DescribeDashboardSnapshotJob API call.
//
// If the job has not finished running, this operation returns a message that
// says Dashboard Snapshot Job with id <SnapshotjobId> has not reached a terminal
// state..
//
// 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 Amazon QuickSight's
// API operation DescribeDashboardSnapshotJobResult for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDashboardSnapshotJobResult
func (c *QuickSight) DescribeDashboardSnapshotJobResult(input *DescribeDashboardSnapshotJobResultInput) (*DescribeDashboardSnapshotJobResultOutput, error) {
	req, out := c.DescribeDashboardSnapshotJobResultRequest(input)
	return out, req.Send()
}

// DescribeDashboardSnapshotJobResultWithContext is the same as DescribeDashboardSnapshotJobResult with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeDashboardSnapshotJobResult 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 *QuickSight) DescribeDashboardSnapshotJobResultWithContext(ctx aws.Context, input *DescribeDashboardSnapshotJobResultInput, opts ...request.Option) (*DescribeDashboardSnapshotJobResultOutput, error) {
	req, out := c.DescribeDashboardSnapshotJobResultRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeDataSet = "DescribeDataSet"

// DescribeDataSetRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDataSet 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 DescribeDataSet for more information on using the DescribeDataSet
// 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 DescribeDataSetRequest method.
//	req, resp := client.DescribeDataSetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDataSet
func (c *QuickSight) DescribeDataSetRequest(input *DescribeDataSetInput) (req *request.Request, output *DescribeDataSetOutput) {
	op := &request.Operation{
		Name:       opDescribeDataSet,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}",
	}

	if input == nil {
		input = &DescribeDataSetInput{}
	}

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

// DescribeDataSet API operation for Amazon QuickSight.
//
// Describes a dataset. This operation doesn't support datasets that include
// uploaded files as a source.
//
// 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 Amazon QuickSight's
// API operation DescribeDataSet for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDataSet
func (c *QuickSight) DescribeDataSet(input *DescribeDataSetInput) (*DescribeDataSetOutput, error) {
	req, out := c.DescribeDataSetRequest(input)
	return out, req.Send()
}

// DescribeDataSetWithContext is the same as DescribeDataSet with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeDataSet 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 *QuickSight) DescribeDataSetWithContext(ctx aws.Context, input *DescribeDataSetInput, opts ...request.Option) (*DescribeDataSetOutput, error) {
	req, out := c.DescribeDataSetRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeDataSetPermissions = "DescribeDataSetPermissions"

// DescribeDataSetPermissionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDataSetPermissions 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 DescribeDataSetPermissions for more information on using the DescribeDataSetPermissions
// 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 DescribeDataSetPermissionsRequest method.
//	req, resp := client.DescribeDataSetPermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDataSetPermissions
func (c *QuickSight) DescribeDataSetPermissionsRequest(input *DescribeDataSetPermissionsInput) (req *request.Request, output *DescribeDataSetPermissionsOutput) {
	op := &request.Operation{
		Name:       opDescribeDataSetPermissions,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}/permissions",
	}

	if input == nil {
		input = &DescribeDataSetPermissionsInput{}
	}

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

// DescribeDataSetPermissions API operation for Amazon QuickSight.
//
// Describes the permissions on a dataset.
//
// The permissions resource is arn:aws:quicksight:region:aws-account-id:dataset/data-set-id.
//
// 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 Amazon QuickSight's
// API operation DescribeDataSetPermissions for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDataSetPermissions
func (c *QuickSight) DescribeDataSetPermissions(input *DescribeDataSetPermissionsInput) (*DescribeDataSetPermissionsOutput, error) {
	req, out := c.DescribeDataSetPermissionsRequest(input)
	return out, req.Send()
}

// DescribeDataSetPermissionsWithContext is the same as DescribeDataSetPermissions with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeDataSetPermissions 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 *QuickSight) DescribeDataSetPermissionsWithContext(ctx aws.Context, input *DescribeDataSetPermissionsInput, opts ...request.Option) (*DescribeDataSetPermissionsOutput, error) {
	req, out := c.DescribeDataSetPermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeDataSetRefreshProperties = "DescribeDataSetRefreshProperties"

// DescribeDataSetRefreshPropertiesRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDataSetRefreshProperties 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 DescribeDataSetRefreshProperties for more information on using the DescribeDataSetRefreshProperties
// 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 DescribeDataSetRefreshPropertiesRequest method.
//	req, resp := client.DescribeDataSetRefreshPropertiesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDataSetRefreshProperties
func (c *QuickSight) DescribeDataSetRefreshPropertiesRequest(input *DescribeDataSetRefreshPropertiesInput) (req *request.Request, output *DescribeDataSetRefreshPropertiesOutput) {
	op := &request.Operation{
		Name:       opDescribeDataSetRefreshProperties,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}/refresh-properties",
	}

	if input == nil {
		input = &DescribeDataSetRefreshPropertiesInput{}
	}

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

// DescribeDataSetRefreshProperties API operation for Amazon QuickSight.
//
// Describes the refresh properties of a dataset.
//
// 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 Amazon QuickSight's
// API operation DescribeDataSetRefreshProperties for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDataSetRefreshProperties
func (c *QuickSight) DescribeDataSetRefreshProperties(input *DescribeDataSetRefreshPropertiesInput) (*DescribeDataSetRefreshPropertiesOutput, error) {
	req, out := c.DescribeDataSetRefreshPropertiesRequest(input)
	return out, req.Send()
}

// DescribeDataSetRefreshPropertiesWithContext is the same as DescribeDataSetRefreshProperties with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeDataSetRefreshProperties 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 *QuickSight) DescribeDataSetRefreshPropertiesWithContext(ctx aws.Context, input *DescribeDataSetRefreshPropertiesInput, opts ...request.Option) (*DescribeDataSetRefreshPropertiesOutput, error) {
	req, out := c.DescribeDataSetRefreshPropertiesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeDataSource = "DescribeDataSource"

// DescribeDataSourceRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDataSource 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 DescribeDataSource for more information on using the DescribeDataSource
// 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 DescribeDataSourceRequest method.
//	req, resp := client.DescribeDataSourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDataSource
func (c *QuickSight) DescribeDataSourceRequest(input *DescribeDataSourceInput) (req *request.Request, output *DescribeDataSourceOutput) {
	op := &request.Operation{
		Name:       opDescribeDataSource,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sources/{DataSourceId}",
	}

	if input == nil {
		input = &DescribeDataSourceInput{}
	}

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

// DescribeDataSource API operation for Amazon QuickSight.
//
// Describes a data source.
//
// 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 Amazon QuickSight's
// API operation DescribeDataSource for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDataSource
func (c *QuickSight) DescribeDataSource(input *DescribeDataSourceInput) (*DescribeDataSourceOutput, error) {
	req, out := c.DescribeDataSourceRequest(input)
	return out, req.Send()
}

// DescribeDataSourceWithContext is the same as DescribeDataSource with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeDataSource 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 *QuickSight) DescribeDataSourceWithContext(ctx aws.Context, input *DescribeDataSourceInput, opts ...request.Option) (*DescribeDataSourceOutput, error) {
	req, out := c.DescribeDataSourceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeDataSourcePermissions = "DescribeDataSourcePermissions"

// DescribeDataSourcePermissionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeDataSourcePermissions 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 DescribeDataSourcePermissions for more information on using the DescribeDataSourcePermissions
// 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 DescribeDataSourcePermissionsRequest method.
//	req, resp := client.DescribeDataSourcePermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDataSourcePermissions
func (c *QuickSight) DescribeDataSourcePermissionsRequest(input *DescribeDataSourcePermissionsInput) (req *request.Request, output *DescribeDataSourcePermissionsOutput) {
	op := &request.Operation{
		Name:       opDescribeDataSourcePermissions,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sources/{DataSourceId}/permissions",
	}

	if input == nil {
		input = &DescribeDataSourcePermissionsInput{}
	}

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

// DescribeDataSourcePermissions API operation for Amazon QuickSight.
//
// Describes the resource permissions for a data source.
//
// 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 Amazon QuickSight's
// API operation DescribeDataSourcePermissions for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeDataSourcePermissions
func (c *QuickSight) DescribeDataSourcePermissions(input *DescribeDataSourcePermissionsInput) (*DescribeDataSourcePermissionsOutput, error) {
	req, out := c.DescribeDataSourcePermissionsRequest(input)
	return out, req.Send()
}

// DescribeDataSourcePermissionsWithContext is the same as DescribeDataSourcePermissions with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeDataSourcePermissions 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 *QuickSight) DescribeDataSourcePermissionsWithContext(ctx aws.Context, input *DescribeDataSourcePermissionsInput, opts ...request.Option) (*DescribeDataSourcePermissionsOutput, error) {
	req, out := c.DescribeDataSourcePermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeFolder = "DescribeFolder"

// DescribeFolderRequest generates a "aws/request.Request" representing the
// client's request for the DescribeFolder 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 DescribeFolder for more information on using the DescribeFolder
// 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 DescribeFolderRequest method.
//	req, resp := client.DescribeFolderRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeFolder
func (c *QuickSight) DescribeFolderRequest(input *DescribeFolderInput) (req *request.Request, output *DescribeFolderOutput) {
	op := &request.Operation{
		Name:       opDescribeFolder,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/folders/{FolderId}",
	}

	if input == nil {
		input = &DescribeFolderInput{}
	}

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

// DescribeFolder API operation for Amazon QuickSight.
//
// Describes a folder.
//
// 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 Amazon QuickSight's
// API operation DescribeFolder for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeFolder
func (c *QuickSight) DescribeFolder(input *DescribeFolderInput) (*DescribeFolderOutput, error) {
	req, out := c.DescribeFolderRequest(input)
	return out, req.Send()
}

// DescribeFolderWithContext is the same as DescribeFolder with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeFolder 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 *QuickSight) DescribeFolderWithContext(ctx aws.Context, input *DescribeFolderInput, opts ...request.Option) (*DescribeFolderOutput, error) {
	req, out := c.DescribeFolderRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeFolderPermissions = "DescribeFolderPermissions"

// DescribeFolderPermissionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeFolderPermissions 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 DescribeFolderPermissions for more information on using the DescribeFolderPermissions
// 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 DescribeFolderPermissionsRequest method.
//	req, resp := client.DescribeFolderPermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeFolderPermissions
func (c *QuickSight) DescribeFolderPermissionsRequest(input *DescribeFolderPermissionsInput) (req *request.Request, output *DescribeFolderPermissionsOutput) {
	op := &request.Operation{
		Name:       opDescribeFolderPermissions,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/folders/{FolderId}/permissions",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeFolderPermissionsInput{}
	}

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

// DescribeFolderPermissions API operation for Amazon QuickSight.
//
// Describes permissions for a folder.
//
// 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 Amazon QuickSight's
// API operation DescribeFolderPermissions for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeFolderPermissions
func (c *QuickSight) DescribeFolderPermissions(input *DescribeFolderPermissionsInput) (*DescribeFolderPermissionsOutput, error) {
	req, out := c.DescribeFolderPermissionsRequest(input)
	return out, req.Send()
}

// DescribeFolderPermissionsWithContext is the same as DescribeFolderPermissions with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeFolderPermissions 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 *QuickSight) DescribeFolderPermissionsWithContext(ctx aws.Context, input *DescribeFolderPermissionsInput, opts ...request.Option) (*DescribeFolderPermissionsOutput, error) {
	req, out := c.DescribeFolderPermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// DescribeFolderPermissionsPages iterates over the pages of a DescribeFolderPermissions operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeFolderPermissions 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 DescribeFolderPermissions operation.
//	pageNum := 0
//	err := client.DescribeFolderPermissionsPages(params,
//	    func(page *quicksight.DescribeFolderPermissionsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) DescribeFolderPermissionsPages(input *DescribeFolderPermissionsInput, fn func(*DescribeFolderPermissionsOutput, bool) bool) error {
	return c.DescribeFolderPermissionsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeFolderPermissionsPagesWithContext same as DescribeFolderPermissionsPages 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 *QuickSight) DescribeFolderPermissionsPagesWithContext(ctx aws.Context, input *DescribeFolderPermissionsInput, fn func(*DescribeFolderPermissionsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeFolderPermissionsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeFolderPermissionsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeFolderResolvedPermissions = "DescribeFolderResolvedPermissions"

// DescribeFolderResolvedPermissionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeFolderResolvedPermissions 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 DescribeFolderResolvedPermissions for more information on using the DescribeFolderResolvedPermissions
// 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 DescribeFolderResolvedPermissionsRequest method.
//	req, resp := client.DescribeFolderResolvedPermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeFolderResolvedPermissions
func (c *QuickSight) DescribeFolderResolvedPermissionsRequest(input *DescribeFolderResolvedPermissionsInput) (req *request.Request, output *DescribeFolderResolvedPermissionsOutput) {
	op := &request.Operation{
		Name:       opDescribeFolderResolvedPermissions,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/folders/{FolderId}/resolved-permissions",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &DescribeFolderResolvedPermissionsInput{}
	}

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

// DescribeFolderResolvedPermissions API operation for Amazon QuickSight.
//
// Describes the folder resolved permissions. Permissions consists of both folder
// direct permissions and the inherited permissions from the ancestor folders.
//
// 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 Amazon QuickSight's
// API operation DescribeFolderResolvedPermissions for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeFolderResolvedPermissions
func (c *QuickSight) DescribeFolderResolvedPermissions(input *DescribeFolderResolvedPermissionsInput) (*DescribeFolderResolvedPermissionsOutput, error) {
	req, out := c.DescribeFolderResolvedPermissionsRequest(input)
	return out, req.Send()
}

// DescribeFolderResolvedPermissionsWithContext is the same as DescribeFolderResolvedPermissions with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeFolderResolvedPermissions 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 *QuickSight) DescribeFolderResolvedPermissionsWithContext(ctx aws.Context, input *DescribeFolderResolvedPermissionsInput, opts ...request.Option) (*DescribeFolderResolvedPermissionsOutput, error) {
	req, out := c.DescribeFolderResolvedPermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// DescribeFolderResolvedPermissionsPages iterates over the pages of a DescribeFolderResolvedPermissions operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See DescribeFolderResolvedPermissions 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 DescribeFolderResolvedPermissions operation.
//	pageNum := 0
//	err := client.DescribeFolderResolvedPermissionsPages(params,
//	    func(page *quicksight.DescribeFolderResolvedPermissionsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) DescribeFolderResolvedPermissionsPages(input *DescribeFolderResolvedPermissionsInput, fn func(*DescribeFolderResolvedPermissionsOutput, bool) bool) error {
	return c.DescribeFolderResolvedPermissionsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// DescribeFolderResolvedPermissionsPagesWithContext same as DescribeFolderResolvedPermissionsPages 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 *QuickSight) DescribeFolderResolvedPermissionsPagesWithContext(ctx aws.Context, input *DescribeFolderResolvedPermissionsInput, fn func(*DescribeFolderResolvedPermissionsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *DescribeFolderResolvedPermissionsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.DescribeFolderResolvedPermissionsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opDescribeGroup = "DescribeGroup"

// DescribeGroupRequest generates a "aws/request.Request" representing the
// client's request for the DescribeGroup 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 DescribeGroup for more information on using the DescribeGroup
// 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 DescribeGroupRequest method.
//	req, resp := client.DescribeGroupRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeGroup
func (c *QuickSight) DescribeGroupRequest(input *DescribeGroupInput) (req *request.Request, output *DescribeGroupOutput) {
	op := &request.Operation{
		Name:       opDescribeGroup,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups/{GroupName}",
	}

	if input == nil {
		input = &DescribeGroupInput{}
	}

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

// DescribeGroup API operation for Amazon QuickSight.
//
// Returns an Amazon QuickSight group's description and Amazon Resource Name
// (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 Amazon QuickSight's
// API operation DescribeGroup for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeGroup
func (c *QuickSight) DescribeGroup(input *DescribeGroupInput) (*DescribeGroupOutput, error) {
	req, out := c.DescribeGroupRequest(input)
	return out, req.Send()
}

// DescribeGroupWithContext is the same as DescribeGroup with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeGroup 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 *QuickSight) DescribeGroupWithContext(ctx aws.Context, input *DescribeGroupInput, opts ...request.Option) (*DescribeGroupOutput, error) {
	req, out := c.DescribeGroupRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeGroupMembership = "DescribeGroupMembership"

// DescribeGroupMembershipRequest generates a "aws/request.Request" representing the
// client's request for the DescribeGroupMembership 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 DescribeGroupMembership for more information on using the DescribeGroupMembership
// 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 DescribeGroupMembershipRequest method.
//	req, resp := client.DescribeGroupMembershipRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeGroupMembership
func (c *QuickSight) DescribeGroupMembershipRequest(input *DescribeGroupMembershipInput) (req *request.Request, output *DescribeGroupMembershipOutput) {
	op := &request.Operation{
		Name:       opDescribeGroupMembership,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups/{GroupName}/members/{MemberName}",
	}

	if input == nil {
		input = &DescribeGroupMembershipInput{}
	}

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

// DescribeGroupMembership API operation for Amazon QuickSight.
//
// Use the DescribeGroupMembership operation to determine if a user is a member
// of the specified group. If the user exists and is a member of the specified
// group, an associated GroupMember object is returned.
//
// 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 Amazon QuickSight's
// API operation DescribeGroupMembership for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeGroupMembership
func (c *QuickSight) DescribeGroupMembership(input *DescribeGroupMembershipInput) (*DescribeGroupMembershipOutput, error) {
	req, out := c.DescribeGroupMembershipRequest(input)
	return out, req.Send()
}

// DescribeGroupMembershipWithContext is the same as DescribeGroupMembership with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeGroupMembership 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 *QuickSight) DescribeGroupMembershipWithContext(ctx aws.Context, input *DescribeGroupMembershipInput, opts ...request.Option) (*DescribeGroupMembershipOutput, error) {
	req, out := c.DescribeGroupMembershipRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeIAMPolicyAssignment = "DescribeIAMPolicyAssignment"

// DescribeIAMPolicyAssignmentRequest generates a "aws/request.Request" representing the
// client's request for the DescribeIAMPolicyAssignment 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 DescribeIAMPolicyAssignment for more information on using the DescribeIAMPolicyAssignment
// 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 DescribeIAMPolicyAssignmentRequest method.
//	req, resp := client.DescribeIAMPolicyAssignmentRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeIAMPolicyAssignment
func (c *QuickSight) DescribeIAMPolicyAssignmentRequest(input *DescribeIAMPolicyAssignmentInput) (req *request.Request, output *DescribeIAMPolicyAssignmentOutput) {
	op := &request.Operation{
		Name:       opDescribeIAMPolicyAssignment,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/iam-policy-assignments/{AssignmentName}",
	}

	if input == nil {
		input = &DescribeIAMPolicyAssignmentInput{}
	}

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

// DescribeIAMPolicyAssignment API operation for Amazon QuickSight.
//
// Describes an existing IAM policy assignment, as specified by the assignment
// 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 Amazon QuickSight's
// API operation DescribeIAMPolicyAssignment for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeIAMPolicyAssignment
func (c *QuickSight) DescribeIAMPolicyAssignment(input *DescribeIAMPolicyAssignmentInput) (*DescribeIAMPolicyAssignmentOutput, error) {
	req, out := c.DescribeIAMPolicyAssignmentRequest(input)
	return out, req.Send()
}

// DescribeIAMPolicyAssignmentWithContext is the same as DescribeIAMPolicyAssignment with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeIAMPolicyAssignment 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 *QuickSight) DescribeIAMPolicyAssignmentWithContext(ctx aws.Context, input *DescribeIAMPolicyAssignmentInput, opts ...request.Option) (*DescribeIAMPolicyAssignmentOutput, error) {
	req, out := c.DescribeIAMPolicyAssignmentRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeIngestion = "DescribeIngestion"

// DescribeIngestionRequest generates a "aws/request.Request" representing the
// client's request for the DescribeIngestion 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 DescribeIngestion for more information on using the DescribeIngestion
// 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 DescribeIngestionRequest method.
//	req, resp := client.DescribeIngestionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeIngestion
func (c *QuickSight) DescribeIngestionRequest(input *DescribeIngestionInput) (req *request.Request, output *DescribeIngestionOutput) {
	op := &request.Operation{
		Name:       opDescribeIngestion,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}/ingestions/{IngestionId}",
	}

	if input == nil {
		input = &DescribeIngestionInput{}
	}

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

// DescribeIngestion API operation for Amazon QuickSight.
//
// Describes a SPICE ingestion.
//
// 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 Amazon QuickSight's
// API operation DescribeIngestion for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeIngestion
func (c *QuickSight) DescribeIngestion(input *DescribeIngestionInput) (*DescribeIngestionOutput, error) {
	req, out := c.DescribeIngestionRequest(input)
	return out, req.Send()
}

// DescribeIngestionWithContext is the same as DescribeIngestion with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeIngestion 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 *QuickSight) DescribeIngestionWithContext(ctx aws.Context, input *DescribeIngestionInput, opts ...request.Option) (*DescribeIngestionOutput, error) {
	req, out := c.DescribeIngestionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeIpRestriction = "DescribeIpRestriction"

// DescribeIpRestrictionRequest generates a "aws/request.Request" representing the
// client's request for the DescribeIpRestriction 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 DescribeIpRestriction for more information on using the DescribeIpRestriction
// 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 DescribeIpRestrictionRequest method.
//	req, resp := client.DescribeIpRestrictionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeIpRestriction
func (c *QuickSight) DescribeIpRestrictionRequest(input *DescribeIpRestrictionInput) (req *request.Request, output *DescribeIpRestrictionOutput) {
	op := &request.Operation{
		Name:       opDescribeIpRestriction,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/ip-restriction",
	}

	if input == nil {
		input = &DescribeIpRestrictionInput{}
	}

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

// DescribeIpRestriction API operation for Amazon QuickSight.
//
// Provides a summary and status of IP rules.
//
// 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 Amazon QuickSight's
// API operation DescribeIpRestriction for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeIpRestriction
func (c *QuickSight) DescribeIpRestriction(input *DescribeIpRestrictionInput) (*DescribeIpRestrictionOutput, error) {
	req, out := c.DescribeIpRestrictionRequest(input)
	return out, req.Send()
}

// DescribeIpRestrictionWithContext is the same as DescribeIpRestriction with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeIpRestriction 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 *QuickSight) DescribeIpRestrictionWithContext(ctx aws.Context, input *DescribeIpRestrictionInput, opts ...request.Option) (*DescribeIpRestrictionOutput, error) {
	req, out := c.DescribeIpRestrictionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeKeyRegistration = "DescribeKeyRegistration"

// DescribeKeyRegistrationRequest generates a "aws/request.Request" representing the
// client's request for the DescribeKeyRegistration 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 DescribeKeyRegistration for more information on using the DescribeKeyRegistration
// 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 DescribeKeyRegistrationRequest method.
//	req, resp := client.DescribeKeyRegistrationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeKeyRegistration
func (c *QuickSight) DescribeKeyRegistrationRequest(input *DescribeKeyRegistrationInput) (req *request.Request, output *DescribeKeyRegistrationOutput) {
	op := &request.Operation{
		Name:       opDescribeKeyRegistration,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/key-registration",
	}

	if input == nil {
		input = &DescribeKeyRegistrationInput{}
	}

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

// DescribeKeyRegistration API operation for Amazon QuickSight.
//
// Describes all customer managed key registrations in a Amazon QuickSight 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 Amazon QuickSight's
// API operation DescribeKeyRegistration for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeKeyRegistration
func (c *QuickSight) DescribeKeyRegistration(input *DescribeKeyRegistrationInput) (*DescribeKeyRegistrationOutput, error) {
	req, out := c.DescribeKeyRegistrationRequest(input)
	return out, req.Send()
}

// DescribeKeyRegistrationWithContext is the same as DescribeKeyRegistration with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeKeyRegistration 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 *QuickSight) DescribeKeyRegistrationWithContext(ctx aws.Context, input *DescribeKeyRegistrationInput, opts ...request.Option) (*DescribeKeyRegistrationOutput, error) {
	req, out := c.DescribeKeyRegistrationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeNamespace = "DescribeNamespace"

// DescribeNamespaceRequest generates a "aws/request.Request" representing the
// client's request for the DescribeNamespace 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 DescribeNamespace for more information on using the DescribeNamespace
// 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 DescribeNamespaceRequest method.
//	req, resp := client.DescribeNamespaceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeNamespace
func (c *QuickSight) DescribeNamespaceRequest(input *DescribeNamespaceInput) (req *request.Request, output *DescribeNamespaceOutput) {
	op := &request.Operation{
		Name:       opDescribeNamespace,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}",
	}

	if input == nil {
		input = &DescribeNamespaceInput{}
	}

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

// DescribeNamespace API operation for Amazon QuickSight.
//
// Describes the current namespace.
//
// 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 Amazon QuickSight's
// API operation DescribeNamespace for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeNamespace
func (c *QuickSight) DescribeNamespace(input *DescribeNamespaceInput) (*DescribeNamespaceOutput, error) {
	req, out := c.DescribeNamespaceRequest(input)
	return out, req.Send()
}

// DescribeNamespaceWithContext is the same as DescribeNamespace with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeNamespace 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 *QuickSight) DescribeNamespaceWithContext(ctx aws.Context, input *DescribeNamespaceInput, opts ...request.Option) (*DescribeNamespaceOutput, error) {
	req, out := c.DescribeNamespaceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeRefreshSchedule = "DescribeRefreshSchedule"

// DescribeRefreshScheduleRequest generates a "aws/request.Request" representing the
// client's request for the DescribeRefreshSchedule 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 DescribeRefreshSchedule for more information on using the DescribeRefreshSchedule
// 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 DescribeRefreshScheduleRequest method.
//	req, resp := client.DescribeRefreshScheduleRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeRefreshSchedule
func (c *QuickSight) DescribeRefreshScheduleRequest(input *DescribeRefreshScheduleInput) (req *request.Request, output *DescribeRefreshScheduleOutput) {
	op := &request.Operation{
		Name:       opDescribeRefreshSchedule,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}/refresh-schedules/{ScheduleId}",
	}

	if input == nil {
		input = &DescribeRefreshScheduleInput{}
	}

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

// DescribeRefreshSchedule API operation for Amazon QuickSight.
//
// Provides a summary of a refresh schedule.
//
// 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 Amazon QuickSight's
// API operation DescribeRefreshSchedule for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeRefreshSchedule
func (c *QuickSight) DescribeRefreshSchedule(input *DescribeRefreshScheduleInput) (*DescribeRefreshScheduleOutput, error) {
	req, out := c.DescribeRefreshScheduleRequest(input)
	return out, req.Send()
}

// DescribeRefreshScheduleWithContext is the same as DescribeRefreshSchedule with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeRefreshSchedule 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 *QuickSight) DescribeRefreshScheduleWithContext(ctx aws.Context, input *DescribeRefreshScheduleInput, opts ...request.Option) (*DescribeRefreshScheduleOutput, error) {
	req, out := c.DescribeRefreshScheduleRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeRoleCustomPermission = "DescribeRoleCustomPermission"

// DescribeRoleCustomPermissionRequest generates a "aws/request.Request" representing the
// client's request for the DescribeRoleCustomPermission 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 DescribeRoleCustomPermission for more information on using the DescribeRoleCustomPermission
// 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 DescribeRoleCustomPermissionRequest method.
//	req, resp := client.DescribeRoleCustomPermissionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeRoleCustomPermission
func (c *QuickSight) DescribeRoleCustomPermissionRequest(input *DescribeRoleCustomPermissionInput) (req *request.Request, output *DescribeRoleCustomPermissionOutput) {
	op := &request.Operation{
		Name:       opDescribeRoleCustomPermission,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/roles/{Role}/custom-permission",
	}

	if input == nil {
		input = &DescribeRoleCustomPermissionInput{}
	}

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

// DescribeRoleCustomPermission API operation for Amazon QuickSight.
//
// Describes all custom permissions that are mapped to a role.
//
// 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 Amazon QuickSight's
// API operation DescribeRoleCustomPermission for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeRoleCustomPermission
func (c *QuickSight) DescribeRoleCustomPermission(input *DescribeRoleCustomPermissionInput) (*DescribeRoleCustomPermissionOutput, error) {
	req, out := c.DescribeRoleCustomPermissionRequest(input)
	return out, req.Send()
}

// DescribeRoleCustomPermissionWithContext is the same as DescribeRoleCustomPermission with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeRoleCustomPermission 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 *QuickSight) DescribeRoleCustomPermissionWithContext(ctx aws.Context, input *DescribeRoleCustomPermissionInput, opts ...request.Option) (*DescribeRoleCustomPermissionOutput, error) {
	req, out := c.DescribeRoleCustomPermissionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeTemplate = "DescribeTemplate"

// DescribeTemplateRequest generates a "aws/request.Request" representing the
// client's request for the DescribeTemplate 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 DescribeTemplate for more information on using the DescribeTemplate
// 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 DescribeTemplateRequest method.
//	req, resp := client.DescribeTemplateRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTemplate
func (c *QuickSight) DescribeTemplateRequest(input *DescribeTemplateInput) (req *request.Request, output *DescribeTemplateOutput) {
	op := &request.Operation{
		Name:       opDescribeTemplate,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/templates/{TemplateId}",
	}

	if input == nil {
		input = &DescribeTemplateInput{}
	}

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

// DescribeTemplate API operation for Amazon QuickSight.
//
// Describes a template's metadata.
//
// 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 Amazon QuickSight's
// API operation DescribeTemplate for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTemplate
func (c *QuickSight) DescribeTemplate(input *DescribeTemplateInput) (*DescribeTemplateOutput, error) {
	req, out := c.DescribeTemplateRequest(input)
	return out, req.Send()
}

// DescribeTemplateWithContext is the same as DescribeTemplate with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeTemplate 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 *QuickSight) DescribeTemplateWithContext(ctx aws.Context, input *DescribeTemplateInput, opts ...request.Option) (*DescribeTemplateOutput, error) {
	req, out := c.DescribeTemplateRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeTemplateAlias = "DescribeTemplateAlias"

// DescribeTemplateAliasRequest generates a "aws/request.Request" representing the
// client's request for the DescribeTemplateAlias 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 DescribeTemplateAlias for more information on using the DescribeTemplateAlias
// 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 DescribeTemplateAliasRequest method.
//	req, resp := client.DescribeTemplateAliasRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTemplateAlias
func (c *QuickSight) DescribeTemplateAliasRequest(input *DescribeTemplateAliasInput) (req *request.Request, output *DescribeTemplateAliasOutput) {
	op := &request.Operation{
		Name:       opDescribeTemplateAlias,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/templates/{TemplateId}/aliases/{AliasName}",
	}

	if input == nil {
		input = &DescribeTemplateAliasInput{}
	}

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

// DescribeTemplateAlias API operation for Amazon QuickSight.
//
// Describes the template alias for a template.
//
// 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 Amazon QuickSight's
// API operation DescribeTemplateAlias for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTemplateAlias
func (c *QuickSight) DescribeTemplateAlias(input *DescribeTemplateAliasInput) (*DescribeTemplateAliasOutput, error) {
	req, out := c.DescribeTemplateAliasRequest(input)
	return out, req.Send()
}

// DescribeTemplateAliasWithContext is the same as DescribeTemplateAlias with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeTemplateAlias 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 *QuickSight) DescribeTemplateAliasWithContext(ctx aws.Context, input *DescribeTemplateAliasInput, opts ...request.Option) (*DescribeTemplateAliasOutput, error) {
	req, out := c.DescribeTemplateAliasRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeTemplateDefinition = "DescribeTemplateDefinition"

// DescribeTemplateDefinitionRequest generates a "aws/request.Request" representing the
// client's request for the DescribeTemplateDefinition 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 DescribeTemplateDefinition for more information on using the DescribeTemplateDefinition
// 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 DescribeTemplateDefinitionRequest method.
//	req, resp := client.DescribeTemplateDefinitionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTemplateDefinition
func (c *QuickSight) DescribeTemplateDefinitionRequest(input *DescribeTemplateDefinitionInput) (req *request.Request, output *DescribeTemplateDefinitionOutput) {
	op := &request.Operation{
		Name:       opDescribeTemplateDefinition,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/templates/{TemplateId}/definition",
	}

	if input == nil {
		input = &DescribeTemplateDefinitionInput{}
	}

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

// DescribeTemplateDefinition API operation for Amazon QuickSight.
//
// Provides a detailed description of the definition of a template.
//
// If you do not need to know details about the content of a template, for instance
// if you are trying to check the status of a recently created or updated template,
// use the DescribeTemplate (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeTemplate.html)
// instead.
//
// 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 Amazon QuickSight's
// API operation DescribeTemplateDefinition for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTemplateDefinition
func (c *QuickSight) DescribeTemplateDefinition(input *DescribeTemplateDefinitionInput) (*DescribeTemplateDefinitionOutput, error) {
	req, out := c.DescribeTemplateDefinitionRequest(input)
	return out, req.Send()
}

// DescribeTemplateDefinitionWithContext is the same as DescribeTemplateDefinition with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeTemplateDefinition 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 *QuickSight) DescribeTemplateDefinitionWithContext(ctx aws.Context, input *DescribeTemplateDefinitionInput, opts ...request.Option) (*DescribeTemplateDefinitionOutput, error) {
	req, out := c.DescribeTemplateDefinitionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeTemplatePermissions = "DescribeTemplatePermissions"

// DescribeTemplatePermissionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeTemplatePermissions 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 DescribeTemplatePermissions for more information on using the DescribeTemplatePermissions
// 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 DescribeTemplatePermissionsRequest method.
//	req, resp := client.DescribeTemplatePermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTemplatePermissions
func (c *QuickSight) DescribeTemplatePermissionsRequest(input *DescribeTemplatePermissionsInput) (req *request.Request, output *DescribeTemplatePermissionsOutput) {
	op := &request.Operation{
		Name:       opDescribeTemplatePermissions,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/templates/{TemplateId}/permissions",
	}

	if input == nil {
		input = &DescribeTemplatePermissionsInput{}
	}

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

// DescribeTemplatePermissions API operation for Amazon QuickSight.
//
// Describes read and write permissions on a template.
//
// 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 Amazon QuickSight's
// API operation DescribeTemplatePermissions for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTemplatePermissions
func (c *QuickSight) DescribeTemplatePermissions(input *DescribeTemplatePermissionsInput) (*DescribeTemplatePermissionsOutput, error) {
	req, out := c.DescribeTemplatePermissionsRequest(input)
	return out, req.Send()
}

// DescribeTemplatePermissionsWithContext is the same as DescribeTemplatePermissions with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeTemplatePermissions 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 *QuickSight) DescribeTemplatePermissionsWithContext(ctx aws.Context, input *DescribeTemplatePermissionsInput, opts ...request.Option) (*DescribeTemplatePermissionsOutput, error) {
	req, out := c.DescribeTemplatePermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeTheme = "DescribeTheme"

// DescribeThemeRequest generates a "aws/request.Request" representing the
// client's request for the DescribeTheme 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 DescribeTheme for more information on using the DescribeTheme
// 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 DescribeThemeRequest method.
//	req, resp := client.DescribeThemeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTheme
func (c *QuickSight) DescribeThemeRequest(input *DescribeThemeInput) (req *request.Request, output *DescribeThemeOutput) {
	op := &request.Operation{
		Name:       opDescribeTheme,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/themes/{ThemeId}",
	}

	if input == nil {
		input = &DescribeThemeInput{}
	}

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

// DescribeTheme API operation for Amazon QuickSight.
//
// Describes a theme.
//
// 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 Amazon QuickSight's
// API operation DescribeTheme for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTheme
func (c *QuickSight) DescribeTheme(input *DescribeThemeInput) (*DescribeThemeOutput, error) {
	req, out := c.DescribeThemeRequest(input)
	return out, req.Send()
}

// DescribeThemeWithContext is the same as DescribeTheme with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeTheme 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 *QuickSight) DescribeThemeWithContext(ctx aws.Context, input *DescribeThemeInput, opts ...request.Option) (*DescribeThemeOutput, error) {
	req, out := c.DescribeThemeRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeThemeAlias = "DescribeThemeAlias"

// DescribeThemeAliasRequest generates a "aws/request.Request" representing the
// client's request for the DescribeThemeAlias 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 DescribeThemeAlias for more information on using the DescribeThemeAlias
// 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 DescribeThemeAliasRequest method.
//	req, resp := client.DescribeThemeAliasRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeThemeAlias
func (c *QuickSight) DescribeThemeAliasRequest(input *DescribeThemeAliasInput) (req *request.Request, output *DescribeThemeAliasOutput) {
	op := &request.Operation{
		Name:       opDescribeThemeAlias,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/themes/{ThemeId}/aliases/{AliasName}",
	}

	if input == nil {
		input = &DescribeThemeAliasInput{}
	}

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

// DescribeThemeAlias API operation for Amazon QuickSight.
//
// Describes the alias for a theme.
//
// 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 Amazon QuickSight's
// API operation DescribeThemeAlias for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeThemeAlias
func (c *QuickSight) DescribeThemeAlias(input *DescribeThemeAliasInput) (*DescribeThemeAliasOutput, error) {
	req, out := c.DescribeThemeAliasRequest(input)
	return out, req.Send()
}

// DescribeThemeAliasWithContext is the same as DescribeThemeAlias with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeThemeAlias 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 *QuickSight) DescribeThemeAliasWithContext(ctx aws.Context, input *DescribeThemeAliasInput, opts ...request.Option) (*DescribeThemeAliasOutput, error) {
	req, out := c.DescribeThemeAliasRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeThemePermissions = "DescribeThemePermissions"

// DescribeThemePermissionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeThemePermissions 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 DescribeThemePermissions for more information on using the DescribeThemePermissions
// 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 DescribeThemePermissionsRequest method.
//	req, resp := client.DescribeThemePermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeThemePermissions
func (c *QuickSight) DescribeThemePermissionsRequest(input *DescribeThemePermissionsInput) (req *request.Request, output *DescribeThemePermissionsOutput) {
	op := &request.Operation{
		Name:       opDescribeThemePermissions,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/themes/{ThemeId}/permissions",
	}

	if input == nil {
		input = &DescribeThemePermissionsInput{}
	}

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

// DescribeThemePermissions API operation for Amazon QuickSight.
//
// Describes the read and write permissions for a theme.
//
// 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 Amazon QuickSight's
// API operation DescribeThemePermissions for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeThemePermissions
func (c *QuickSight) DescribeThemePermissions(input *DescribeThemePermissionsInput) (*DescribeThemePermissionsOutput, error) {
	req, out := c.DescribeThemePermissionsRequest(input)
	return out, req.Send()
}

// DescribeThemePermissionsWithContext is the same as DescribeThemePermissions with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeThemePermissions 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 *QuickSight) DescribeThemePermissionsWithContext(ctx aws.Context, input *DescribeThemePermissionsInput, opts ...request.Option) (*DescribeThemePermissionsOutput, error) {
	req, out := c.DescribeThemePermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeTopic = "DescribeTopic"

// DescribeTopicRequest generates a "aws/request.Request" representing the
// client's request for the DescribeTopic 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 DescribeTopic for more information on using the DescribeTopic
// 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 DescribeTopicRequest method.
//	req, resp := client.DescribeTopicRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTopic
func (c *QuickSight) DescribeTopicRequest(input *DescribeTopicInput) (req *request.Request, output *DescribeTopicOutput) {
	op := &request.Operation{
		Name:       opDescribeTopic,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/topics/{TopicId}",
	}

	if input == nil {
		input = &DescribeTopicInput{}
	}

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

// DescribeTopic API operation for Amazon QuickSight.
//
// Describes a topic.
//
// 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 Amazon QuickSight's
// API operation DescribeTopic for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTopic
func (c *QuickSight) DescribeTopic(input *DescribeTopicInput) (*DescribeTopicOutput, error) {
	req, out := c.DescribeTopicRequest(input)
	return out, req.Send()
}

// DescribeTopicWithContext is the same as DescribeTopic with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeTopic 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 *QuickSight) DescribeTopicWithContext(ctx aws.Context, input *DescribeTopicInput, opts ...request.Option) (*DescribeTopicOutput, error) {
	req, out := c.DescribeTopicRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeTopicPermissions = "DescribeTopicPermissions"

// DescribeTopicPermissionsRequest generates a "aws/request.Request" representing the
// client's request for the DescribeTopicPermissions 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 DescribeTopicPermissions for more information on using the DescribeTopicPermissions
// 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 DescribeTopicPermissionsRequest method.
//	req, resp := client.DescribeTopicPermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTopicPermissions
func (c *QuickSight) DescribeTopicPermissionsRequest(input *DescribeTopicPermissionsInput) (req *request.Request, output *DescribeTopicPermissionsOutput) {
	op := &request.Operation{
		Name:       opDescribeTopicPermissions,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/topics/{TopicId}/permissions",
	}

	if input == nil {
		input = &DescribeTopicPermissionsInput{}
	}

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

// DescribeTopicPermissions API operation for Amazon QuickSight.
//
// Describes the permissions of a topic.
//
// 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 Amazon QuickSight's
// API operation DescribeTopicPermissions for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTopicPermissions
func (c *QuickSight) DescribeTopicPermissions(input *DescribeTopicPermissionsInput) (*DescribeTopicPermissionsOutput, error) {
	req, out := c.DescribeTopicPermissionsRequest(input)
	return out, req.Send()
}

// DescribeTopicPermissionsWithContext is the same as DescribeTopicPermissions with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeTopicPermissions 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 *QuickSight) DescribeTopicPermissionsWithContext(ctx aws.Context, input *DescribeTopicPermissionsInput, opts ...request.Option) (*DescribeTopicPermissionsOutput, error) {
	req, out := c.DescribeTopicPermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeTopicRefresh = "DescribeTopicRefresh"

// DescribeTopicRefreshRequest generates a "aws/request.Request" representing the
// client's request for the DescribeTopicRefresh 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 DescribeTopicRefresh for more information on using the DescribeTopicRefresh
// 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 DescribeTopicRefreshRequest method.
//	req, resp := client.DescribeTopicRefreshRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTopicRefresh
func (c *QuickSight) DescribeTopicRefreshRequest(input *DescribeTopicRefreshInput) (req *request.Request, output *DescribeTopicRefreshOutput) {
	op := &request.Operation{
		Name:       opDescribeTopicRefresh,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/topics/{TopicId}/refresh/{RefreshId}",
	}

	if input == nil {
		input = &DescribeTopicRefreshInput{}
	}

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

// DescribeTopicRefresh API operation for Amazon QuickSight.
//
// Describes the status of a topic refresh.
//
// 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 Amazon QuickSight's
// API operation DescribeTopicRefresh for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTopicRefresh
func (c *QuickSight) DescribeTopicRefresh(input *DescribeTopicRefreshInput) (*DescribeTopicRefreshOutput, error) {
	req, out := c.DescribeTopicRefreshRequest(input)
	return out, req.Send()
}

// DescribeTopicRefreshWithContext is the same as DescribeTopicRefresh with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeTopicRefresh 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 *QuickSight) DescribeTopicRefreshWithContext(ctx aws.Context, input *DescribeTopicRefreshInput, opts ...request.Option) (*DescribeTopicRefreshOutput, error) {
	req, out := c.DescribeTopicRefreshRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeTopicRefreshSchedule = "DescribeTopicRefreshSchedule"

// DescribeTopicRefreshScheduleRequest generates a "aws/request.Request" representing the
// client's request for the DescribeTopicRefreshSchedule 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 DescribeTopicRefreshSchedule for more information on using the DescribeTopicRefreshSchedule
// 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 DescribeTopicRefreshScheduleRequest method.
//	req, resp := client.DescribeTopicRefreshScheduleRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTopicRefreshSchedule
func (c *QuickSight) DescribeTopicRefreshScheduleRequest(input *DescribeTopicRefreshScheduleInput) (req *request.Request, output *DescribeTopicRefreshScheduleOutput) {
	op := &request.Operation{
		Name:       opDescribeTopicRefreshSchedule,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/topics/{TopicId}/schedules/{DatasetId}",
	}

	if input == nil {
		input = &DescribeTopicRefreshScheduleInput{}
	}

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

// DescribeTopicRefreshSchedule API operation for Amazon QuickSight.
//
// Deletes a topic refresh schedule.
//
// 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 Amazon QuickSight's
// API operation DescribeTopicRefreshSchedule for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeTopicRefreshSchedule
func (c *QuickSight) DescribeTopicRefreshSchedule(input *DescribeTopicRefreshScheduleInput) (*DescribeTopicRefreshScheduleOutput, error) {
	req, out := c.DescribeTopicRefreshScheduleRequest(input)
	return out, req.Send()
}

// DescribeTopicRefreshScheduleWithContext is the same as DescribeTopicRefreshSchedule with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeTopicRefreshSchedule 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 *QuickSight) DescribeTopicRefreshScheduleWithContext(ctx aws.Context, input *DescribeTopicRefreshScheduleInput, opts ...request.Option) (*DescribeTopicRefreshScheduleOutput, error) {
	req, out := c.DescribeTopicRefreshScheduleRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeUser = "DescribeUser"

// DescribeUserRequest generates a "aws/request.Request" representing the
// client's request for the DescribeUser 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 DescribeUser for more information on using the DescribeUser
// 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 DescribeUserRequest method.
//	req, resp := client.DescribeUserRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeUser
func (c *QuickSight) DescribeUserRequest(input *DescribeUserInput) (req *request.Request, output *DescribeUserOutput) {
	op := &request.Operation{
		Name:       opDescribeUser,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/users/{UserName}",
	}

	if input == nil {
		input = &DescribeUserInput{}
	}

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

// DescribeUser API operation for Amazon QuickSight.
//
// Returns information about a user, given the user 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 Amazon QuickSight's
// API operation DescribeUser for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeUser
func (c *QuickSight) DescribeUser(input *DescribeUserInput) (*DescribeUserOutput, error) {
	req, out := c.DescribeUserRequest(input)
	return out, req.Send()
}

// DescribeUserWithContext is the same as DescribeUser with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeUser 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 *QuickSight) DescribeUserWithContext(ctx aws.Context, input *DescribeUserInput, opts ...request.Option) (*DescribeUserOutput, error) {
	req, out := c.DescribeUserRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDescribeVPCConnection = "DescribeVPCConnection"

// DescribeVPCConnectionRequest generates a "aws/request.Request" representing the
// client's request for the DescribeVPCConnection 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 DescribeVPCConnection for more information on using the DescribeVPCConnection
// 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 DescribeVPCConnectionRequest method.
//	req, resp := client.DescribeVPCConnectionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeVPCConnection
func (c *QuickSight) DescribeVPCConnectionRequest(input *DescribeVPCConnectionInput) (req *request.Request, output *DescribeVPCConnectionOutput) {
	op := &request.Operation{
		Name:       opDescribeVPCConnection,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/vpc-connections/{VPCConnectionId}",
	}

	if input == nil {
		input = &DescribeVPCConnectionInput{}
	}

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

// DescribeVPCConnection API operation for Amazon QuickSight.
//
// Describes a VPC connection.
//
// 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 Amazon QuickSight's
// API operation DescribeVPCConnection for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/DescribeVPCConnection
func (c *QuickSight) DescribeVPCConnection(input *DescribeVPCConnectionInput) (*DescribeVPCConnectionOutput, error) {
	req, out := c.DescribeVPCConnectionRequest(input)
	return out, req.Send()
}

// DescribeVPCConnectionWithContext is the same as DescribeVPCConnection with the addition of
// the ability to pass a context and additional request options.
//
// See DescribeVPCConnection 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 *QuickSight) DescribeVPCConnectionWithContext(ctx aws.Context, input *DescribeVPCConnectionInput, opts ...request.Option) (*DescribeVPCConnectionOutput, error) {
	req, out := c.DescribeVPCConnectionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGenerateEmbedUrlForAnonymousUser = "GenerateEmbedUrlForAnonymousUser"

// GenerateEmbedUrlForAnonymousUserRequest generates a "aws/request.Request" representing the
// client's request for the GenerateEmbedUrlForAnonymousUser 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 GenerateEmbedUrlForAnonymousUser for more information on using the GenerateEmbedUrlForAnonymousUser
// 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 GenerateEmbedUrlForAnonymousUserRequest method.
//	req, resp := client.GenerateEmbedUrlForAnonymousUserRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/GenerateEmbedUrlForAnonymousUser
func (c *QuickSight) GenerateEmbedUrlForAnonymousUserRequest(input *GenerateEmbedUrlForAnonymousUserInput) (req *request.Request, output *GenerateEmbedUrlForAnonymousUserOutput) {
	op := &request.Operation{
		Name:       opGenerateEmbedUrlForAnonymousUser,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/embed-url/anonymous-user",
	}

	if input == nil {
		input = &GenerateEmbedUrlForAnonymousUserInput{}
	}

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

// GenerateEmbedUrlForAnonymousUser API operation for Amazon QuickSight.
//
// Generates an embed URL that you can use to embed an Amazon QuickSight dashboard
// or visual in your website, without having to register any reader users. Before
// you use this action, make sure that you have configured the dashboards and
// permissions.
//
// The following rules apply to the generated URL:
//
//   - It contains a temporary bearer token. It is valid for 5 minutes after
//     it is generated. Once redeemed within this period, it cannot be re-used
//     again.
//
//   - The URL validity period should not be confused with the actual session
//     lifetime that can be customized using the SessionLifetimeInMinutes (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html#QS-GenerateEmbedUrlForAnonymousUser-request-SessionLifetimeInMinutes)
//     parameter. The resulting user session is valid for 15 minutes (minimum)
//     to 10 hours (maximum). The default session duration is 10 hours.
//
//   - You are charged only when the URL is used or there is interaction with
//     Amazon QuickSight.
//
// For more information, see Embedded Analytics (https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics.html)
// in the Amazon QuickSight User Guide.
//
// For more information about the high-level steps for embedding and for an
// interactive demo of the ways you can customize embedding, visit the Amazon
// QuickSight Developer Portal (https://docs.aws.amazon.com/quicksight/latest/user/quicksight-dev-portal.html).
//
// 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 Amazon QuickSight's
// API operation GenerateEmbedUrlForAnonymousUser for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - SessionLifetimeInMinutesInvalidException
//     The number of minutes specified for the lifetime of a session isn't valid.
//     The session lifetime must be 15-600 minutes.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - UnsupportedPricingPlanException
//     This error indicates that you are calling an embedding operation in Amazon
//     QuickSight without the required pricing plan on your Amazon Web Services
//     account. Before you can use embedding for anonymous users, a QuickSight administrator
//     needs to add capacity pricing to Amazon QuickSight. You can do this on the
//     Manage Amazon QuickSight page.
//
//     After capacity pricing is added, you can use the GetDashboardEmbedUrl (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html)
//     API operation with the --identity-type ANONYMOUS option.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/GenerateEmbedUrlForAnonymousUser
func (c *QuickSight) GenerateEmbedUrlForAnonymousUser(input *GenerateEmbedUrlForAnonymousUserInput) (*GenerateEmbedUrlForAnonymousUserOutput, error) {
	req, out := c.GenerateEmbedUrlForAnonymousUserRequest(input)
	return out, req.Send()
}

// GenerateEmbedUrlForAnonymousUserWithContext is the same as GenerateEmbedUrlForAnonymousUser with the addition of
// the ability to pass a context and additional request options.
//
// See GenerateEmbedUrlForAnonymousUser 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 *QuickSight) GenerateEmbedUrlForAnonymousUserWithContext(ctx aws.Context, input *GenerateEmbedUrlForAnonymousUserInput, opts ...request.Option) (*GenerateEmbedUrlForAnonymousUserOutput, error) {
	req, out := c.GenerateEmbedUrlForAnonymousUserRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGenerateEmbedUrlForRegisteredUser = "GenerateEmbedUrlForRegisteredUser"

// GenerateEmbedUrlForRegisteredUserRequest generates a "aws/request.Request" representing the
// client's request for the GenerateEmbedUrlForRegisteredUser 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 GenerateEmbedUrlForRegisteredUser for more information on using the GenerateEmbedUrlForRegisteredUser
// 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 GenerateEmbedUrlForRegisteredUserRequest method.
//	req, resp := client.GenerateEmbedUrlForRegisteredUserRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/GenerateEmbedUrlForRegisteredUser
func (c *QuickSight) GenerateEmbedUrlForRegisteredUserRequest(input *GenerateEmbedUrlForRegisteredUserInput) (req *request.Request, output *GenerateEmbedUrlForRegisteredUserOutput) {
	op := &request.Operation{
		Name:       opGenerateEmbedUrlForRegisteredUser,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/embed-url/registered-user",
	}

	if input == nil {
		input = &GenerateEmbedUrlForRegisteredUserInput{}
	}

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

// GenerateEmbedUrlForRegisteredUser API operation for Amazon QuickSight.
//
// Generates an embed URL that you can use to embed an Amazon QuickSight experience
// in your website. This action can be used for any type of user registered
// in an Amazon QuickSight account. Before you use this action, make sure that
// you have configured the relevant Amazon QuickSight resource and permissions.
//
// The following rules apply to the generated URL:
//
//   - It contains a temporary bearer token. It is valid for 5 minutes after
//     it is generated. Once redeemed within this period, it cannot be re-used
//     again.
//
//   - The URL validity period should not be confused with the actual session
//     lifetime that can be customized using the SessionLifetimeInMinutes (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html#QS-GenerateEmbedUrlForRegisteredUser-request-SessionLifetimeInMinutes)
//     parameter. The resulting user session is valid for 15 minutes (minimum)
//     to 10 hours (maximum). The default session duration is 10 hours.
//
//   - You are charged only when the URL is used or there is interaction with
//     Amazon QuickSight.
//
// For more information, see Embedded Analytics (https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics.html)
// in the Amazon QuickSight User Guide.
//
// For more information about the high-level steps for embedding and for an
// interactive demo of the ways you can customize embedding, visit the Amazon
// QuickSight Developer Portal (https://docs.aws.amazon.com/quicksight/latest/user/quicksight-dev-portal.html).
//
// 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 Amazon QuickSight's
// API operation GenerateEmbedUrlForRegisteredUser for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - UserNotFoundException
//     The user with the provided name isn't found. This error can happen in any
//     operation that requires finding a user based on a provided user name, such
//     as DeleteUser, DescribeUser, and so on.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - SessionLifetimeInMinutesInvalidException
//     The number of minutes specified for the lifetime of a session isn't valid.
//     The session lifetime must be 15-600 minutes.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - UnsupportedPricingPlanException
//     This error indicates that you are calling an embedding operation in Amazon
//     QuickSight without the required pricing plan on your Amazon Web Services
//     account. Before you can use embedding for anonymous users, a QuickSight administrator
//     needs to add capacity pricing to Amazon QuickSight. You can do this on the
//     Manage Amazon QuickSight page.
//
//     After capacity pricing is added, you can use the GetDashboardEmbedUrl (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html)
//     API operation with the --identity-type ANONYMOUS option.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/GenerateEmbedUrlForRegisteredUser
func (c *QuickSight) GenerateEmbedUrlForRegisteredUser(input *GenerateEmbedUrlForRegisteredUserInput) (*GenerateEmbedUrlForRegisteredUserOutput, error) {
	req, out := c.GenerateEmbedUrlForRegisteredUserRequest(input)
	return out, req.Send()
}

// GenerateEmbedUrlForRegisteredUserWithContext is the same as GenerateEmbedUrlForRegisteredUser with the addition of
// the ability to pass a context and additional request options.
//
// See GenerateEmbedUrlForRegisteredUser 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 *QuickSight) GenerateEmbedUrlForRegisteredUserWithContext(ctx aws.Context, input *GenerateEmbedUrlForRegisteredUserInput, opts ...request.Option) (*GenerateEmbedUrlForRegisteredUserOutput, error) {
	req, out := c.GenerateEmbedUrlForRegisteredUserRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetDashboardEmbedUrl = "GetDashboardEmbedUrl"

// GetDashboardEmbedUrlRequest generates a "aws/request.Request" representing the
// client's request for the GetDashboardEmbedUrl 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 GetDashboardEmbedUrl for more information on using the GetDashboardEmbedUrl
// 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 GetDashboardEmbedUrlRequest method.
//	req, resp := client.GetDashboardEmbedUrlRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/GetDashboardEmbedUrl
func (c *QuickSight) GetDashboardEmbedUrlRequest(input *GetDashboardEmbedUrlInput) (req *request.Request, output *GetDashboardEmbedUrlOutput) {
	op := &request.Operation{
		Name:       opGetDashboardEmbedUrl,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/dashboards/{DashboardId}/embed-url",
	}

	if input == nil {
		input = &GetDashboardEmbedUrlInput{}
	}

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

// GetDashboardEmbedUrl API operation for Amazon QuickSight.
//
// Generates a temporary session URL and authorization code(bearer token) that
// you can use to embed an Amazon QuickSight read-only dashboard in your website
// or application. Before you use this command, make sure that you have configured
// the dashboards and permissions.
//
// Currently, you can use GetDashboardEmbedURL only from the server, not from
// the user's browser. The following rules apply to the generated URL:
//
//   - They must be used together.
//
//   - They can be used one time only.
//
//   - They are valid for 5 minutes after you run this command.
//
//   - You are charged only when the URL is used or there is interaction with
//     Amazon QuickSight.
//
//   - The resulting user session is valid for 15 minutes (default) up to 10
//     hours (maximum). You can use the optional SessionLifetimeInMinutes parameter
//     to customize session duration.
//
// For more information, see Embedding Analytics Using GetDashboardEmbedUrl
// (https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-deprecated.html)
// in the Amazon QuickSight User Guide.
//
// For more information about the high-level steps for embedding and for an
// interactive demo of the ways you can customize embedding, visit the Amazon
// QuickSight Developer Portal (https://docs.aws.amazon.com/quicksight/latest/user/quicksight-dev-portal.html).
//
// 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 Amazon QuickSight's
// API operation GetDashboardEmbedUrl for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - DomainNotWhitelistedException
//     The domain specified isn't on the allow list. All domains for embedded dashboards
//     must be added to the approved list by an Amazon QuickSight admin.
//
//   - UserNotFoundException
//     The user with the provided name isn't found. This error can happen in any
//     operation that requires finding a user based on a provided user name, such
//     as DeleteUser, DescribeUser, and so on.
//
//   - IdentityTypeNotSupportedException
//     The identity type specified isn't supported. Supported identity types include
//     IAM and QUICKSIGHT.
//
//   - SessionLifetimeInMinutesInvalidException
//     The number of minutes specified for the lifetime of a session isn't valid.
//     The session lifetime must be 15-600 minutes.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - UnsupportedPricingPlanException
//     This error indicates that you are calling an embedding operation in Amazon
//     QuickSight without the required pricing plan on your Amazon Web Services
//     account. Before you can use embedding for anonymous users, a QuickSight administrator
//     needs to add capacity pricing to Amazon QuickSight. You can do this on the
//     Manage Amazon QuickSight page.
//
//     After capacity pricing is added, you can use the GetDashboardEmbedUrl (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html)
//     API operation with the --identity-type ANONYMOUS option.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/GetDashboardEmbedUrl
func (c *QuickSight) GetDashboardEmbedUrl(input *GetDashboardEmbedUrlInput) (*GetDashboardEmbedUrlOutput, error) {
	req, out := c.GetDashboardEmbedUrlRequest(input)
	return out, req.Send()
}

// GetDashboardEmbedUrlWithContext is the same as GetDashboardEmbedUrl with the addition of
// the ability to pass a context and additional request options.
//
// See GetDashboardEmbedUrl 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 *QuickSight) GetDashboardEmbedUrlWithContext(ctx aws.Context, input *GetDashboardEmbedUrlInput, opts ...request.Option) (*GetDashboardEmbedUrlOutput, error) {
	req, out := c.GetDashboardEmbedUrlRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetSessionEmbedUrl = "GetSessionEmbedUrl"

// GetSessionEmbedUrlRequest generates a "aws/request.Request" representing the
// client's request for the GetSessionEmbedUrl 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 GetSessionEmbedUrl for more information on using the GetSessionEmbedUrl
// 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 GetSessionEmbedUrlRequest method.
//	req, resp := client.GetSessionEmbedUrlRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/GetSessionEmbedUrl
func (c *QuickSight) GetSessionEmbedUrlRequest(input *GetSessionEmbedUrlInput) (req *request.Request, output *GetSessionEmbedUrlOutput) {
	op := &request.Operation{
		Name:       opGetSessionEmbedUrl,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/session-embed-url",
	}

	if input == nil {
		input = &GetSessionEmbedUrlInput{}
	}

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

// GetSessionEmbedUrl API operation for Amazon QuickSight.
//
// Generates a session URL and authorization code that you can use to embed
// the Amazon Amazon QuickSight console in your web server code. Use GetSessionEmbedUrl
// where you want to provide an authoring portal that allows users to create
// data sources, datasets, analyses, and dashboards. The users who access an
// embedded Amazon QuickSight console need belong to the author or admin security
// cohort. If you want to restrict permissions to some of these features, add
// a custom permissions profile to the user with the UpdateUser (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateUser.html)
// API operation. Use RegisterUser (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html)
// API operation to add a new user with a custom permission profile attached.
// For more information, see the following sections in the Amazon QuickSight
// User Guide:
//
//   - Embedding Analytics (https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics.html)
//
//   - Customizing Access to the Amazon QuickSight Console (https://docs.aws.amazon.com/quicksight/latest/user/customizing-permissions-to-the-quicksight-console.html)
//
// 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 Amazon QuickSight's
// API operation GetSessionEmbedUrl for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UserNotFoundException
//     The user with the provided name isn't found. This error can happen in any
//     operation that requires finding a user based on a provided user name, such
//     as DeleteUser, DescribeUser, and so on.
//
//   - SessionLifetimeInMinutesInvalidException
//     The number of minutes specified for the lifetime of a session isn't valid.
//     The session lifetime must be 15-600 minutes.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/GetSessionEmbedUrl
func (c *QuickSight) GetSessionEmbedUrl(input *GetSessionEmbedUrlInput) (*GetSessionEmbedUrlOutput, error) {
	req, out := c.GetSessionEmbedUrlRequest(input)
	return out, req.Send()
}

// GetSessionEmbedUrlWithContext is the same as GetSessionEmbedUrl with the addition of
// the ability to pass a context and additional request options.
//
// See GetSessionEmbedUrl 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 *QuickSight) GetSessionEmbedUrlWithContext(ctx aws.Context, input *GetSessionEmbedUrlInput, opts ...request.Option) (*GetSessionEmbedUrlOutput, error) {
	req, out := c.GetSessionEmbedUrlRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opListAnalyses = "ListAnalyses"

// ListAnalysesRequest generates a "aws/request.Request" representing the
// client's request for the ListAnalyses 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 ListAnalyses for more information on using the ListAnalyses
// 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 ListAnalysesRequest method.
//	req, resp := client.ListAnalysesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListAnalyses
func (c *QuickSight) ListAnalysesRequest(input *ListAnalysesInput) (req *request.Request, output *ListAnalysesOutput) {
	op := &request.Operation{
		Name:       opListAnalyses,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/analyses",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListAnalysesInput{}
	}

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

// ListAnalyses API operation for Amazon QuickSight.
//
// Lists Amazon QuickSight analyses that exist in the specified Amazon Web Services
// 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 Amazon QuickSight's
// API operation ListAnalyses for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListAnalyses
func (c *QuickSight) ListAnalyses(input *ListAnalysesInput) (*ListAnalysesOutput, error) {
	req, out := c.ListAnalysesRequest(input)
	return out, req.Send()
}

// ListAnalysesWithContext is the same as ListAnalyses with the addition of
// the ability to pass a context and additional request options.
//
// See ListAnalyses 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 *QuickSight) ListAnalysesWithContext(ctx aws.Context, input *ListAnalysesInput, opts ...request.Option) (*ListAnalysesOutput, error) {
	req, out := c.ListAnalysesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListAnalysesPages iterates over the pages of a ListAnalyses operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListAnalyses 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 ListAnalyses operation.
//	pageNum := 0
//	err := client.ListAnalysesPages(params,
//	    func(page *quicksight.ListAnalysesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListAnalysesPages(input *ListAnalysesInput, fn func(*ListAnalysesOutput, bool) bool) error {
	return c.ListAnalysesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListAnalysesPagesWithContext same as ListAnalysesPages 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 *QuickSight) ListAnalysesPagesWithContext(ctx aws.Context, input *ListAnalysesInput, fn func(*ListAnalysesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListAnalysesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListAnalysesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListAssetBundleExportJobs = "ListAssetBundleExportJobs"

// ListAssetBundleExportJobsRequest generates a "aws/request.Request" representing the
// client's request for the ListAssetBundleExportJobs 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 ListAssetBundleExportJobs for more information on using the ListAssetBundleExportJobs
// 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 ListAssetBundleExportJobsRequest method.
//	req, resp := client.ListAssetBundleExportJobsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListAssetBundleExportJobs
func (c *QuickSight) ListAssetBundleExportJobsRequest(input *ListAssetBundleExportJobsInput) (req *request.Request, output *ListAssetBundleExportJobsOutput) {
	op := &request.Operation{
		Name:       opListAssetBundleExportJobs,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/asset-bundle-export-jobs",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListAssetBundleExportJobsInput{}
	}

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

// ListAssetBundleExportJobs API operation for Amazon QuickSight.
//
// Lists all asset bundle export jobs that have been taken place in the last
// 14 days. Jobs created more than 14 days ago are deleted forever and are not
// returned. If you are using the same job ID for multiple jobs, ListAssetBundleExportJobs
// only returns the most recent job that uses the repeated job ID.
//
// 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 Amazon QuickSight's
// API operation ListAssetBundleExportJobs for usage and error information.
//
// Returned Error Types:
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListAssetBundleExportJobs
func (c *QuickSight) ListAssetBundleExportJobs(input *ListAssetBundleExportJobsInput) (*ListAssetBundleExportJobsOutput, error) {
	req, out := c.ListAssetBundleExportJobsRequest(input)
	return out, req.Send()
}

// ListAssetBundleExportJobsWithContext is the same as ListAssetBundleExportJobs with the addition of
// the ability to pass a context and additional request options.
//
// See ListAssetBundleExportJobs 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 *QuickSight) ListAssetBundleExportJobsWithContext(ctx aws.Context, input *ListAssetBundleExportJobsInput, opts ...request.Option) (*ListAssetBundleExportJobsOutput, error) {
	req, out := c.ListAssetBundleExportJobsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListAssetBundleExportJobsPages iterates over the pages of a ListAssetBundleExportJobs operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListAssetBundleExportJobs 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 ListAssetBundleExportJobs operation.
//	pageNum := 0
//	err := client.ListAssetBundleExportJobsPages(params,
//	    func(page *quicksight.ListAssetBundleExportJobsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListAssetBundleExportJobsPages(input *ListAssetBundleExportJobsInput, fn func(*ListAssetBundleExportJobsOutput, bool) bool) error {
	return c.ListAssetBundleExportJobsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListAssetBundleExportJobsPagesWithContext same as ListAssetBundleExportJobsPages 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 *QuickSight) ListAssetBundleExportJobsPagesWithContext(ctx aws.Context, input *ListAssetBundleExportJobsInput, fn func(*ListAssetBundleExportJobsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListAssetBundleExportJobsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListAssetBundleExportJobsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListAssetBundleImportJobs = "ListAssetBundleImportJobs"

// ListAssetBundleImportJobsRequest generates a "aws/request.Request" representing the
// client's request for the ListAssetBundleImportJobs 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 ListAssetBundleImportJobs for more information on using the ListAssetBundleImportJobs
// 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 ListAssetBundleImportJobsRequest method.
//	req, resp := client.ListAssetBundleImportJobsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListAssetBundleImportJobs
func (c *QuickSight) ListAssetBundleImportJobsRequest(input *ListAssetBundleImportJobsInput) (req *request.Request, output *ListAssetBundleImportJobsOutput) {
	op := &request.Operation{
		Name:       opListAssetBundleImportJobs,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/asset-bundle-import-jobs",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListAssetBundleImportJobsInput{}
	}

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

// ListAssetBundleImportJobs API operation for Amazon QuickSight.
//
// Lists all asset bundle import jobs that have taken place in the last 14 days.
// Jobs created more than 14 days ago are deleted forever and are not returned.
// If you are using the same job ID for multiple jobs, ListAssetBundleImportJobs
// only returns the most recent job that uses the repeated job ID.
//
// 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 Amazon QuickSight's
// API operation ListAssetBundleImportJobs for usage and error information.
//
// Returned Error Types:
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListAssetBundleImportJobs
func (c *QuickSight) ListAssetBundleImportJobs(input *ListAssetBundleImportJobsInput) (*ListAssetBundleImportJobsOutput, error) {
	req, out := c.ListAssetBundleImportJobsRequest(input)
	return out, req.Send()
}

// ListAssetBundleImportJobsWithContext is the same as ListAssetBundleImportJobs with the addition of
// the ability to pass a context and additional request options.
//
// See ListAssetBundleImportJobs 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 *QuickSight) ListAssetBundleImportJobsWithContext(ctx aws.Context, input *ListAssetBundleImportJobsInput, opts ...request.Option) (*ListAssetBundleImportJobsOutput, error) {
	req, out := c.ListAssetBundleImportJobsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListAssetBundleImportJobsPages iterates over the pages of a ListAssetBundleImportJobs operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListAssetBundleImportJobs 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 ListAssetBundleImportJobs operation.
//	pageNum := 0
//	err := client.ListAssetBundleImportJobsPages(params,
//	    func(page *quicksight.ListAssetBundleImportJobsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListAssetBundleImportJobsPages(input *ListAssetBundleImportJobsInput, fn func(*ListAssetBundleImportJobsOutput, bool) bool) error {
	return c.ListAssetBundleImportJobsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListAssetBundleImportJobsPagesWithContext same as ListAssetBundleImportJobsPages 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 *QuickSight) ListAssetBundleImportJobsPagesWithContext(ctx aws.Context, input *ListAssetBundleImportJobsInput, fn func(*ListAssetBundleImportJobsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListAssetBundleImportJobsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListAssetBundleImportJobsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListDashboardVersions = "ListDashboardVersions"

// ListDashboardVersionsRequest generates a "aws/request.Request" representing the
// client's request for the ListDashboardVersions 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 ListDashboardVersions for more information on using the ListDashboardVersions
// 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 ListDashboardVersionsRequest method.
//	req, resp := client.ListDashboardVersionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListDashboardVersions
func (c *QuickSight) ListDashboardVersionsRequest(input *ListDashboardVersionsInput) (req *request.Request, output *ListDashboardVersionsOutput) {
	op := &request.Operation{
		Name:       opListDashboardVersions,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/dashboards/{DashboardId}/versions",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListDashboardVersionsInput{}
	}

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

// ListDashboardVersions API operation for Amazon QuickSight.
//
// Lists all the versions of the dashboards in the Amazon QuickSight subscription.
//
// 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 Amazon QuickSight's
// API operation ListDashboardVersions for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListDashboardVersions
func (c *QuickSight) ListDashboardVersions(input *ListDashboardVersionsInput) (*ListDashboardVersionsOutput, error) {
	req, out := c.ListDashboardVersionsRequest(input)
	return out, req.Send()
}

// ListDashboardVersionsWithContext is the same as ListDashboardVersions with the addition of
// the ability to pass a context and additional request options.
//
// See ListDashboardVersions 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 *QuickSight) ListDashboardVersionsWithContext(ctx aws.Context, input *ListDashboardVersionsInput, opts ...request.Option) (*ListDashboardVersionsOutput, error) {
	req, out := c.ListDashboardVersionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListDashboardVersionsPages iterates over the pages of a ListDashboardVersions operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListDashboardVersions 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 ListDashboardVersions operation.
//	pageNum := 0
//	err := client.ListDashboardVersionsPages(params,
//	    func(page *quicksight.ListDashboardVersionsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListDashboardVersionsPages(input *ListDashboardVersionsInput, fn func(*ListDashboardVersionsOutput, bool) bool) error {
	return c.ListDashboardVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListDashboardVersionsPagesWithContext same as ListDashboardVersionsPages 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 *QuickSight) ListDashboardVersionsPagesWithContext(ctx aws.Context, input *ListDashboardVersionsInput, fn func(*ListDashboardVersionsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListDashboardVersionsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListDashboardVersionsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListDashboards = "ListDashboards"

// ListDashboardsRequest generates a "aws/request.Request" representing the
// client's request for the ListDashboards 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 ListDashboards for more information on using the ListDashboards
// 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 ListDashboardsRequest method.
//	req, resp := client.ListDashboardsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListDashboards
func (c *QuickSight) ListDashboardsRequest(input *ListDashboardsInput) (req *request.Request, output *ListDashboardsOutput) {
	op := &request.Operation{
		Name:       opListDashboards,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/dashboards",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListDashboardsInput{}
	}

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

// ListDashboards API operation for Amazon QuickSight.
//
// Lists dashboards in an Amazon Web Services 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 Amazon QuickSight's
// API operation ListDashboards for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListDashboards
func (c *QuickSight) ListDashboards(input *ListDashboardsInput) (*ListDashboardsOutput, error) {
	req, out := c.ListDashboardsRequest(input)
	return out, req.Send()
}

// ListDashboardsWithContext is the same as ListDashboards with the addition of
// the ability to pass a context and additional request options.
//
// See ListDashboards 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 *QuickSight) ListDashboardsWithContext(ctx aws.Context, input *ListDashboardsInput, opts ...request.Option) (*ListDashboardsOutput, error) {
	req, out := c.ListDashboardsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListDashboardsPages iterates over the pages of a ListDashboards operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListDashboards 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 ListDashboards operation.
//	pageNum := 0
//	err := client.ListDashboardsPages(params,
//	    func(page *quicksight.ListDashboardsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListDashboardsPages(input *ListDashboardsInput, fn func(*ListDashboardsOutput, bool) bool) error {
	return c.ListDashboardsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListDashboardsPagesWithContext same as ListDashboardsPages 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 *QuickSight) ListDashboardsPagesWithContext(ctx aws.Context, input *ListDashboardsInput, fn func(*ListDashboardsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListDashboardsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListDashboardsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListDataSets = "ListDataSets"

// ListDataSetsRequest generates a "aws/request.Request" representing the
// client's request for the ListDataSets 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 ListDataSets for more information on using the ListDataSets
// 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 ListDataSetsRequest method.
//	req, resp := client.ListDataSetsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListDataSets
func (c *QuickSight) ListDataSetsRequest(input *ListDataSetsInput) (req *request.Request, output *ListDataSetsOutput) {
	op := &request.Operation{
		Name:       opListDataSets,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListDataSetsInput{}
	}

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

// ListDataSets API operation for Amazon QuickSight.
//
// Lists all of the datasets belonging to the current Amazon Web Services account
// in an Amazon Web Services Region.
//
// The permissions resource is arn:aws:quicksight:region:aws-account-id:dataset/*.
//
// 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 Amazon QuickSight's
// API operation ListDataSets for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListDataSets
func (c *QuickSight) ListDataSets(input *ListDataSetsInput) (*ListDataSetsOutput, error) {
	req, out := c.ListDataSetsRequest(input)
	return out, req.Send()
}

// ListDataSetsWithContext is the same as ListDataSets with the addition of
// the ability to pass a context and additional request options.
//
// See ListDataSets 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 *QuickSight) ListDataSetsWithContext(ctx aws.Context, input *ListDataSetsInput, opts ...request.Option) (*ListDataSetsOutput, error) {
	req, out := c.ListDataSetsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListDataSetsPages iterates over the pages of a ListDataSets operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListDataSets 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 ListDataSets operation.
//	pageNum := 0
//	err := client.ListDataSetsPages(params,
//	    func(page *quicksight.ListDataSetsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListDataSetsPages(input *ListDataSetsInput, fn func(*ListDataSetsOutput, bool) bool) error {
	return c.ListDataSetsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListDataSetsPagesWithContext same as ListDataSetsPages 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 *QuickSight) ListDataSetsPagesWithContext(ctx aws.Context, input *ListDataSetsInput, fn func(*ListDataSetsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListDataSetsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListDataSetsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListDataSources = "ListDataSources"

// ListDataSourcesRequest generates a "aws/request.Request" representing the
// client's request for the ListDataSources 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 ListDataSources for more information on using the ListDataSources
// 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 ListDataSourcesRequest method.
//	req, resp := client.ListDataSourcesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListDataSources
func (c *QuickSight) ListDataSourcesRequest(input *ListDataSourcesInput) (req *request.Request, output *ListDataSourcesOutput) {
	op := &request.Operation{
		Name:       opListDataSources,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sources",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListDataSourcesInput{}
	}

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

// ListDataSources API operation for Amazon QuickSight.
//
// Lists data sources in current Amazon Web Services Region that belong to this
// Amazon Web Services 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 Amazon QuickSight's
// API operation ListDataSources for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListDataSources
func (c *QuickSight) ListDataSources(input *ListDataSourcesInput) (*ListDataSourcesOutput, error) {
	req, out := c.ListDataSourcesRequest(input)
	return out, req.Send()
}

// ListDataSourcesWithContext is the same as ListDataSources with the addition of
// the ability to pass a context and additional request options.
//
// See ListDataSources 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 *QuickSight) ListDataSourcesWithContext(ctx aws.Context, input *ListDataSourcesInput, opts ...request.Option) (*ListDataSourcesOutput, error) {
	req, out := c.ListDataSourcesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListDataSourcesPages iterates over the pages of a ListDataSources operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListDataSources 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 ListDataSources operation.
//	pageNum := 0
//	err := client.ListDataSourcesPages(params,
//	    func(page *quicksight.ListDataSourcesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListDataSourcesPages(input *ListDataSourcesInput, fn func(*ListDataSourcesOutput, bool) bool) error {
	return c.ListDataSourcesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListDataSourcesPagesWithContext same as ListDataSourcesPages 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 *QuickSight) ListDataSourcesPagesWithContext(ctx aws.Context, input *ListDataSourcesInput, fn func(*ListDataSourcesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListDataSourcesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListDataSourcesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListFolderMembers = "ListFolderMembers"

// ListFolderMembersRequest generates a "aws/request.Request" representing the
// client's request for the ListFolderMembers 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 ListFolderMembers for more information on using the ListFolderMembers
// 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 ListFolderMembersRequest method.
//	req, resp := client.ListFolderMembersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListFolderMembers
func (c *QuickSight) ListFolderMembersRequest(input *ListFolderMembersInput) (req *request.Request, output *ListFolderMembersOutput) {
	op := &request.Operation{
		Name:       opListFolderMembers,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/folders/{FolderId}/members",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListFolderMembersInput{}
	}

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

// ListFolderMembers API operation for Amazon QuickSight.
//
// List all assets (DASHBOARD, ANALYSIS, and DATASET) in a folder.
//
// 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 Amazon QuickSight's
// API operation ListFolderMembers for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListFolderMembers
func (c *QuickSight) ListFolderMembers(input *ListFolderMembersInput) (*ListFolderMembersOutput, error) {
	req, out := c.ListFolderMembersRequest(input)
	return out, req.Send()
}

// ListFolderMembersWithContext is the same as ListFolderMembers with the addition of
// the ability to pass a context and additional request options.
//
// See ListFolderMembers 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 *QuickSight) ListFolderMembersWithContext(ctx aws.Context, input *ListFolderMembersInput, opts ...request.Option) (*ListFolderMembersOutput, error) {
	req, out := c.ListFolderMembersRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListFolderMembersPages iterates over the pages of a ListFolderMembers operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListFolderMembers 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 ListFolderMembers operation.
//	pageNum := 0
//	err := client.ListFolderMembersPages(params,
//	    func(page *quicksight.ListFolderMembersOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListFolderMembersPages(input *ListFolderMembersInput, fn func(*ListFolderMembersOutput, bool) bool) error {
	return c.ListFolderMembersPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListFolderMembersPagesWithContext same as ListFolderMembersPages 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 *QuickSight) ListFolderMembersPagesWithContext(ctx aws.Context, input *ListFolderMembersInput, fn func(*ListFolderMembersOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListFolderMembersInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListFolderMembersRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListFolders = "ListFolders"

// ListFoldersRequest generates a "aws/request.Request" representing the
// client's request for the ListFolders 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 ListFolders for more information on using the ListFolders
// 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 ListFoldersRequest method.
//	req, resp := client.ListFoldersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListFolders
func (c *QuickSight) ListFoldersRequest(input *ListFoldersInput) (req *request.Request, output *ListFoldersOutput) {
	op := &request.Operation{
		Name:       opListFolders,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/folders",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListFoldersInput{}
	}

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

// ListFolders API operation for Amazon QuickSight.
//
// Lists all folders in 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 Amazon QuickSight's
// API operation ListFolders for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListFolders
func (c *QuickSight) ListFolders(input *ListFoldersInput) (*ListFoldersOutput, error) {
	req, out := c.ListFoldersRequest(input)
	return out, req.Send()
}

// ListFoldersWithContext is the same as ListFolders with the addition of
// the ability to pass a context and additional request options.
//
// See ListFolders 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 *QuickSight) ListFoldersWithContext(ctx aws.Context, input *ListFoldersInput, opts ...request.Option) (*ListFoldersOutput, error) {
	req, out := c.ListFoldersRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListFoldersPages iterates over the pages of a ListFolders operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListFolders 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 ListFolders operation.
//	pageNum := 0
//	err := client.ListFoldersPages(params,
//	    func(page *quicksight.ListFoldersOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListFoldersPages(input *ListFoldersInput, fn func(*ListFoldersOutput, bool) bool) error {
	return c.ListFoldersPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListFoldersPagesWithContext same as ListFoldersPages 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 *QuickSight) ListFoldersPagesWithContext(ctx aws.Context, input *ListFoldersInput, fn func(*ListFoldersOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListFoldersInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListFoldersRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListGroupMemberships = "ListGroupMemberships"

// ListGroupMembershipsRequest generates a "aws/request.Request" representing the
// client's request for the ListGroupMemberships 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 ListGroupMemberships for more information on using the ListGroupMemberships
// 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 ListGroupMembershipsRequest method.
//	req, resp := client.ListGroupMembershipsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListGroupMemberships
func (c *QuickSight) ListGroupMembershipsRequest(input *ListGroupMembershipsInput) (req *request.Request, output *ListGroupMembershipsOutput) {
	op := &request.Operation{
		Name:       opListGroupMemberships,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups/{GroupName}/members",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListGroupMembershipsInput{}
	}

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

// ListGroupMemberships API operation for Amazon QuickSight.
//
// Lists member users in a group.
//
// 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 Amazon QuickSight's
// API operation ListGroupMemberships for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListGroupMemberships
func (c *QuickSight) ListGroupMemberships(input *ListGroupMembershipsInput) (*ListGroupMembershipsOutput, error) {
	req, out := c.ListGroupMembershipsRequest(input)
	return out, req.Send()
}

// ListGroupMembershipsWithContext is the same as ListGroupMemberships with the addition of
// the ability to pass a context and additional request options.
//
// See ListGroupMemberships 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 *QuickSight) ListGroupMembershipsWithContext(ctx aws.Context, input *ListGroupMembershipsInput, opts ...request.Option) (*ListGroupMembershipsOutput, error) {
	req, out := c.ListGroupMembershipsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListGroupMembershipsPages iterates over the pages of a ListGroupMemberships operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListGroupMemberships 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 ListGroupMemberships operation.
//	pageNum := 0
//	err := client.ListGroupMembershipsPages(params,
//	    func(page *quicksight.ListGroupMembershipsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListGroupMembershipsPages(input *ListGroupMembershipsInput, fn func(*ListGroupMembershipsOutput, bool) bool) error {
	return c.ListGroupMembershipsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListGroupMembershipsPagesWithContext same as ListGroupMembershipsPages 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 *QuickSight) ListGroupMembershipsPagesWithContext(ctx aws.Context, input *ListGroupMembershipsInput, fn func(*ListGroupMembershipsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListGroupMembershipsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListGroupMembershipsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListGroups = "ListGroups"

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

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

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

// ListGroups API operation for Amazon QuickSight.
//
// Lists all user groups in Amazon QuickSight.
//
// 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 Amazon QuickSight's
// API operation ListGroups for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListGroups
func (c *QuickSight) ListGroups(input *ListGroupsInput) (*ListGroupsOutput, error) {
	req, out := c.ListGroupsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListIAMPolicyAssignments = "ListIAMPolicyAssignments"

// ListIAMPolicyAssignmentsRequest generates a "aws/request.Request" representing the
// client's request for the ListIAMPolicyAssignments 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 ListIAMPolicyAssignments for more information on using the ListIAMPolicyAssignments
// 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 ListIAMPolicyAssignmentsRequest method.
//	req, resp := client.ListIAMPolicyAssignmentsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListIAMPolicyAssignments
func (c *QuickSight) ListIAMPolicyAssignmentsRequest(input *ListIAMPolicyAssignmentsInput) (req *request.Request, output *ListIAMPolicyAssignmentsOutput) {
	op := &request.Operation{
		Name:       opListIAMPolicyAssignments,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/v2/iam-policy-assignments",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListIAMPolicyAssignmentsInput{}
	}

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

// ListIAMPolicyAssignments API operation for Amazon QuickSight.
//
// Lists the IAM policy assignments in the current Amazon QuickSight 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 Amazon QuickSight's
// API operation ListIAMPolicyAssignments for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListIAMPolicyAssignments
func (c *QuickSight) ListIAMPolicyAssignments(input *ListIAMPolicyAssignmentsInput) (*ListIAMPolicyAssignmentsOutput, error) {
	req, out := c.ListIAMPolicyAssignmentsRequest(input)
	return out, req.Send()
}

// ListIAMPolicyAssignmentsWithContext is the same as ListIAMPolicyAssignments with the addition of
// the ability to pass a context and additional request options.
//
// See ListIAMPolicyAssignments 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 *QuickSight) ListIAMPolicyAssignmentsWithContext(ctx aws.Context, input *ListIAMPolicyAssignmentsInput, opts ...request.Option) (*ListIAMPolicyAssignmentsOutput, error) {
	req, out := c.ListIAMPolicyAssignmentsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListIAMPolicyAssignmentsPages iterates over the pages of a ListIAMPolicyAssignments operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListIAMPolicyAssignments 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 ListIAMPolicyAssignments operation.
//	pageNum := 0
//	err := client.ListIAMPolicyAssignmentsPages(params,
//	    func(page *quicksight.ListIAMPolicyAssignmentsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListIAMPolicyAssignmentsPages(input *ListIAMPolicyAssignmentsInput, fn func(*ListIAMPolicyAssignmentsOutput, bool) bool) error {
	return c.ListIAMPolicyAssignmentsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListIAMPolicyAssignmentsPagesWithContext same as ListIAMPolicyAssignmentsPages 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 *QuickSight) ListIAMPolicyAssignmentsPagesWithContext(ctx aws.Context, input *ListIAMPolicyAssignmentsInput, fn func(*ListIAMPolicyAssignmentsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListIAMPolicyAssignmentsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListIAMPolicyAssignmentsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListIAMPolicyAssignmentsForUser = "ListIAMPolicyAssignmentsForUser"

// ListIAMPolicyAssignmentsForUserRequest generates a "aws/request.Request" representing the
// client's request for the ListIAMPolicyAssignmentsForUser 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 ListIAMPolicyAssignmentsForUser for more information on using the ListIAMPolicyAssignmentsForUser
// 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 ListIAMPolicyAssignmentsForUserRequest method.
//	req, resp := client.ListIAMPolicyAssignmentsForUserRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListIAMPolicyAssignmentsForUser
func (c *QuickSight) ListIAMPolicyAssignmentsForUserRequest(input *ListIAMPolicyAssignmentsForUserInput) (req *request.Request, output *ListIAMPolicyAssignmentsForUserOutput) {
	op := &request.Operation{
		Name:       opListIAMPolicyAssignmentsForUser,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/users/{UserName}/iam-policy-assignments",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListIAMPolicyAssignmentsForUserInput{}
	}

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

// ListIAMPolicyAssignmentsForUser API operation for Amazon QuickSight.
//
// Lists all of the IAM policy assignments, including the Amazon Resource Names
// (ARNs), for the IAM policies assigned to the specified user and group, or
// groups that the user belongs to.
//
// 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 Amazon QuickSight's
// API operation ListIAMPolicyAssignmentsForUser for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ConcurrentUpdatingException
//     A resource is already in a state that indicates an operation is happening
//     that must complete before a new update can be applied.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListIAMPolicyAssignmentsForUser
func (c *QuickSight) ListIAMPolicyAssignmentsForUser(input *ListIAMPolicyAssignmentsForUserInput) (*ListIAMPolicyAssignmentsForUserOutput, error) {
	req, out := c.ListIAMPolicyAssignmentsForUserRequest(input)
	return out, req.Send()
}

// ListIAMPolicyAssignmentsForUserWithContext is the same as ListIAMPolicyAssignmentsForUser with the addition of
// the ability to pass a context and additional request options.
//
// See ListIAMPolicyAssignmentsForUser 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 *QuickSight) ListIAMPolicyAssignmentsForUserWithContext(ctx aws.Context, input *ListIAMPolicyAssignmentsForUserInput, opts ...request.Option) (*ListIAMPolicyAssignmentsForUserOutput, error) {
	req, out := c.ListIAMPolicyAssignmentsForUserRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListIAMPolicyAssignmentsForUserPages iterates over the pages of a ListIAMPolicyAssignmentsForUser operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListIAMPolicyAssignmentsForUser 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 ListIAMPolicyAssignmentsForUser operation.
//	pageNum := 0
//	err := client.ListIAMPolicyAssignmentsForUserPages(params,
//	    func(page *quicksight.ListIAMPolicyAssignmentsForUserOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListIAMPolicyAssignmentsForUserPages(input *ListIAMPolicyAssignmentsForUserInput, fn func(*ListIAMPolicyAssignmentsForUserOutput, bool) bool) error {
	return c.ListIAMPolicyAssignmentsForUserPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListIAMPolicyAssignmentsForUserPagesWithContext same as ListIAMPolicyAssignmentsForUserPages 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 *QuickSight) ListIAMPolicyAssignmentsForUserPagesWithContext(ctx aws.Context, input *ListIAMPolicyAssignmentsForUserInput, fn func(*ListIAMPolicyAssignmentsForUserOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListIAMPolicyAssignmentsForUserInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListIAMPolicyAssignmentsForUserRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListIdentityPropagationConfigs = "ListIdentityPropagationConfigs"

// ListIdentityPropagationConfigsRequest generates a "aws/request.Request" representing the
// client's request for the ListIdentityPropagationConfigs 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 ListIdentityPropagationConfigs for more information on using the ListIdentityPropagationConfigs
// 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 ListIdentityPropagationConfigsRequest method.
//	req, resp := client.ListIdentityPropagationConfigsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListIdentityPropagationConfigs
func (c *QuickSight) ListIdentityPropagationConfigsRequest(input *ListIdentityPropagationConfigsInput) (req *request.Request, output *ListIdentityPropagationConfigsOutput) {
	op := &request.Operation{
		Name:       opListIdentityPropagationConfigs,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/identity-propagation-config",
	}

	if input == nil {
		input = &ListIdentityPropagationConfigsInput{}
	}

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

// ListIdentityPropagationConfigs API operation for Amazon QuickSight.
//
// Lists all services and authorized targets that the Amazon QuickSight IAM
// Identity Center application can access.
//
// This operation is only supported for Amazon QuickSight accounts that use
// IAM Identity Center.
//
// 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 Amazon QuickSight's
// API operation ListIdentityPropagationConfigs for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListIdentityPropagationConfigs
func (c *QuickSight) ListIdentityPropagationConfigs(input *ListIdentityPropagationConfigsInput) (*ListIdentityPropagationConfigsOutput, error) {
	req, out := c.ListIdentityPropagationConfigsRequest(input)
	return out, req.Send()
}

// ListIdentityPropagationConfigsWithContext is the same as ListIdentityPropagationConfigs with the addition of
// the ability to pass a context and additional request options.
//
// See ListIdentityPropagationConfigs 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 *QuickSight) ListIdentityPropagationConfigsWithContext(ctx aws.Context, input *ListIdentityPropagationConfigsInput, opts ...request.Option) (*ListIdentityPropagationConfigsOutput, error) {
	req, out := c.ListIdentityPropagationConfigsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opListIngestions = "ListIngestions"

// ListIngestionsRequest generates a "aws/request.Request" representing the
// client's request for the ListIngestions 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 ListIngestions for more information on using the ListIngestions
// 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 ListIngestionsRequest method.
//	req, resp := client.ListIngestionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListIngestions
func (c *QuickSight) ListIngestionsRequest(input *ListIngestionsInput) (req *request.Request, output *ListIngestionsOutput) {
	op := &request.Operation{
		Name:       opListIngestions,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}/ingestions",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListIngestionsInput{}
	}

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

// ListIngestions API operation for Amazon QuickSight.
//
// Lists the history of SPICE ingestions for a dataset.
//
// 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 Amazon QuickSight's
// API operation ListIngestions for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListIngestions
func (c *QuickSight) ListIngestions(input *ListIngestionsInput) (*ListIngestionsOutput, error) {
	req, out := c.ListIngestionsRequest(input)
	return out, req.Send()
}

// ListIngestionsWithContext is the same as ListIngestions with the addition of
// the ability to pass a context and additional request options.
//
// See ListIngestions 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 *QuickSight) ListIngestionsWithContext(ctx aws.Context, input *ListIngestionsInput, opts ...request.Option) (*ListIngestionsOutput, error) {
	req, out := c.ListIngestionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListIngestionsPages iterates over the pages of a ListIngestions operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListIngestions 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 ListIngestions operation.
//	pageNum := 0
//	err := client.ListIngestionsPages(params,
//	    func(page *quicksight.ListIngestionsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListIngestionsPages(input *ListIngestionsInput, fn func(*ListIngestionsOutput, bool) bool) error {
	return c.ListIngestionsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListIngestionsPagesWithContext same as ListIngestionsPages 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 *QuickSight) ListIngestionsPagesWithContext(ctx aws.Context, input *ListIngestionsInput, fn func(*ListIngestionsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListIngestionsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListIngestionsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListNamespaces = "ListNamespaces"

// ListNamespacesRequest generates a "aws/request.Request" representing the
// client's request for the ListNamespaces 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 ListNamespaces for more information on using the ListNamespaces
// 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 ListNamespacesRequest method.
//	req, resp := client.ListNamespacesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListNamespaces
func (c *QuickSight) ListNamespacesRequest(input *ListNamespacesInput) (req *request.Request, output *ListNamespacesOutput) {
	op := &request.Operation{
		Name:       opListNamespaces,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListNamespacesInput{}
	}

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

// ListNamespaces API operation for Amazon QuickSight.
//
// Lists the namespaces for the specified Amazon Web Services account. This
// operation doesn't list deleted namespaces.
//
// 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 Amazon QuickSight's
// API operation ListNamespaces for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListNamespaces
func (c *QuickSight) ListNamespaces(input *ListNamespacesInput) (*ListNamespacesOutput, error) {
	req, out := c.ListNamespacesRequest(input)
	return out, req.Send()
}

// ListNamespacesWithContext is the same as ListNamespaces with the addition of
// the ability to pass a context and additional request options.
//
// See ListNamespaces 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 *QuickSight) ListNamespacesWithContext(ctx aws.Context, input *ListNamespacesInput, opts ...request.Option) (*ListNamespacesOutput, error) {
	req, out := c.ListNamespacesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListNamespacesPages iterates over the pages of a ListNamespaces operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListNamespaces 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 ListNamespaces operation.
//	pageNum := 0
//	err := client.ListNamespacesPages(params,
//	    func(page *quicksight.ListNamespacesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListNamespacesPages(input *ListNamespacesInput, fn func(*ListNamespacesOutput, bool) bool) error {
	return c.ListNamespacesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListNamespacesPagesWithContext same as ListNamespacesPages 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 *QuickSight) ListNamespacesPagesWithContext(ctx aws.Context, input *ListNamespacesInput, fn func(*ListNamespacesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListNamespacesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListNamespacesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListRefreshSchedules = "ListRefreshSchedules"

// ListRefreshSchedulesRequest generates a "aws/request.Request" representing the
// client's request for the ListRefreshSchedules 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 ListRefreshSchedules for more information on using the ListRefreshSchedules
// 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 ListRefreshSchedulesRequest method.
//	req, resp := client.ListRefreshSchedulesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListRefreshSchedules
func (c *QuickSight) ListRefreshSchedulesRequest(input *ListRefreshSchedulesInput) (req *request.Request, output *ListRefreshSchedulesOutput) {
	op := &request.Operation{
		Name:       opListRefreshSchedules,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}/refresh-schedules",
	}

	if input == nil {
		input = &ListRefreshSchedulesInput{}
	}

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

// ListRefreshSchedules API operation for Amazon QuickSight.
//
// Lists the refresh schedules of a dataset. Each dataset can have up to 5 schedules.
//
// 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 Amazon QuickSight's
// API operation ListRefreshSchedules for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListRefreshSchedules
func (c *QuickSight) ListRefreshSchedules(input *ListRefreshSchedulesInput) (*ListRefreshSchedulesOutput, error) {
	req, out := c.ListRefreshSchedulesRequest(input)
	return out, req.Send()
}

// ListRefreshSchedulesWithContext is the same as ListRefreshSchedules with the addition of
// the ability to pass a context and additional request options.
//
// See ListRefreshSchedules 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 *QuickSight) ListRefreshSchedulesWithContext(ctx aws.Context, input *ListRefreshSchedulesInput, opts ...request.Option) (*ListRefreshSchedulesOutput, error) {
	req, out := c.ListRefreshSchedulesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opListRoleMemberships = "ListRoleMemberships"

// ListRoleMembershipsRequest generates a "aws/request.Request" representing the
// client's request for the ListRoleMemberships 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 ListRoleMemberships for more information on using the ListRoleMemberships
// 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 ListRoleMembershipsRequest method.
//	req, resp := client.ListRoleMembershipsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListRoleMemberships
func (c *QuickSight) ListRoleMembershipsRequest(input *ListRoleMembershipsInput) (req *request.Request, output *ListRoleMembershipsOutput) {
	op := &request.Operation{
		Name:       opListRoleMemberships,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/roles/{Role}/members",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListRoleMembershipsInput{}
	}

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

// ListRoleMemberships API operation for Amazon QuickSight.
//
// Lists all groups that are associated with a role.
//
// 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 Amazon QuickSight's
// API operation ListRoleMemberships for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListRoleMemberships
func (c *QuickSight) ListRoleMemberships(input *ListRoleMembershipsInput) (*ListRoleMembershipsOutput, error) {
	req, out := c.ListRoleMembershipsRequest(input)
	return out, req.Send()
}

// ListRoleMembershipsWithContext is the same as ListRoleMemberships with the addition of
// the ability to pass a context and additional request options.
//
// See ListRoleMemberships 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 *QuickSight) ListRoleMembershipsWithContext(ctx aws.Context, input *ListRoleMembershipsInput, opts ...request.Option) (*ListRoleMembershipsOutput, error) {
	req, out := c.ListRoleMembershipsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListRoleMembershipsPages iterates over the pages of a ListRoleMemberships operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListRoleMemberships 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 ListRoleMemberships operation.
//	pageNum := 0
//	err := client.ListRoleMembershipsPages(params,
//	    func(page *quicksight.ListRoleMembershipsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListRoleMembershipsPages(input *ListRoleMembershipsInput, fn func(*ListRoleMembershipsOutput, bool) bool) error {
	return c.ListRoleMembershipsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListRoleMembershipsPagesWithContext same as ListRoleMembershipsPages 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 *QuickSight) ListRoleMembershipsPagesWithContext(ctx aws.Context, input *ListRoleMembershipsInput, fn func(*ListRoleMembershipsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListRoleMembershipsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListRoleMembershipsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*ListRoleMembershipsOutput), !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/quicksight-2018-04-01/ListTagsForResource
func (c *QuickSight) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
	op := &request.Operation{
		Name:       opListTagsForResource,
		HTTPMethod: "GET",
		HTTPPath:   "/resources/{ResourceArn}/tags",
	}

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

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

// ListTagsForResource API operation for Amazon QuickSight.
//
// Lists the tags assigned to a 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 Amazon QuickSight's
// API operation ListTagsForResource for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListTagsForResource
func (c *QuickSight) 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 *QuickSight) 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 opListTemplateAliases = "ListTemplateAliases"

// ListTemplateAliasesRequest generates a "aws/request.Request" representing the
// client's request for the ListTemplateAliases 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 ListTemplateAliases for more information on using the ListTemplateAliases
// 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 ListTemplateAliasesRequest method.
//	req, resp := client.ListTemplateAliasesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListTemplateAliases
func (c *QuickSight) ListTemplateAliasesRequest(input *ListTemplateAliasesInput) (req *request.Request, output *ListTemplateAliasesOutput) {
	op := &request.Operation{
		Name:       opListTemplateAliases,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/templates/{TemplateId}/aliases",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListTemplateAliasesInput{}
	}

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

// ListTemplateAliases API operation for Amazon QuickSight.
//
// Lists all the aliases of a template.
//
// 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 Amazon QuickSight's
// API operation ListTemplateAliases for usage and error information.
//
// Returned Error Types:
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListTemplateAliases
func (c *QuickSight) ListTemplateAliases(input *ListTemplateAliasesInput) (*ListTemplateAliasesOutput, error) {
	req, out := c.ListTemplateAliasesRequest(input)
	return out, req.Send()
}

// ListTemplateAliasesWithContext is the same as ListTemplateAliases with the addition of
// the ability to pass a context and additional request options.
//
// See ListTemplateAliases 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 *QuickSight) ListTemplateAliasesWithContext(ctx aws.Context, input *ListTemplateAliasesInput, opts ...request.Option) (*ListTemplateAliasesOutput, error) {
	req, out := c.ListTemplateAliasesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListTemplateAliasesPages iterates over the pages of a ListTemplateAliases operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListTemplateAliases 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 ListTemplateAliases operation.
//	pageNum := 0
//	err := client.ListTemplateAliasesPages(params,
//	    func(page *quicksight.ListTemplateAliasesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListTemplateAliasesPages(input *ListTemplateAliasesInput, fn func(*ListTemplateAliasesOutput, bool) bool) error {
	return c.ListTemplateAliasesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListTemplateAliasesPagesWithContext same as ListTemplateAliasesPages 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 *QuickSight) ListTemplateAliasesPagesWithContext(ctx aws.Context, input *ListTemplateAliasesInput, fn func(*ListTemplateAliasesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListTemplateAliasesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListTemplateAliasesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListTemplateVersions = "ListTemplateVersions"

// ListTemplateVersionsRequest generates a "aws/request.Request" representing the
// client's request for the ListTemplateVersions 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 ListTemplateVersions for more information on using the ListTemplateVersions
// 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 ListTemplateVersionsRequest method.
//	req, resp := client.ListTemplateVersionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListTemplateVersions
func (c *QuickSight) ListTemplateVersionsRequest(input *ListTemplateVersionsInput) (req *request.Request, output *ListTemplateVersionsOutput) {
	op := &request.Operation{
		Name:       opListTemplateVersions,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/templates/{TemplateId}/versions",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListTemplateVersionsInput{}
	}

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

// ListTemplateVersions API operation for Amazon QuickSight.
//
// Lists all the versions of the templates in the current Amazon QuickSight
// 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 Amazon QuickSight's
// API operation ListTemplateVersions for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListTemplateVersions
func (c *QuickSight) ListTemplateVersions(input *ListTemplateVersionsInput) (*ListTemplateVersionsOutput, error) {
	req, out := c.ListTemplateVersionsRequest(input)
	return out, req.Send()
}

// ListTemplateVersionsWithContext is the same as ListTemplateVersions with the addition of
// the ability to pass a context and additional request options.
//
// See ListTemplateVersions 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 *QuickSight) ListTemplateVersionsWithContext(ctx aws.Context, input *ListTemplateVersionsInput, opts ...request.Option) (*ListTemplateVersionsOutput, error) {
	req, out := c.ListTemplateVersionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListTemplateVersionsPages iterates over the pages of a ListTemplateVersions operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListTemplateVersions 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 ListTemplateVersions operation.
//	pageNum := 0
//	err := client.ListTemplateVersionsPages(params,
//	    func(page *quicksight.ListTemplateVersionsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListTemplateVersionsPages(input *ListTemplateVersionsInput, fn func(*ListTemplateVersionsOutput, bool) bool) error {
	return c.ListTemplateVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListTemplateVersionsPagesWithContext same as ListTemplateVersionsPages 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 *QuickSight) ListTemplateVersionsPagesWithContext(ctx aws.Context, input *ListTemplateVersionsInput, fn func(*ListTemplateVersionsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListTemplateVersionsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListTemplateVersionsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListTemplates = "ListTemplates"

// ListTemplatesRequest generates a "aws/request.Request" representing the
// client's request for the ListTemplates 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 ListTemplates for more information on using the ListTemplates
// 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 ListTemplatesRequest method.
//	req, resp := client.ListTemplatesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListTemplates
func (c *QuickSight) ListTemplatesRequest(input *ListTemplatesInput) (req *request.Request, output *ListTemplatesOutput) {
	op := &request.Operation{
		Name:       opListTemplates,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/templates",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListTemplatesInput{}
	}

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

// ListTemplates API operation for Amazon QuickSight.
//
// Lists all the templates in the current Amazon QuickSight 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 Amazon QuickSight's
// API operation ListTemplates for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListTemplates
func (c *QuickSight) ListTemplates(input *ListTemplatesInput) (*ListTemplatesOutput, error) {
	req, out := c.ListTemplatesRequest(input)
	return out, req.Send()
}

// ListTemplatesWithContext is the same as ListTemplates with the addition of
// the ability to pass a context and additional request options.
//
// See ListTemplates 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 *QuickSight) ListTemplatesWithContext(ctx aws.Context, input *ListTemplatesInput, opts ...request.Option) (*ListTemplatesOutput, error) {
	req, out := c.ListTemplatesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListTemplatesPages iterates over the pages of a ListTemplates operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListTemplates 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 ListTemplates operation.
//	pageNum := 0
//	err := client.ListTemplatesPages(params,
//	    func(page *quicksight.ListTemplatesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListTemplatesPages(input *ListTemplatesInput, fn func(*ListTemplatesOutput, bool) bool) error {
	return c.ListTemplatesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListTemplatesPagesWithContext same as ListTemplatesPages 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 *QuickSight) ListTemplatesPagesWithContext(ctx aws.Context, input *ListTemplatesInput, fn func(*ListTemplatesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListTemplatesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListTemplatesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListThemeAliases = "ListThemeAliases"

// ListThemeAliasesRequest generates a "aws/request.Request" representing the
// client's request for the ListThemeAliases 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 ListThemeAliases for more information on using the ListThemeAliases
// 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 ListThemeAliasesRequest method.
//	req, resp := client.ListThemeAliasesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListThemeAliases
func (c *QuickSight) ListThemeAliasesRequest(input *ListThemeAliasesInput) (req *request.Request, output *ListThemeAliasesOutput) {
	op := &request.Operation{
		Name:       opListThemeAliases,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/themes/{ThemeId}/aliases",
	}

	if input == nil {
		input = &ListThemeAliasesInput{}
	}

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

// ListThemeAliases API operation for Amazon QuickSight.
//
// Lists all the aliases of a theme.
//
// 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 Amazon QuickSight's
// API operation ListThemeAliases for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListThemeAliases
func (c *QuickSight) ListThemeAliases(input *ListThemeAliasesInput) (*ListThemeAliasesOutput, error) {
	req, out := c.ListThemeAliasesRequest(input)
	return out, req.Send()
}

// ListThemeAliasesWithContext is the same as ListThemeAliases with the addition of
// the ability to pass a context and additional request options.
//
// See ListThemeAliases 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 *QuickSight) ListThemeAliasesWithContext(ctx aws.Context, input *ListThemeAliasesInput, opts ...request.Option) (*ListThemeAliasesOutput, error) {
	req, out := c.ListThemeAliasesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opListThemeVersions = "ListThemeVersions"

// ListThemeVersionsRequest generates a "aws/request.Request" representing the
// client's request for the ListThemeVersions 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 ListThemeVersions for more information on using the ListThemeVersions
// 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 ListThemeVersionsRequest method.
//	req, resp := client.ListThemeVersionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListThemeVersions
func (c *QuickSight) ListThemeVersionsRequest(input *ListThemeVersionsInput) (req *request.Request, output *ListThemeVersionsOutput) {
	op := &request.Operation{
		Name:       opListThemeVersions,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/themes/{ThemeId}/versions",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListThemeVersionsInput{}
	}

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

// ListThemeVersions API operation for Amazon QuickSight.
//
// Lists all the versions of the themes in the current Amazon Web Services 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 Amazon QuickSight's
// API operation ListThemeVersions for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListThemeVersions
func (c *QuickSight) ListThemeVersions(input *ListThemeVersionsInput) (*ListThemeVersionsOutput, error) {
	req, out := c.ListThemeVersionsRequest(input)
	return out, req.Send()
}

// ListThemeVersionsWithContext is the same as ListThemeVersions with the addition of
// the ability to pass a context and additional request options.
//
// See ListThemeVersions 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 *QuickSight) ListThemeVersionsWithContext(ctx aws.Context, input *ListThemeVersionsInput, opts ...request.Option) (*ListThemeVersionsOutput, error) {
	req, out := c.ListThemeVersionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListThemeVersionsPages iterates over the pages of a ListThemeVersions operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListThemeVersions 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 ListThemeVersions operation.
//	pageNum := 0
//	err := client.ListThemeVersionsPages(params,
//	    func(page *quicksight.ListThemeVersionsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListThemeVersionsPages(input *ListThemeVersionsInput, fn func(*ListThemeVersionsOutput, bool) bool) error {
	return c.ListThemeVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListThemeVersionsPagesWithContext same as ListThemeVersionsPages 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 *QuickSight) ListThemeVersionsPagesWithContext(ctx aws.Context, input *ListThemeVersionsInput, fn func(*ListThemeVersionsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListThemeVersionsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListThemeVersionsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListThemes = "ListThemes"

// ListThemesRequest generates a "aws/request.Request" representing the
// client's request for the ListThemes 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 ListThemes for more information on using the ListThemes
// 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 ListThemesRequest method.
//	req, resp := client.ListThemesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListThemes
func (c *QuickSight) ListThemesRequest(input *ListThemesInput) (req *request.Request, output *ListThemesOutput) {
	op := &request.Operation{
		Name:       opListThemes,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/themes",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListThemesInput{}
	}

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

// ListThemes API operation for Amazon QuickSight.
//
// Lists all the themes in the current Amazon Web Services 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 Amazon QuickSight's
// API operation ListThemes for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListThemes
func (c *QuickSight) ListThemes(input *ListThemesInput) (*ListThemesOutput, error) {
	req, out := c.ListThemesRequest(input)
	return out, req.Send()
}

// ListThemesWithContext is the same as ListThemes with the addition of
// the ability to pass a context and additional request options.
//
// See ListThemes 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 *QuickSight) ListThemesWithContext(ctx aws.Context, input *ListThemesInput, opts ...request.Option) (*ListThemesOutput, error) {
	req, out := c.ListThemesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListThemesPages iterates over the pages of a ListThemes operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListThemes 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 ListThemes operation.
//	pageNum := 0
//	err := client.ListThemesPages(params,
//	    func(page *quicksight.ListThemesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListThemesPages(input *ListThemesInput, fn func(*ListThemesOutput, bool) bool) error {
	return c.ListThemesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListThemesPagesWithContext same as ListThemesPages 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 *QuickSight) ListThemesPagesWithContext(ctx aws.Context, input *ListThemesInput, fn func(*ListThemesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListThemesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListThemesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListTopicRefreshSchedules = "ListTopicRefreshSchedules"

// ListTopicRefreshSchedulesRequest generates a "aws/request.Request" representing the
// client's request for the ListTopicRefreshSchedules 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 ListTopicRefreshSchedules for more information on using the ListTopicRefreshSchedules
// 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 ListTopicRefreshSchedulesRequest method.
//	req, resp := client.ListTopicRefreshSchedulesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListTopicRefreshSchedules
func (c *QuickSight) ListTopicRefreshSchedulesRequest(input *ListTopicRefreshSchedulesInput) (req *request.Request, output *ListTopicRefreshSchedulesOutput) {
	op := &request.Operation{
		Name:       opListTopicRefreshSchedules,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/topics/{TopicId}/schedules",
	}

	if input == nil {
		input = &ListTopicRefreshSchedulesInput{}
	}

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

// ListTopicRefreshSchedules API operation for Amazon QuickSight.
//
// Lists all of the refresh schedules for a topic.
//
// 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 Amazon QuickSight's
// API operation ListTopicRefreshSchedules for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListTopicRefreshSchedules
func (c *QuickSight) ListTopicRefreshSchedules(input *ListTopicRefreshSchedulesInput) (*ListTopicRefreshSchedulesOutput, error) {
	req, out := c.ListTopicRefreshSchedulesRequest(input)
	return out, req.Send()
}

// ListTopicRefreshSchedulesWithContext is the same as ListTopicRefreshSchedules with the addition of
// the ability to pass a context and additional request options.
//
// See ListTopicRefreshSchedules 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 *QuickSight) ListTopicRefreshSchedulesWithContext(ctx aws.Context, input *ListTopicRefreshSchedulesInput, opts ...request.Option) (*ListTopicRefreshSchedulesOutput, error) {
	req, out := c.ListTopicRefreshSchedulesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opListTopicReviewedAnswers = "ListTopicReviewedAnswers"

// ListTopicReviewedAnswersRequest generates a "aws/request.Request" representing the
// client's request for the ListTopicReviewedAnswers 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 ListTopicReviewedAnswers for more information on using the ListTopicReviewedAnswers
// 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 ListTopicReviewedAnswersRequest method.
//	req, resp := client.ListTopicReviewedAnswersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListTopicReviewedAnswers
func (c *QuickSight) ListTopicReviewedAnswersRequest(input *ListTopicReviewedAnswersInput) (req *request.Request, output *ListTopicReviewedAnswersOutput) {
	op := &request.Operation{
		Name:       opListTopicReviewedAnswers,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/topics/{TopicId}/reviewed-answers",
	}

	if input == nil {
		input = &ListTopicReviewedAnswersInput{}
	}

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

// ListTopicReviewedAnswers API operation for Amazon QuickSight.
//
// Lists all reviewed answers for a Q Topic.
//
// 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 Amazon QuickSight's
// API operation ListTopicReviewedAnswers for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListTopicReviewedAnswers
func (c *QuickSight) ListTopicReviewedAnswers(input *ListTopicReviewedAnswersInput) (*ListTopicReviewedAnswersOutput, error) {
	req, out := c.ListTopicReviewedAnswersRequest(input)
	return out, req.Send()
}

// ListTopicReviewedAnswersWithContext is the same as ListTopicReviewedAnswers with the addition of
// the ability to pass a context and additional request options.
//
// See ListTopicReviewedAnswers 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 *QuickSight) ListTopicReviewedAnswersWithContext(ctx aws.Context, input *ListTopicReviewedAnswersInput, opts ...request.Option) (*ListTopicReviewedAnswersOutput, error) {
	req, out := c.ListTopicReviewedAnswersRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opListTopics = "ListTopics"

// ListTopicsRequest generates a "aws/request.Request" representing the
// client's request for the ListTopics 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 ListTopics for more information on using the ListTopics
// 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 ListTopicsRequest method.
//	req, resp := client.ListTopicsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListTopics
func (c *QuickSight) ListTopicsRequest(input *ListTopicsInput) (req *request.Request, output *ListTopicsOutput) {
	op := &request.Operation{
		Name:       opListTopics,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/topics",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListTopicsInput{}
	}

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

// ListTopics API operation for Amazon QuickSight.
//
// Lists all of the topics within 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 Amazon QuickSight's
// API operation ListTopics for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListTopics
func (c *QuickSight) ListTopics(input *ListTopicsInput) (*ListTopicsOutput, error) {
	req, out := c.ListTopicsRequest(input)
	return out, req.Send()
}

// ListTopicsWithContext is the same as ListTopics with the addition of
// the ability to pass a context and additional request options.
//
// See ListTopics 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 *QuickSight) ListTopicsWithContext(ctx aws.Context, input *ListTopicsInput, opts ...request.Option) (*ListTopicsOutput, error) {
	req, out := c.ListTopicsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListTopicsPages iterates over the pages of a ListTopics operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListTopics 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 ListTopics operation.
//	pageNum := 0
//	err := client.ListTopicsPages(params,
//	    func(page *quicksight.ListTopicsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListTopicsPages(input *ListTopicsInput, fn func(*ListTopicsOutput, bool) bool) error {
	return c.ListTopicsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListTopicsPagesWithContext same as ListTopicsPages 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 *QuickSight) ListTopicsPagesWithContext(ctx aws.Context, input *ListTopicsInput, fn func(*ListTopicsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListTopicsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListTopicsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListUserGroups = "ListUserGroups"

// ListUserGroupsRequest generates a "aws/request.Request" representing the
// client's request for the ListUserGroups 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 ListUserGroups for more information on using the ListUserGroups
// 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 ListUserGroupsRequest method.
//	req, resp := client.ListUserGroupsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListUserGroups
func (c *QuickSight) ListUserGroupsRequest(input *ListUserGroupsInput) (req *request.Request, output *ListUserGroupsOutput) {
	op := &request.Operation{
		Name:       opListUserGroups,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/users/{UserName}/groups",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListUserGroupsInput{}
	}

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

// ListUserGroups API operation for Amazon QuickSight.
//
// Lists the Amazon QuickSight groups that an Amazon QuickSight user is a member
// of.
//
// 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 Amazon QuickSight's
// API operation ListUserGroups for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListUserGroups
func (c *QuickSight) ListUserGroups(input *ListUserGroupsInput) (*ListUserGroupsOutput, error) {
	req, out := c.ListUserGroupsRequest(input)
	return out, req.Send()
}

// ListUserGroupsWithContext is the same as ListUserGroups with the addition of
// the ability to pass a context and additional request options.
//
// See ListUserGroups 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 *QuickSight) ListUserGroupsWithContext(ctx aws.Context, input *ListUserGroupsInput, opts ...request.Option) (*ListUserGroupsOutput, error) {
	req, out := c.ListUserGroupsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListUserGroupsPages iterates over the pages of a ListUserGroups operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListUserGroups 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 ListUserGroups operation.
//	pageNum := 0
//	err := client.ListUserGroupsPages(params,
//	    func(page *quicksight.ListUserGroupsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListUserGroupsPages(input *ListUserGroupsInput, fn func(*ListUserGroupsOutput, bool) bool) error {
	return c.ListUserGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListUserGroupsPagesWithContext same as ListUserGroupsPages 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 *QuickSight) ListUserGroupsPagesWithContext(ctx aws.Context, input *ListUserGroupsInput, fn func(*ListUserGroupsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListUserGroupsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListUserGroupsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListUsers = "ListUsers"

// ListUsersRequest generates a "aws/request.Request" representing the
// client's request for the ListUsers 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 ListUsers for more information on using the ListUsers
// 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 ListUsersRequest method.
//	req, resp := client.ListUsersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListUsers
func (c *QuickSight) ListUsersRequest(input *ListUsersInput) (req *request.Request, output *ListUsersOutput) {
	op := &request.Operation{
		Name:       opListUsers,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/users",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListUsersInput{}
	}

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

// ListUsers API operation for Amazon QuickSight.
//
// Returns a list of all of the Amazon QuickSight users belonging to this 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 Amazon QuickSight's
// API operation ListUsers for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListUsers
func (c *QuickSight) ListUsers(input *ListUsersInput) (*ListUsersOutput, error) {
	req, out := c.ListUsersRequest(input)
	return out, req.Send()
}

// ListUsersWithContext is the same as ListUsers with the addition of
// the ability to pass a context and additional request options.
//
// See ListUsers 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 *QuickSight) ListUsersWithContext(ctx aws.Context, input *ListUsersInput, opts ...request.Option) (*ListUsersOutput, error) {
	req, out := c.ListUsersRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListUsersPages iterates over the pages of a ListUsers operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListUsers 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 ListUsers operation.
//	pageNum := 0
//	err := client.ListUsersPages(params,
//	    func(page *quicksight.ListUsersOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListUsersPages(input *ListUsersInput, fn func(*ListUsersOutput, bool) bool) error {
	return c.ListUsersPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListUsersPagesWithContext same as ListUsersPages 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 *QuickSight) ListUsersPagesWithContext(ctx aws.Context, input *ListUsersInput, fn func(*ListUsersOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListUsersInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListUsersRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opListVPCConnections = "ListVPCConnections"

// ListVPCConnectionsRequest generates a "aws/request.Request" representing the
// client's request for the ListVPCConnections 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 ListVPCConnections for more information on using the ListVPCConnections
// 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 ListVPCConnectionsRequest method.
//	req, resp := client.ListVPCConnectionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListVPCConnections
func (c *QuickSight) ListVPCConnectionsRequest(input *ListVPCConnectionsInput) (req *request.Request, output *ListVPCConnectionsOutput) {
	op := &request.Operation{
		Name:       opListVPCConnections,
		HTTPMethod: "GET",
		HTTPPath:   "/accounts/{AwsAccountId}/vpc-connections",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListVPCConnectionsInput{}
	}

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

// ListVPCConnections API operation for Amazon QuickSight.
//
// Lists all of the VPC connections in the current set Amazon Web Services Region
// of an Amazon Web Services 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 Amazon QuickSight's
// API operation ListVPCConnections for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/ListVPCConnections
func (c *QuickSight) ListVPCConnections(input *ListVPCConnectionsInput) (*ListVPCConnectionsOutput, error) {
	req, out := c.ListVPCConnectionsRequest(input)
	return out, req.Send()
}

// ListVPCConnectionsWithContext is the same as ListVPCConnections with the addition of
// the ability to pass a context and additional request options.
//
// See ListVPCConnections 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 *QuickSight) ListVPCConnectionsWithContext(ctx aws.Context, input *ListVPCConnectionsInput, opts ...request.Option) (*ListVPCConnectionsOutput, error) {
	req, out := c.ListVPCConnectionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListVPCConnectionsPages iterates over the pages of a ListVPCConnections operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListVPCConnections 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 ListVPCConnections operation.
//	pageNum := 0
//	err := client.ListVPCConnectionsPages(params,
//	    func(page *quicksight.ListVPCConnectionsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) ListVPCConnectionsPages(input *ListVPCConnectionsInput, fn func(*ListVPCConnectionsOutput, bool) bool) error {
	return c.ListVPCConnectionsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListVPCConnectionsPagesWithContext same as ListVPCConnectionsPages 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 *QuickSight) ListVPCConnectionsPagesWithContext(ctx aws.Context, input *ListVPCConnectionsInput, fn func(*ListVPCConnectionsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListVPCConnectionsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListVPCConnectionsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opPutDataSetRefreshProperties = "PutDataSetRefreshProperties"

// PutDataSetRefreshPropertiesRequest generates a "aws/request.Request" representing the
// client's request for the PutDataSetRefreshProperties 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 PutDataSetRefreshProperties for more information on using the PutDataSetRefreshProperties
// 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 PutDataSetRefreshPropertiesRequest method.
//	req, resp := client.PutDataSetRefreshPropertiesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/PutDataSetRefreshProperties
func (c *QuickSight) PutDataSetRefreshPropertiesRequest(input *PutDataSetRefreshPropertiesInput) (req *request.Request, output *PutDataSetRefreshPropertiesOutput) {
	op := &request.Operation{
		Name:       opPutDataSetRefreshProperties,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}/refresh-properties",
	}

	if input == nil {
		input = &PutDataSetRefreshPropertiesInput{}
	}

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

// PutDataSetRefreshProperties API operation for Amazon QuickSight.
//
// Creates or updates the dataset refresh properties for the dataset.
//
// 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 Amazon QuickSight's
// API operation PutDataSetRefreshProperties for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/PutDataSetRefreshProperties
func (c *QuickSight) PutDataSetRefreshProperties(input *PutDataSetRefreshPropertiesInput) (*PutDataSetRefreshPropertiesOutput, error) {
	req, out := c.PutDataSetRefreshPropertiesRequest(input)
	return out, req.Send()
}

// PutDataSetRefreshPropertiesWithContext is the same as PutDataSetRefreshProperties with the addition of
// the ability to pass a context and additional request options.
//
// See PutDataSetRefreshProperties 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 *QuickSight) PutDataSetRefreshPropertiesWithContext(ctx aws.Context, input *PutDataSetRefreshPropertiesInput, opts ...request.Option) (*PutDataSetRefreshPropertiesOutput, error) {
	req, out := c.PutDataSetRefreshPropertiesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opRegisterUser = "RegisterUser"

// RegisterUserRequest generates a "aws/request.Request" representing the
// client's request for the RegisterUser 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 RegisterUser for more information on using the RegisterUser
// 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 RegisterUserRequest method.
//	req, resp := client.RegisterUserRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/RegisterUser
func (c *QuickSight) RegisterUserRequest(input *RegisterUserInput) (req *request.Request, output *RegisterUserOutput) {
	op := &request.Operation{
		Name:       opRegisterUser,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/users",
	}

	if input == nil {
		input = &RegisterUserInput{}
	}

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

// RegisterUser API operation for Amazon QuickSight.
//
// Creates an Amazon QuickSight user whose identity is associated with the Identity
// and Access Management (IAM) identity or role specified in the request. When
// you register a new user from the Amazon QuickSight API, Amazon QuickSight
// generates a registration URL. The user accesses this registration URL to
// create their account. Amazon QuickSight doesn't send a registration email
// to users who are registered from the Amazon QuickSight API. If you want new
// users to receive a registration email, then add those users in the Amazon
// QuickSight console. For more information on registering a new user in the
// Amazon QuickSight console, see Inviting users to access Amazon QuickSight
// (https://docs.aws.amazon.com/quicksight/latest/user/managing-users.html#inviting-users).
//
// 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 Amazon QuickSight's
// API operation RegisterUser for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/RegisterUser
func (c *QuickSight) RegisterUser(input *RegisterUserInput) (*RegisterUserOutput, error) {
	req, out := c.RegisterUserRequest(input)
	return out, req.Send()
}

// RegisterUserWithContext is the same as RegisterUser with the addition of
// the ability to pass a context and additional request options.
//
// See RegisterUser 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 *QuickSight) RegisterUserWithContext(ctx aws.Context, input *RegisterUserInput, opts ...request.Option) (*RegisterUserOutput, error) {
	req, out := c.RegisterUserRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opRestoreAnalysis = "RestoreAnalysis"

// RestoreAnalysisRequest generates a "aws/request.Request" representing the
// client's request for the RestoreAnalysis 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 RestoreAnalysis for more information on using the RestoreAnalysis
// 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 RestoreAnalysisRequest method.
//	req, resp := client.RestoreAnalysisRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/RestoreAnalysis
func (c *QuickSight) RestoreAnalysisRequest(input *RestoreAnalysisInput) (req *request.Request, output *RestoreAnalysisOutput) {
	op := &request.Operation{
		Name:       opRestoreAnalysis,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/restore/analyses/{AnalysisId}",
	}

	if input == nil {
		input = &RestoreAnalysisInput{}
	}

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

// RestoreAnalysis API operation for Amazon QuickSight.
//
// Restores an analysis.
//
// 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 Amazon QuickSight's
// API operation RestoreAnalysis for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/RestoreAnalysis
func (c *QuickSight) RestoreAnalysis(input *RestoreAnalysisInput) (*RestoreAnalysisOutput, error) {
	req, out := c.RestoreAnalysisRequest(input)
	return out, req.Send()
}

// RestoreAnalysisWithContext is the same as RestoreAnalysis with the addition of
// the ability to pass a context and additional request options.
//
// See RestoreAnalysis 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 *QuickSight) RestoreAnalysisWithContext(ctx aws.Context, input *RestoreAnalysisInput, opts ...request.Option) (*RestoreAnalysisOutput, error) {
	req, out := c.RestoreAnalysisRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opSearchAnalyses = "SearchAnalyses"

// SearchAnalysesRequest generates a "aws/request.Request" representing the
// client's request for the SearchAnalyses 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 SearchAnalyses for more information on using the SearchAnalyses
// 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 SearchAnalysesRequest method.
//	req, resp := client.SearchAnalysesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/SearchAnalyses
func (c *QuickSight) SearchAnalysesRequest(input *SearchAnalysesInput) (req *request.Request, output *SearchAnalysesOutput) {
	op := &request.Operation{
		Name:       opSearchAnalyses,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/search/analyses",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &SearchAnalysesInput{}
	}

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

// SearchAnalyses API operation for Amazon QuickSight.
//
// Searches for analyses that belong to the user specified in the filter.
//
// This operation is eventually consistent. The results are best effort and
// may not reflect very recent updates and changes.
//
// 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 Amazon QuickSight's
// API operation SearchAnalyses for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/SearchAnalyses
func (c *QuickSight) SearchAnalyses(input *SearchAnalysesInput) (*SearchAnalysesOutput, error) {
	req, out := c.SearchAnalysesRequest(input)
	return out, req.Send()
}

// SearchAnalysesWithContext is the same as SearchAnalyses with the addition of
// the ability to pass a context and additional request options.
//
// See SearchAnalyses 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 *QuickSight) SearchAnalysesWithContext(ctx aws.Context, input *SearchAnalysesInput, opts ...request.Option) (*SearchAnalysesOutput, error) {
	req, out := c.SearchAnalysesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// SearchAnalysesPages iterates over the pages of a SearchAnalyses operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See SearchAnalyses 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 SearchAnalyses operation.
//	pageNum := 0
//	err := client.SearchAnalysesPages(params,
//	    func(page *quicksight.SearchAnalysesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) SearchAnalysesPages(input *SearchAnalysesInput, fn func(*SearchAnalysesOutput, bool) bool) error {
	return c.SearchAnalysesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// SearchAnalysesPagesWithContext same as SearchAnalysesPages 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 *QuickSight) SearchAnalysesPagesWithContext(ctx aws.Context, input *SearchAnalysesInput, fn func(*SearchAnalysesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *SearchAnalysesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.SearchAnalysesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opSearchDashboards = "SearchDashboards"

// SearchDashboardsRequest generates a "aws/request.Request" representing the
// client's request for the SearchDashboards 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 SearchDashboards for more information on using the SearchDashboards
// 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 SearchDashboardsRequest method.
//	req, resp := client.SearchDashboardsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/SearchDashboards
func (c *QuickSight) SearchDashboardsRequest(input *SearchDashboardsInput) (req *request.Request, output *SearchDashboardsOutput) {
	op := &request.Operation{
		Name:       opSearchDashboards,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/search/dashboards",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &SearchDashboardsInput{}
	}

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

// SearchDashboards API operation for Amazon QuickSight.
//
// Searches for dashboards that belong to a user.
//
// This operation is eventually consistent. The results are best effort and
// may not reflect very recent updates and changes.
//
// 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 Amazon QuickSight's
// API operation SearchDashboards for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/SearchDashboards
func (c *QuickSight) SearchDashboards(input *SearchDashboardsInput) (*SearchDashboardsOutput, error) {
	req, out := c.SearchDashboardsRequest(input)
	return out, req.Send()
}

// SearchDashboardsWithContext is the same as SearchDashboards with the addition of
// the ability to pass a context and additional request options.
//
// See SearchDashboards 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 *QuickSight) SearchDashboardsWithContext(ctx aws.Context, input *SearchDashboardsInput, opts ...request.Option) (*SearchDashboardsOutput, error) {
	req, out := c.SearchDashboardsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// SearchDashboardsPages iterates over the pages of a SearchDashboards operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See SearchDashboards 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 SearchDashboards operation.
//	pageNum := 0
//	err := client.SearchDashboardsPages(params,
//	    func(page *quicksight.SearchDashboardsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) SearchDashboardsPages(input *SearchDashboardsInput, fn func(*SearchDashboardsOutput, bool) bool) error {
	return c.SearchDashboardsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// SearchDashboardsPagesWithContext same as SearchDashboardsPages 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 *QuickSight) SearchDashboardsPagesWithContext(ctx aws.Context, input *SearchDashboardsInput, fn func(*SearchDashboardsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *SearchDashboardsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.SearchDashboardsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opSearchDataSets = "SearchDataSets"

// SearchDataSetsRequest generates a "aws/request.Request" representing the
// client's request for the SearchDataSets 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 SearchDataSets for more information on using the SearchDataSets
// 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 SearchDataSetsRequest method.
//	req, resp := client.SearchDataSetsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/SearchDataSets
func (c *QuickSight) SearchDataSetsRequest(input *SearchDataSetsInput) (req *request.Request, output *SearchDataSetsOutput) {
	op := &request.Operation{
		Name:       opSearchDataSets,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/search/data-sets",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &SearchDataSetsInput{}
	}

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

// SearchDataSets API operation for Amazon QuickSight.
//
// Use the SearchDataSets operation to search for datasets that belong 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 Amazon QuickSight's
// API operation SearchDataSets for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/SearchDataSets
func (c *QuickSight) SearchDataSets(input *SearchDataSetsInput) (*SearchDataSetsOutput, error) {
	req, out := c.SearchDataSetsRequest(input)
	return out, req.Send()
}

// SearchDataSetsWithContext is the same as SearchDataSets with the addition of
// the ability to pass a context and additional request options.
//
// See SearchDataSets 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 *QuickSight) SearchDataSetsWithContext(ctx aws.Context, input *SearchDataSetsInput, opts ...request.Option) (*SearchDataSetsOutput, error) {
	req, out := c.SearchDataSetsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// SearchDataSetsPages iterates over the pages of a SearchDataSets operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See SearchDataSets 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 SearchDataSets operation.
//	pageNum := 0
//	err := client.SearchDataSetsPages(params,
//	    func(page *quicksight.SearchDataSetsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) SearchDataSetsPages(input *SearchDataSetsInput, fn func(*SearchDataSetsOutput, bool) bool) error {
	return c.SearchDataSetsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// SearchDataSetsPagesWithContext same as SearchDataSetsPages 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 *QuickSight) SearchDataSetsPagesWithContext(ctx aws.Context, input *SearchDataSetsInput, fn func(*SearchDataSetsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *SearchDataSetsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.SearchDataSetsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opSearchDataSources = "SearchDataSources"

// SearchDataSourcesRequest generates a "aws/request.Request" representing the
// client's request for the SearchDataSources 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 SearchDataSources for more information on using the SearchDataSources
// 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 SearchDataSourcesRequest method.
//	req, resp := client.SearchDataSourcesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/SearchDataSources
func (c *QuickSight) SearchDataSourcesRequest(input *SearchDataSourcesInput) (req *request.Request, output *SearchDataSourcesOutput) {
	op := &request.Operation{
		Name:       opSearchDataSources,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/search/data-sources",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &SearchDataSourcesInput{}
	}

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

// SearchDataSources API operation for Amazon QuickSight.
//
// Use the SearchDataSources operation to search for data sources that belong
// 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 Amazon QuickSight's
// API operation SearchDataSources for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/SearchDataSources
func (c *QuickSight) SearchDataSources(input *SearchDataSourcesInput) (*SearchDataSourcesOutput, error) {
	req, out := c.SearchDataSourcesRequest(input)
	return out, req.Send()
}

// SearchDataSourcesWithContext is the same as SearchDataSources with the addition of
// the ability to pass a context and additional request options.
//
// See SearchDataSources 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 *QuickSight) SearchDataSourcesWithContext(ctx aws.Context, input *SearchDataSourcesInput, opts ...request.Option) (*SearchDataSourcesOutput, error) {
	req, out := c.SearchDataSourcesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// SearchDataSourcesPages iterates over the pages of a SearchDataSources operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See SearchDataSources 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 SearchDataSources operation.
//	pageNum := 0
//	err := client.SearchDataSourcesPages(params,
//	    func(page *quicksight.SearchDataSourcesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) SearchDataSourcesPages(input *SearchDataSourcesInput, fn func(*SearchDataSourcesOutput, bool) bool) error {
	return c.SearchDataSourcesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// SearchDataSourcesPagesWithContext same as SearchDataSourcesPages 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 *QuickSight) SearchDataSourcesPagesWithContext(ctx aws.Context, input *SearchDataSourcesInput, fn func(*SearchDataSourcesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *SearchDataSourcesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.SearchDataSourcesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opSearchFolders = "SearchFolders"

// SearchFoldersRequest generates a "aws/request.Request" representing the
// client's request for the SearchFolders 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 SearchFolders for more information on using the SearchFolders
// 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 SearchFoldersRequest method.
//	req, resp := client.SearchFoldersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/SearchFolders
func (c *QuickSight) SearchFoldersRequest(input *SearchFoldersInput) (req *request.Request, output *SearchFoldersOutput) {
	op := &request.Operation{
		Name:       opSearchFolders,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/search/folders",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &SearchFoldersInput{}
	}

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

// SearchFolders API operation for Amazon QuickSight.
//
// Searches the subfolders in a folder.
//
// 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 Amazon QuickSight's
// API operation SearchFolders for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InvalidRequestException
//     You don't have this feature activated for your account. To fix this issue,
//     contact Amazon Web Services support.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/SearchFolders
func (c *QuickSight) SearchFolders(input *SearchFoldersInput) (*SearchFoldersOutput, error) {
	req, out := c.SearchFoldersRequest(input)
	return out, req.Send()
}

// SearchFoldersWithContext is the same as SearchFolders with the addition of
// the ability to pass a context and additional request options.
//
// See SearchFolders 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 *QuickSight) SearchFoldersWithContext(ctx aws.Context, input *SearchFoldersInput, opts ...request.Option) (*SearchFoldersOutput, error) {
	req, out := c.SearchFoldersRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// SearchFoldersPages iterates over the pages of a SearchFolders operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See SearchFolders 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 SearchFolders operation.
//	pageNum := 0
//	err := client.SearchFoldersPages(params,
//	    func(page *quicksight.SearchFoldersOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) SearchFoldersPages(input *SearchFoldersInput, fn func(*SearchFoldersOutput, bool) bool) error {
	return c.SearchFoldersPagesWithContext(aws.BackgroundContext(), input, fn)
}

// SearchFoldersPagesWithContext same as SearchFoldersPages 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 *QuickSight) SearchFoldersPagesWithContext(ctx aws.Context, input *SearchFoldersInput, fn func(*SearchFoldersOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *SearchFoldersInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.SearchFoldersRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opSearchGroups = "SearchGroups"

// SearchGroupsRequest generates a "aws/request.Request" representing the
// client's request for the SearchGroups 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 SearchGroups for more information on using the SearchGroups
// 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 SearchGroupsRequest method.
//	req, resp := client.SearchGroupsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/SearchGroups
func (c *QuickSight) SearchGroupsRequest(input *SearchGroupsInput) (req *request.Request, output *SearchGroupsOutput) {
	op := &request.Operation{
		Name:       opSearchGroups,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/groups-search",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &SearchGroupsInput{}
	}

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

// SearchGroups API operation for Amazon QuickSight.
//
// Use the SearchGroups operation to search groups in a specified Amazon QuickSight
// namespace using the supplied filters.
//
// 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 Amazon QuickSight's
// API operation SearchGroups for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidNextTokenException
//     The NextToken value isn't valid.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/SearchGroups
func (c *QuickSight) SearchGroups(input *SearchGroupsInput) (*SearchGroupsOutput, error) {
	req, out := c.SearchGroupsRequest(input)
	return out, req.Send()
}

// SearchGroupsWithContext is the same as SearchGroups with the addition of
// the ability to pass a context and additional request options.
//
// See SearchGroups 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 *QuickSight) SearchGroupsWithContext(ctx aws.Context, input *SearchGroupsInput, opts ...request.Option) (*SearchGroupsOutput, error) {
	req, out := c.SearchGroupsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// SearchGroupsPages iterates over the pages of a SearchGroups operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See SearchGroups 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 SearchGroups operation.
//	pageNum := 0
//	err := client.SearchGroupsPages(params,
//	    func(page *quicksight.SearchGroupsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *QuickSight) SearchGroupsPages(input *SearchGroupsInput, fn func(*SearchGroupsOutput, bool) bool) error {
	return c.SearchGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// SearchGroupsPagesWithContext same as SearchGroupsPages 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 *QuickSight) SearchGroupsPagesWithContext(ctx aws.Context, input *SearchGroupsInput, fn func(*SearchGroupsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *SearchGroupsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.SearchGroupsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

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

	return p.Err()
}

const opStartAssetBundleExportJob = "StartAssetBundleExportJob"

// StartAssetBundleExportJobRequest generates a "aws/request.Request" representing the
// client's request for the StartAssetBundleExportJob 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 StartAssetBundleExportJob for more information on using the StartAssetBundleExportJob
// 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 StartAssetBundleExportJobRequest method.
//	req, resp := client.StartAssetBundleExportJobRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/StartAssetBundleExportJob
func (c *QuickSight) StartAssetBundleExportJobRequest(input *StartAssetBundleExportJobInput) (req *request.Request, output *StartAssetBundleExportJobOutput) {
	op := &request.Operation{
		Name:       opStartAssetBundleExportJob,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/asset-bundle-export-jobs/export",
	}

	if input == nil {
		input = &StartAssetBundleExportJobInput{}
	}

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

// StartAssetBundleExportJob API operation for Amazon QuickSight.
//
// Starts an Asset Bundle export job.
//
// An Asset Bundle export job exports specified Amazon QuickSight assets. You
// can also choose to export any asset dependencies in the same job. Export
// jobs run asynchronously and can be polled with a DescribeAssetBundleExportJob
// API call. When a job is successfully completed, a download URL that contains
// the exported assets is returned. The URL is valid for 5 minutes and can be
// refreshed with a DescribeAssetBundleExportJob API call. Each Amazon QuickSight
// account can run up to 5 export jobs concurrently.
//
// The API caller must have the necessary permissions in their IAM role to access
// each resource before the resources can be exported.
//
// 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 Amazon QuickSight's
// API operation StartAssetBundleExportJob for usage and error information.
//
// Returned Error Types:
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/StartAssetBundleExportJob
func (c *QuickSight) StartAssetBundleExportJob(input *StartAssetBundleExportJobInput) (*StartAssetBundleExportJobOutput, error) {
	req, out := c.StartAssetBundleExportJobRequest(input)
	return out, req.Send()
}

// StartAssetBundleExportJobWithContext is the same as StartAssetBundleExportJob with the addition of
// the ability to pass a context and additional request options.
//
// See StartAssetBundleExportJob 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 *QuickSight) StartAssetBundleExportJobWithContext(ctx aws.Context, input *StartAssetBundleExportJobInput, opts ...request.Option) (*StartAssetBundleExportJobOutput, error) {
	req, out := c.StartAssetBundleExportJobRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opStartAssetBundleImportJob = "StartAssetBundleImportJob"

// StartAssetBundleImportJobRequest generates a "aws/request.Request" representing the
// client's request for the StartAssetBundleImportJob 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 StartAssetBundleImportJob for more information on using the StartAssetBundleImportJob
// 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 StartAssetBundleImportJobRequest method.
//	req, resp := client.StartAssetBundleImportJobRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/StartAssetBundleImportJob
func (c *QuickSight) StartAssetBundleImportJobRequest(input *StartAssetBundleImportJobInput) (req *request.Request, output *StartAssetBundleImportJobOutput) {
	op := &request.Operation{
		Name:       opStartAssetBundleImportJob,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/asset-bundle-import-jobs/import",
	}

	if input == nil {
		input = &StartAssetBundleImportJobInput{}
	}

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

// StartAssetBundleImportJob API operation for Amazon QuickSight.
//
// Starts an Asset Bundle import job.
//
// An Asset Bundle import job imports specified Amazon QuickSight assets into
// an Amazon QuickSight account. You can also choose to import a naming prefix
// and specified configuration overrides. The assets that are contained in the
// bundle file that you provide are used to create or update a new or existing
// asset in your Amazon QuickSight account. Each Amazon QuickSight account can
// run up to 5 import jobs concurrently.
//
// The API caller must have the necessary "create", "describe", and "update"
// permissions in their IAM role to access each resource type that is contained
// in the bundle file before the resources can be imported.
//
// 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 Amazon QuickSight's
// API operation StartAssetBundleImportJob for usage and error information.
//
// Returned Error Types:
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/StartAssetBundleImportJob
func (c *QuickSight) StartAssetBundleImportJob(input *StartAssetBundleImportJobInput) (*StartAssetBundleImportJobOutput, error) {
	req, out := c.StartAssetBundleImportJobRequest(input)
	return out, req.Send()
}

// StartAssetBundleImportJobWithContext is the same as StartAssetBundleImportJob with the addition of
// the ability to pass a context and additional request options.
//
// See StartAssetBundleImportJob 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 *QuickSight) StartAssetBundleImportJobWithContext(ctx aws.Context, input *StartAssetBundleImportJobInput, opts ...request.Option) (*StartAssetBundleImportJobOutput, error) {
	req, out := c.StartAssetBundleImportJobRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opStartDashboardSnapshotJob = "StartDashboardSnapshotJob"

// StartDashboardSnapshotJobRequest generates a "aws/request.Request" representing the
// client's request for the StartDashboardSnapshotJob 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 StartDashboardSnapshotJob for more information on using the StartDashboardSnapshotJob
// 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 StartDashboardSnapshotJobRequest method.
//	req, resp := client.StartDashboardSnapshotJobRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/StartDashboardSnapshotJob
func (c *QuickSight) StartDashboardSnapshotJobRequest(input *StartDashboardSnapshotJobInput) (req *request.Request, output *StartDashboardSnapshotJobOutput) {
	op := &request.Operation{
		Name:       opStartDashboardSnapshotJob,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/dashboards/{DashboardId}/snapshot-jobs",
	}

	if input == nil {
		input = &StartDashboardSnapshotJobInput{}
	}

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

// StartDashboardSnapshotJob API operation for Amazon QuickSight.
//
// Starts an asynchronous job that generates a snapshot of a dashboard's output.
// You can request one or several of the following format configurations in
// each API call.
//
//   - 1 Paginated PDF
//
//   - 1 Excel workbook that includes up to 5 table or pivot table visuals
//
//   - 5 CSVs from table or pivot table visuals
//
// The status of a submitted job can be polled with the DescribeDashboardSnapshotJob
// API. When you call the DescribeDashboardSnapshotJob API, check the JobStatus
// field in the response. Once the job reaches a COMPLETED or FAILED status,
// use the DescribeDashboardSnapshotJobResult API to obtain the URLs for the
// generated files. If the job fails, the DescribeDashboardSnapshotJobResult
// API returns detailed information about the error that occurred.
//
// # StartDashboardSnapshotJob API throttling
//
// Amazon QuickSight utilizes API throttling to create a more consistent user
// experience within a time span for customers when they call the StartDashboardSnapshotJob.
// By default, 12 jobs can run simlutaneously in one Amazon Web Services account
// and users can submit up 10 API requests per second before an account is throttled.
// If an overwhelming number of API requests are made by the same user in a
// short period of time, Amazon QuickSight throttles the API calls to maintin
// an optimal experience and reliability for all Amazon QuickSight users.
//
// # Common throttling scenarios
//
// The following list provides information about the most commin throttling
// scenarios that can occur.
//
//   - A large number of SnapshotExport API jobs are running simultaneously
//     on an Amazon Web Services account. When a new StartDashboardSnapshotJob
//     is created and there are already 12 jobs with the RUNNING status, the
//     new job request fails and returns a LimitExceededException error. Wait
//     for a current job to comlpete before you resubmit the new job.
//
//   - A large number of API requests are submitted on an Amazon Web Services
//     account. When a user makes more than 10 API calls to the Amazon QuickSight
//     API in one second, a ThrottlingException is returned.
//
// If your use case requires a higher throttling limit, contact your account
// admin or Amazon Web ServicesSupport (http://aws.amazon.com/contact-us/) to
// explore options to tailor a more optimal expereince for your account.
//
// # Best practices to handle throttling
//
// If your use case projects high levels of API traffic, try to reduce the degree
// of frequency and parallelism of API calls as much as you can to avoid throttling.
// You can also perform a timing test to calculate an estimate for the total
// processing time of your projected load that stays within the throttling limits
// of the Amazon QuickSight APIs. For example, if your projected traffic is
// 100 snapshot jobs before 12:00 PM per day, start 12 jobs in parallel and
// measure the amount of time it takes to proccess all 12 jobs. Once you obtain
// the result, multiply the duration by 9, for example (12 minutes * 9 = 108
// minutes). Use the new result to determine the latest time at which the jobs
// need to be started to meet your target deadline.
//
// The time that it takes to process a job can be impacted by the following
// factors:
//
//   - The dataset type (Direct Query or SPICE).
//
//   - The size of the dataset.
//
//   - The complexity of the calculated fields that are used in the dashboard.
//
//   - The number of visuals that are on a sheet.
//
//   - The types of visuals that are on the sheet.
//
//   - The number of formats and snapshots that are requested in the job configuration.
//
//   - The size of the generated snapshots.
//
// 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 Amazon QuickSight's
// API operation StartDashboardSnapshotJob for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - UnsupportedPricingPlanException
//     This error indicates that you are calling an embedding operation in Amazon
//     QuickSight without the required pricing plan on your Amazon Web Services
//     account. Before you can use embedding for anonymous users, a QuickSight administrator
//     needs to add capacity pricing to Amazon QuickSight. You can do this on the
//     Manage Amazon QuickSight page.
//
//     After capacity pricing is added, you can use the GetDashboardEmbedUrl (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html)
//     API operation with the --identity-type ANONYMOUS option.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/StartDashboardSnapshotJob
func (c *QuickSight) StartDashboardSnapshotJob(input *StartDashboardSnapshotJobInput) (*StartDashboardSnapshotJobOutput, error) {
	req, out := c.StartDashboardSnapshotJobRequest(input)
	return out, req.Send()
}

// StartDashboardSnapshotJobWithContext is the same as StartDashboardSnapshotJob with the addition of
// the ability to pass a context and additional request options.
//
// See StartDashboardSnapshotJob 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 *QuickSight) StartDashboardSnapshotJobWithContext(ctx aws.Context, input *StartDashboardSnapshotJobInput, opts ...request.Option) (*StartDashboardSnapshotJobOutput, error) {
	req, out := c.StartDashboardSnapshotJobRequest(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/quicksight-2018-04-01/TagResource
func (c *QuickSight) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
	op := &request.Operation{
		Name:       opTagResource,
		HTTPMethod: "POST",
		HTTPPath:   "/resources/{ResourceArn}/tags",
	}

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

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

// TagResource API operation for Amazon QuickSight.
//
// Assigns one or more tags (key-value pairs) to the specified Amazon QuickSight
// resource.
//
// Tags can help you organize and categorize your resources. You can also use
// them to scope user permissions, by granting a user permission to access or
// change only resources with certain tag values. You can use the TagResource
// operation with a resource that already has tags. If you specify a new tag
// key for the resource, this tag is appended to the list of tags associated
// with the resource. If you specify a tag key that is already associated with
// the resource, the new tag value that you specify replaces the previous value
// for that tag.
//
// You can associate as many as 50 tags with a resource. Amazon QuickSight supports
// tagging on data set, data source, dashboard, template, topic, and user.
//
// Tagging for Amazon QuickSight works in a similar way to tagging for other
// Amazon Web Services services, except for the following:
//
//   - Tags are used to track costs for users in Amazon QuickSight. You can't
//     tag other resources that Amazon QuickSight costs are based on, such as
//     storage capacoty (SPICE), session usage, alert consumption, or reporting
//     units.
//
//   - Amazon QuickSight doesn't currently support the tag editor for Resource
//     Groups.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon QuickSight's
// API operation TagResource for usage and error information.
//
// Returned Error Types:
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/TagResource
func (c *QuickSight) 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 *QuickSight) 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/quicksight-2018-04-01/UntagResource
func (c *QuickSight) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
	op := &request.Operation{
		Name:       opUntagResource,
		HTTPMethod: "DELETE",
		HTTPPath:   "/resources/{ResourceArn}/tags",
	}

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

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

// UntagResource API operation for Amazon QuickSight.
//
// Removes a tag or tags from a 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 Amazon QuickSight's
// API operation UntagResource for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UntagResource
func (c *QuickSight) 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 *QuickSight) 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 opUpdateAccountCustomization = "UpdateAccountCustomization"

// UpdateAccountCustomizationRequest generates a "aws/request.Request" representing the
// client's request for the UpdateAccountCustomization 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 UpdateAccountCustomization for more information on using the UpdateAccountCustomization
// 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 UpdateAccountCustomizationRequest method.
//	req, resp := client.UpdateAccountCustomizationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateAccountCustomization
func (c *QuickSight) UpdateAccountCustomizationRequest(input *UpdateAccountCustomizationInput) (req *request.Request, output *UpdateAccountCustomizationOutput) {
	op := &request.Operation{
		Name:       opUpdateAccountCustomization,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/customizations",
	}

	if input == nil {
		input = &UpdateAccountCustomizationInput{}
	}

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

// UpdateAccountCustomization API operation for Amazon QuickSight.
//
// Updates Amazon QuickSight customizations for the current Amazon Web Services
// Region. Currently, the only customization that you can use is a theme.
//
// You can use customizations for your Amazon Web Services account or, if you
// specify a namespace, for a Amazon QuickSight namespace instead. Customizations
// that apply to a namespace override customizations that apply to an Amazon
// Web Services account. To find out which customizations apply, use the DescribeAccountCustomization
// API operation.
//
// 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 Amazon QuickSight's
// API operation UpdateAccountCustomization for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateAccountCustomization
func (c *QuickSight) UpdateAccountCustomization(input *UpdateAccountCustomizationInput) (*UpdateAccountCustomizationOutput, error) {
	req, out := c.UpdateAccountCustomizationRequest(input)
	return out, req.Send()
}

// UpdateAccountCustomizationWithContext is the same as UpdateAccountCustomization with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateAccountCustomization 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 *QuickSight) UpdateAccountCustomizationWithContext(ctx aws.Context, input *UpdateAccountCustomizationInput, opts ...request.Option) (*UpdateAccountCustomizationOutput, error) {
	req, out := c.UpdateAccountCustomizationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateAccountSettings = "UpdateAccountSettings"

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

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

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

// UpdateAccountSettings API operation for Amazon QuickSight.
//
// Updates the Amazon QuickSight settings in your Amazon Web Services 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 Amazon QuickSight's
// API operation UpdateAccountSettings for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateAccountSettings
func (c *QuickSight) UpdateAccountSettings(input *UpdateAccountSettingsInput) (*UpdateAccountSettingsOutput, error) {
	req, out := c.UpdateAccountSettingsRequest(input)
	return out, req.Send()
}

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

const opUpdateAnalysis = "UpdateAnalysis"

// UpdateAnalysisRequest generates a "aws/request.Request" representing the
// client's request for the UpdateAnalysis 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 UpdateAnalysis for more information on using the UpdateAnalysis
// 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 UpdateAnalysisRequest method.
//	req, resp := client.UpdateAnalysisRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateAnalysis
func (c *QuickSight) UpdateAnalysisRequest(input *UpdateAnalysisInput) (req *request.Request, output *UpdateAnalysisOutput) {
	op := &request.Operation{
		Name:       opUpdateAnalysis,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/analyses/{AnalysisId}",
	}

	if input == nil {
		input = &UpdateAnalysisInput{}
	}

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

// UpdateAnalysis API operation for Amazon QuickSight.
//
// # Updates an analysis in Amazon QuickSight
//
// 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 Amazon QuickSight's
// API operation UpdateAnalysis for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateAnalysis
func (c *QuickSight) UpdateAnalysis(input *UpdateAnalysisInput) (*UpdateAnalysisOutput, error) {
	req, out := c.UpdateAnalysisRequest(input)
	return out, req.Send()
}

// UpdateAnalysisWithContext is the same as UpdateAnalysis with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateAnalysis 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 *QuickSight) UpdateAnalysisWithContext(ctx aws.Context, input *UpdateAnalysisInput, opts ...request.Option) (*UpdateAnalysisOutput, error) {
	req, out := c.UpdateAnalysisRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateAnalysisPermissions = "UpdateAnalysisPermissions"

// UpdateAnalysisPermissionsRequest generates a "aws/request.Request" representing the
// client's request for the UpdateAnalysisPermissions 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 UpdateAnalysisPermissions for more information on using the UpdateAnalysisPermissions
// 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 UpdateAnalysisPermissionsRequest method.
//	req, resp := client.UpdateAnalysisPermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateAnalysisPermissions
func (c *QuickSight) UpdateAnalysisPermissionsRequest(input *UpdateAnalysisPermissionsInput) (req *request.Request, output *UpdateAnalysisPermissionsOutput) {
	op := &request.Operation{
		Name:       opUpdateAnalysisPermissions,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/analyses/{AnalysisId}/permissions",
	}

	if input == nil {
		input = &UpdateAnalysisPermissionsInput{}
	}

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

// UpdateAnalysisPermissions API operation for Amazon QuickSight.
//
// Updates the read and write permissions for an analysis.
//
// 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 Amazon QuickSight's
// API operation UpdateAnalysisPermissions for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateAnalysisPermissions
func (c *QuickSight) UpdateAnalysisPermissions(input *UpdateAnalysisPermissionsInput) (*UpdateAnalysisPermissionsOutput, error) {
	req, out := c.UpdateAnalysisPermissionsRequest(input)
	return out, req.Send()
}

// UpdateAnalysisPermissionsWithContext is the same as UpdateAnalysisPermissions with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateAnalysisPermissions 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 *QuickSight) UpdateAnalysisPermissionsWithContext(ctx aws.Context, input *UpdateAnalysisPermissionsInput, opts ...request.Option) (*UpdateAnalysisPermissionsOutput, error) {
	req, out := c.UpdateAnalysisPermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateDashboard = "UpdateDashboard"

// UpdateDashboardRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDashboard 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 UpdateDashboard for more information on using the UpdateDashboard
// 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 UpdateDashboardRequest method.
//	req, resp := client.UpdateDashboardRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateDashboard
func (c *QuickSight) UpdateDashboardRequest(input *UpdateDashboardInput) (req *request.Request, output *UpdateDashboardOutput) {
	op := &request.Operation{
		Name:       opUpdateDashboard,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/dashboards/{DashboardId}",
	}

	if input == nil {
		input = &UpdateDashboardInput{}
	}

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

// UpdateDashboard API operation for Amazon QuickSight.
//
// Updates a dashboard in an Amazon Web Services account.
//
// Updating a Dashboard creates a new dashboard version but does not immediately
// publish the new version. You can update the published version of a dashboard
// by using the UpdateDashboardPublishedVersion (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateDashboardPublishedVersion.html)
// API operation.
//
// 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 Amazon QuickSight's
// API operation UpdateDashboard for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateDashboard
func (c *QuickSight) UpdateDashboard(input *UpdateDashboardInput) (*UpdateDashboardOutput, error) {
	req, out := c.UpdateDashboardRequest(input)
	return out, req.Send()
}

// UpdateDashboardWithContext is the same as UpdateDashboard with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateDashboard 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 *QuickSight) UpdateDashboardWithContext(ctx aws.Context, input *UpdateDashboardInput, opts ...request.Option) (*UpdateDashboardOutput, error) {
	req, out := c.UpdateDashboardRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateDashboardLinks = "UpdateDashboardLinks"

// UpdateDashboardLinksRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDashboardLinks 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 UpdateDashboardLinks for more information on using the UpdateDashboardLinks
// 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 UpdateDashboardLinksRequest method.
//	req, resp := client.UpdateDashboardLinksRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateDashboardLinks
func (c *QuickSight) UpdateDashboardLinksRequest(input *UpdateDashboardLinksInput) (req *request.Request, output *UpdateDashboardLinksOutput) {
	op := &request.Operation{
		Name:       opUpdateDashboardLinks,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/dashboards/{DashboardId}/linked-entities",
	}

	if input == nil {
		input = &UpdateDashboardLinksInput{}
	}

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

// UpdateDashboardLinks API operation for Amazon QuickSight.
//
// Updates the linked analyses on a dashboard.
//
// 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 Amazon QuickSight's
// API operation UpdateDashboardLinks for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateDashboardLinks
func (c *QuickSight) UpdateDashboardLinks(input *UpdateDashboardLinksInput) (*UpdateDashboardLinksOutput, error) {
	req, out := c.UpdateDashboardLinksRequest(input)
	return out, req.Send()
}

// UpdateDashboardLinksWithContext is the same as UpdateDashboardLinks with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateDashboardLinks 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 *QuickSight) UpdateDashboardLinksWithContext(ctx aws.Context, input *UpdateDashboardLinksInput, opts ...request.Option) (*UpdateDashboardLinksOutput, error) {
	req, out := c.UpdateDashboardLinksRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateDashboardPermissions = "UpdateDashboardPermissions"

// UpdateDashboardPermissionsRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDashboardPermissions 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 UpdateDashboardPermissions for more information on using the UpdateDashboardPermissions
// 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 UpdateDashboardPermissionsRequest method.
//	req, resp := client.UpdateDashboardPermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateDashboardPermissions
func (c *QuickSight) UpdateDashboardPermissionsRequest(input *UpdateDashboardPermissionsInput) (req *request.Request, output *UpdateDashboardPermissionsOutput) {
	op := &request.Operation{
		Name:       opUpdateDashboardPermissions,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/dashboards/{DashboardId}/permissions",
	}

	if input == nil {
		input = &UpdateDashboardPermissionsInput{}
	}

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

// UpdateDashboardPermissions API operation for Amazon QuickSight.
//
// Updates read and write permissions on a dashboard.
//
// 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 Amazon QuickSight's
// API operation UpdateDashboardPermissions for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateDashboardPermissions
func (c *QuickSight) UpdateDashboardPermissions(input *UpdateDashboardPermissionsInput) (*UpdateDashboardPermissionsOutput, error) {
	req, out := c.UpdateDashboardPermissionsRequest(input)
	return out, req.Send()
}

// UpdateDashboardPermissionsWithContext is the same as UpdateDashboardPermissions with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateDashboardPermissions 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 *QuickSight) UpdateDashboardPermissionsWithContext(ctx aws.Context, input *UpdateDashboardPermissionsInput, opts ...request.Option) (*UpdateDashboardPermissionsOutput, error) {
	req, out := c.UpdateDashboardPermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateDashboardPublishedVersion = "UpdateDashboardPublishedVersion"

// UpdateDashboardPublishedVersionRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDashboardPublishedVersion 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 UpdateDashboardPublishedVersion for more information on using the UpdateDashboardPublishedVersion
// 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 UpdateDashboardPublishedVersionRequest method.
//	req, resp := client.UpdateDashboardPublishedVersionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateDashboardPublishedVersion
func (c *QuickSight) UpdateDashboardPublishedVersionRequest(input *UpdateDashboardPublishedVersionInput) (req *request.Request, output *UpdateDashboardPublishedVersionOutput) {
	op := &request.Operation{
		Name:       opUpdateDashboardPublishedVersion,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/dashboards/{DashboardId}/versions/{VersionNumber}",
	}

	if input == nil {
		input = &UpdateDashboardPublishedVersionInput{}
	}

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

// UpdateDashboardPublishedVersion API operation for Amazon QuickSight.
//
// Updates the published version of a dashboard.
//
// 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 Amazon QuickSight's
// API operation UpdateDashboardPublishedVersion for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateDashboardPublishedVersion
func (c *QuickSight) UpdateDashboardPublishedVersion(input *UpdateDashboardPublishedVersionInput) (*UpdateDashboardPublishedVersionOutput, error) {
	req, out := c.UpdateDashboardPublishedVersionRequest(input)
	return out, req.Send()
}

// UpdateDashboardPublishedVersionWithContext is the same as UpdateDashboardPublishedVersion with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateDashboardPublishedVersion 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 *QuickSight) UpdateDashboardPublishedVersionWithContext(ctx aws.Context, input *UpdateDashboardPublishedVersionInput, opts ...request.Option) (*UpdateDashboardPublishedVersionOutput, error) {
	req, out := c.UpdateDashboardPublishedVersionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateDataSet = "UpdateDataSet"

// UpdateDataSetRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDataSet 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 UpdateDataSet for more information on using the UpdateDataSet
// 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 UpdateDataSetRequest method.
//	req, resp := client.UpdateDataSetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateDataSet
func (c *QuickSight) UpdateDataSetRequest(input *UpdateDataSetInput) (req *request.Request, output *UpdateDataSetOutput) {
	op := &request.Operation{
		Name:       opUpdateDataSet,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}",
	}

	if input == nil {
		input = &UpdateDataSetInput{}
	}

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

// UpdateDataSet API operation for Amazon QuickSight.
//
// Updates a dataset. This operation doesn't support datasets that include uploaded
// files as a source. Partial updates are not supported by this operation.
//
// 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 Amazon QuickSight's
// API operation UpdateDataSet for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateDataSet
func (c *QuickSight) UpdateDataSet(input *UpdateDataSetInput) (*UpdateDataSetOutput, error) {
	req, out := c.UpdateDataSetRequest(input)
	return out, req.Send()
}

// UpdateDataSetWithContext is the same as UpdateDataSet with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateDataSet 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 *QuickSight) UpdateDataSetWithContext(ctx aws.Context, input *UpdateDataSetInput, opts ...request.Option) (*UpdateDataSetOutput, error) {
	req, out := c.UpdateDataSetRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateDataSetPermissions = "UpdateDataSetPermissions"

// UpdateDataSetPermissionsRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDataSetPermissions 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 UpdateDataSetPermissions for more information on using the UpdateDataSetPermissions
// 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 UpdateDataSetPermissionsRequest method.
//	req, resp := client.UpdateDataSetPermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateDataSetPermissions
func (c *QuickSight) UpdateDataSetPermissionsRequest(input *UpdateDataSetPermissionsInput) (req *request.Request, output *UpdateDataSetPermissionsOutput) {
	op := &request.Operation{
		Name:       opUpdateDataSetPermissions,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}/permissions",
	}

	if input == nil {
		input = &UpdateDataSetPermissionsInput{}
	}

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

// UpdateDataSetPermissions API operation for Amazon QuickSight.
//
// Updates the permissions on a dataset.
//
// The permissions resource is arn:aws:quicksight:region:aws-account-id:dataset/data-set-id.
//
// 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 Amazon QuickSight's
// API operation UpdateDataSetPermissions for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateDataSetPermissions
func (c *QuickSight) UpdateDataSetPermissions(input *UpdateDataSetPermissionsInput) (*UpdateDataSetPermissionsOutput, error) {
	req, out := c.UpdateDataSetPermissionsRequest(input)
	return out, req.Send()
}

// UpdateDataSetPermissionsWithContext is the same as UpdateDataSetPermissions with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateDataSetPermissions 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 *QuickSight) UpdateDataSetPermissionsWithContext(ctx aws.Context, input *UpdateDataSetPermissionsInput, opts ...request.Option) (*UpdateDataSetPermissionsOutput, error) {
	req, out := c.UpdateDataSetPermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateDataSource = "UpdateDataSource"

// UpdateDataSourceRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDataSource 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 UpdateDataSource for more information on using the UpdateDataSource
// 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 UpdateDataSourceRequest method.
//	req, resp := client.UpdateDataSourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateDataSource
func (c *QuickSight) UpdateDataSourceRequest(input *UpdateDataSourceInput) (req *request.Request, output *UpdateDataSourceOutput) {
	op := &request.Operation{
		Name:       opUpdateDataSource,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sources/{DataSourceId}",
	}

	if input == nil {
		input = &UpdateDataSourceInput{}
	}

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

// UpdateDataSource API operation for Amazon QuickSight.
//
// Updates a data source.
//
// 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 Amazon QuickSight's
// API operation UpdateDataSource for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateDataSource
func (c *QuickSight) UpdateDataSource(input *UpdateDataSourceInput) (*UpdateDataSourceOutput, error) {
	req, out := c.UpdateDataSourceRequest(input)
	return out, req.Send()
}

// UpdateDataSourceWithContext is the same as UpdateDataSource with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateDataSource 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 *QuickSight) UpdateDataSourceWithContext(ctx aws.Context, input *UpdateDataSourceInput, opts ...request.Option) (*UpdateDataSourceOutput, error) {
	req, out := c.UpdateDataSourceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateDataSourcePermissions = "UpdateDataSourcePermissions"

// UpdateDataSourcePermissionsRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDataSourcePermissions 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 UpdateDataSourcePermissions for more information on using the UpdateDataSourcePermissions
// 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 UpdateDataSourcePermissionsRequest method.
//	req, resp := client.UpdateDataSourcePermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateDataSourcePermissions
func (c *QuickSight) UpdateDataSourcePermissionsRequest(input *UpdateDataSourcePermissionsInput) (req *request.Request, output *UpdateDataSourcePermissionsOutput) {
	op := &request.Operation{
		Name:       opUpdateDataSourcePermissions,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sources/{DataSourceId}/permissions",
	}

	if input == nil {
		input = &UpdateDataSourcePermissionsInput{}
	}

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

// UpdateDataSourcePermissions API operation for Amazon QuickSight.
//
// Updates the permissions to a data source.
//
// 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 Amazon QuickSight's
// API operation UpdateDataSourcePermissions for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateDataSourcePermissions
func (c *QuickSight) UpdateDataSourcePermissions(input *UpdateDataSourcePermissionsInput) (*UpdateDataSourcePermissionsOutput, error) {
	req, out := c.UpdateDataSourcePermissionsRequest(input)
	return out, req.Send()
}

// UpdateDataSourcePermissionsWithContext is the same as UpdateDataSourcePermissions with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateDataSourcePermissions 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 *QuickSight) UpdateDataSourcePermissionsWithContext(ctx aws.Context, input *UpdateDataSourcePermissionsInput, opts ...request.Option) (*UpdateDataSourcePermissionsOutput, error) {
	req, out := c.UpdateDataSourcePermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateFolder = "UpdateFolder"

// UpdateFolderRequest generates a "aws/request.Request" representing the
// client's request for the UpdateFolder 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 UpdateFolder for more information on using the UpdateFolder
// 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 UpdateFolderRequest method.
//	req, resp := client.UpdateFolderRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateFolder
func (c *QuickSight) UpdateFolderRequest(input *UpdateFolderInput) (req *request.Request, output *UpdateFolderOutput) {
	op := &request.Operation{
		Name:       opUpdateFolder,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/folders/{FolderId}",
	}

	if input == nil {
		input = &UpdateFolderInput{}
	}

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

// UpdateFolder API operation for Amazon QuickSight.
//
// Updates the name of a folder.
//
// 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 Amazon QuickSight's
// API operation UpdateFolder for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateFolder
func (c *QuickSight) UpdateFolder(input *UpdateFolderInput) (*UpdateFolderOutput, error) {
	req, out := c.UpdateFolderRequest(input)
	return out, req.Send()
}

// UpdateFolderWithContext is the same as UpdateFolder with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateFolder 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 *QuickSight) UpdateFolderWithContext(ctx aws.Context, input *UpdateFolderInput, opts ...request.Option) (*UpdateFolderOutput, error) {
	req, out := c.UpdateFolderRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateFolderPermissions = "UpdateFolderPermissions"

// UpdateFolderPermissionsRequest generates a "aws/request.Request" representing the
// client's request for the UpdateFolderPermissions 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 UpdateFolderPermissions for more information on using the UpdateFolderPermissions
// 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 UpdateFolderPermissionsRequest method.
//	req, resp := client.UpdateFolderPermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateFolderPermissions
func (c *QuickSight) UpdateFolderPermissionsRequest(input *UpdateFolderPermissionsInput) (req *request.Request, output *UpdateFolderPermissionsOutput) {
	op := &request.Operation{
		Name:       opUpdateFolderPermissions,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/folders/{FolderId}/permissions",
	}

	if input == nil {
		input = &UpdateFolderPermissionsInput{}
	}

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

// UpdateFolderPermissions API operation for Amazon QuickSight.
//
// Updates permissions of a folder.
//
// 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 Amazon QuickSight's
// API operation UpdateFolderPermissions for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateFolderPermissions
func (c *QuickSight) UpdateFolderPermissions(input *UpdateFolderPermissionsInput) (*UpdateFolderPermissionsOutput, error) {
	req, out := c.UpdateFolderPermissionsRequest(input)
	return out, req.Send()
}

// UpdateFolderPermissionsWithContext is the same as UpdateFolderPermissions with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateFolderPermissions 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 *QuickSight) UpdateFolderPermissionsWithContext(ctx aws.Context, input *UpdateFolderPermissionsInput, opts ...request.Option) (*UpdateFolderPermissionsOutput, error) {
	req, out := c.UpdateFolderPermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateGroup = "UpdateGroup"

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

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

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

// UpdateGroup API operation for Amazon QuickSight.
//
// Changes a group description.
//
// 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 Amazon QuickSight's
// API operation UpdateGroup for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateGroup
func (c *QuickSight) UpdateGroup(input *UpdateGroupInput) (*UpdateGroupOutput, error) {
	req, out := c.UpdateGroupRequest(input)
	return out, req.Send()
}

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

const opUpdateIAMPolicyAssignment = "UpdateIAMPolicyAssignment"

// UpdateIAMPolicyAssignmentRequest generates a "aws/request.Request" representing the
// client's request for the UpdateIAMPolicyAssignment 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 UpdateIAMPolicyAssignment for more information on using the UpdateIAMPolicyAssignment
// 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 UpdateIAMPolicyAssignmentRequest method.
//	req, resp := client.UpdateIAMPolicyAssignmentRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateIAMPolicyAssignment
func (c *QuickSight) UpdateIAMPolicyAssignmentRequest(input *UpdateIAMPolicyAssignmentInput) (req *request.Request, output *UpdateIAMPolicyAssignmentOutput) {
	op := &request.Operation{
		Name:       opUpdateIAMPolicyAssignment,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/iam-policy-assignments/{AssignmentName}",
	}

	if input == nil {
		input = &UpdateIAMPolicyAssignmentInput{}
	}

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

// UpdateIAMPolicyAssignment API operation for Amazon QuickSight.
//
// Updates an existing IAM policy assignment. This operation updates only the
// optional parameter or parameters that are specified in the request. This
// overwrites all of the users included in Identities.
//
// 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 Amazon QuickSight's
// API operation UpdateIAMPolicyAssignment for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ConcurrentUpdatingException
//     A resource is already in a state that indicates an operation is happening
//     that must complete before a new update can be applied.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateIAMPolicyAssignment
func (c *QuickSight) UpdateIAMPolicyAssignment(input *UpdateIAMPolicyAssignmentInput) (*UpdateIAMPolicyAssignmentOutput, error) {
	req, out := c.UpdateIAMPolicyAssignmentRequest(input)
	return out, req.Send()
}

// UpdateIAMPolicyAssignmentWithContext is the same as UpdateIAMPolicyAssignment with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateIAMPolicyAssignment 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 *QuickSight) UpdateIAMPolicyAssignmentWithContext(ctx aws.Context, input *UpdateIAMPolicyAssignmentInput, opts ...request.Option) (*UpdateIAMPolicyAssignmentOutput, error) {
	req, out := c.UpdateIAMPolicyAssignmentRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateIdentityPropagationConfig = "UpdateIdentityPropagationConfig"

// UpdateIdentityPropagationConfigRequest generates a "aws/request.Request" representing the
// client's request for the UpdateIdentityPropagationConfig 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 UpdateIdentityPropagationConfig for more information on using the UpdateIdentityPropagationConfig
// 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 UpdateIdentityPropagationConfigRequest method.
//	req, resp := client.UpdateIdentityPropagationConfigRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateIdentityPropagationConfig
func (c *QuickSight) UpdateIdentityPropagationConfigRequest(input *UpdateIdentityPropagationConfigInput) (req *request.Request, output *UpdateIdentityPropagationConfigOutput) {
	op := &request.Operation{
		Name:       opUpdateIdentityPropagationConfig,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/identity-propagation-config/{Service}",
	}

	if input == nil {
		input = &UpdateIdentityPropagationConfigInput{}
	}

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

// UpdateIdentityPropagationConfig API operation for Amazon QuickSight.
//
// Adds or updates services and authorized targets to configure what the Amazon
// QuickSight IAM Identity Center application can access.
//
// This operation is only supported for Amazon QuickSight accounts using IAM
// Identity Center
//
// 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 Amazon QuickSight's
// API operation UpdateIdentityPropagationConfig for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateIdentityPropagationConfig
func (c *QuickSight) UpdateIdentityPropagationConfig(input *UpdateIdentityPropagationConfigInput) (*UpdateIdentityPropagationConfigOutput, error) {
	req, out := c.UpdateIdentityPropagationConfigRequest(input)
	return out, req.Send()
}

// UpdateIdentityPropagationConfigWithContext is the same as UpdateIdentityPropagationConfig with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateIdentityPropagationConfig 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 *QuickSight) UpdateIdentityPropagationConfigWithContext(ctx aws.Context, input *UpdateIdentityPropagationConfigInput, opts ...request.Option) (*UpdateIdentityPropagationConfigOutput, error) {
	req, out := c.UpdateIdentityPropagationConfigRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateIpRestriction = "UpdateIpRestriction"

// UpdateIpRestrictionRequest generates a "aws/request.Request" representing the
// client's request for the UpdateIpRestriction 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 UpdateIpRestriction for more information on using the UpdateIpRestriction
// 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 UpdateIpRestrictionRequest method.
//	req, resp := client.UpdateIpRestrictionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateIpRestriction
func (c *QuickSight) UpdateIpRestrictionRequest(input *UpdateIpRestrictionInput) (req *request.Request, output *UpdateIpRestrictionOutput) {
	op := &request.Operation{
		Name:       opUpdateIpRestriction,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/ip-restriction",
	}

	if input == nil {
		input = &UpdateIpRestrictionInput{}
	}

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

// UpdateIpRestriction API operation for Amazon QuickSight.
//
// Updates the content and status of IP rules. Traffic from a source is allowed
// when the source satisfies either the IpRestrictionRule, VpcIdRestrictionRule,
// or VpcEndpointIdRestrictionRule. To use this operation, you must provide
// the entire map of rules. You can use the DescribeIpRestriction operation
// to get the current rule map.
//
// 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 Amazon QuickSight's
// API operation UpdateIpRestriction for usage and error information.
//
// Returned Error Types:
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateIpRestriction
func (c *QuickSight) UpdateIpRestriction(input *UpdateIpRestrictionInput) (*UpdateIpRestrictionOutput, error) {
	req, out := c.UpdateIpRestrictionRequest(input)
	return out, req.Send()
}

// UpdateIpRestrictionWithContext is the same as UpdateIpRestriction with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateIpRestriction 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 *QuickSight) UpdateIpRestrictionWithContext(ctx aws.Context, input *UpdateIpRestrictionInput, opts ...request.Option) (*UpdateIpRestrictionOutput, error) {
	req, out := c.UpdateIpRestrictionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateKeyRegistration = "UpdateKeyRegistration"

// UpdateKeyRegistrationRequest generates a "aws/request.Request" representing the
// client's request for the UpdateKeyRegistration 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 UpdateKeyRegistration for more information on using the UpdateKeyRegistration
// 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 UpdateKeyRegistrationRequest method.
//	req, resp := client.UpdateKeyRegistrationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateKeyRegistration
func (c *QuickSight) UpdateKeyRegistrationRequest(input *UpdateKeyRegistrationInput) (req *request.Request, output *UpdateKeyRegistrationOutput) {
	op := &request.Operation{
		Name:       opUpdateKeyRegistration,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/key-registration",
	}

	if input == nil {
		input = &UpdateKeyRegistrationInput{}
	}

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

// UpdateKeyRegistration API operation for Amazon QuickSight.
//
// Updates a customer managed key in a Amazon QuickSight 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 Amazon QuickSight's
// API operation UpdateKeyRegistration for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateKeyRegistration
func (c *QuickSight) UpdateKeyRegistration(input *UpdateKeyRegistrationInput) (*UpdateKeyRegistrationOutput, error) {
	req, out := c.UpdateKeyRegistrationRequest(input)
	return out, req.Send()
}

// UpdateKeyRegistrationWithContext is the same as UpdateKeyRegistration with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateKeyRegistration 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 *QuickSight) UpdateKeyRegistrationWithContext(ctx aws.Context, input *UpdateKeyRegistrationInput, opts ...request.Option) (*UpdateKeyRegistrationOutput, error) {
	req, out := c.UpdateKeyRegistrationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdatePublicSharingSettings = "UpdatePublicSharingSettings"

// UpdatePublicSharingSettingsRequest generates a "aws/request.Request" representing the
// client's request for the UpdatePublicSharingSettings 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 UpdatePublicSharingSettings for more information on using the UpdatePublicSharingSettings
// 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 UpdatePublicSharingSettingsRequest method.
//	req, resp := client.UpdatePublicSharingSettingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdatePublicSharingSettings
func (c *QuickSight) UpdatePublicSharingSettingsRequest(input *UpdatePublicSharingSettingsInput) (req *request.Request, output *UpdatePublicSharingSettingsOutput) {
	op := &request.Operation{
		Name:       opUpdatePublicSharingSettings,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/public-sharing-settings",
	}

	if input == nil {
		input = &UpdatePublicSharingSettingsInput{}
	}

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

// UpdatePublicSharingSettings API operation for Amazon QuickSight.
//
// Use the UpdatePublicSharingSettings operation to turn on or turn off the
// public sharing settings of an Amazon QuickSight dashboard.
//
// To use this operation, turn on session capacity pricing for your Amazon QuickSight
// account.
//
// Before you can turn on public sharing on your account, make sure to give
// public sharing permissions to an administrative user in the Identity and
// Access Management (IAM) console. For more information on using IAM with Amazon
// QuickSight, see Using Amazon QuickSight with IAM (https://docs.aws.amazon.com/quicksight/latest/user/security_iam_service-with-iam.html)
// in the Amazon QuickSight User Guide.
//
// 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 Amazon QuickSight's
// API operation UpdatePublicSharingSettings for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedPricingPlanException
//     This error indicates that you are calling an embedding operation in Amazon
//     QuickSight without the required pricing plan on your Amazon Web Services
//     account. Before you can use embedding for anonymous users, a QuickSight administrator
//     needs to add capacity pricing to Amazon QuickSight. You can do this on the
//     Manage Amazon QuickSight page.
//
//     After capacity pricing is added, you can use the GetDashboardEmbedUrl (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html)
//     API operation with the --identity-type ANONYMOUS option.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdatePublicSharingSettings
func (c *QuickSight) UpdatePublicSharingSettings(input *UpdatePublicSharingSettingsInput) (*UpdatePublicSharingSettingsOutput, error) {
	req, out := c.UpdatePublicSharingSettingsRequest(input)
	return out, req.Send()
}

// UpdatePublicSharingSettingsWithContext is the same as UpdatePublicSharingSettings with the addition of
// the ability to pass a context and additional request options.
//
// See UpdatePublicSharingSettings 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 *QuickSight) UpdatePublicSharingSettingsWithContext(ctx aws.Context, input *UpdatePublicSharingSettingsInput, opts ...request.Option) (*UpdatePublicSharingSettingsOutput, error) {
	req, out := c.UpdatePublicSharingSettingsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateRefreshSchedule = "UpdateRefreshSchedule"

// UpdateRefreshScheduleRequest generates a "aws/request.Request" representing the
// client's request for the UpdateRefreshSchedule 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 UpdateRefreshSchedule for more information on using the UpdateRefreshSchedule
// 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 UpdateRefreshScheduleRequest method.
//	req, resp := client.UpdateRefreshScheduleRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateRefreshSchedule
func (c *QuickSight) UpdateRefreshScheduleRequest(input *UpdateRefreshScheduleInput) (req *request.Request, output *UpdateRefreshScheduleOutput) {
	op := &request.Operation{
		Name:       opUpdateRefreshSchedule,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/data-sets/{DataSetId}/refresh-schedules",
	}

	if input == nil {
		input = &UpdateRefreshScheduleInput{}
	}

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

// UpdateRefreshSchedule API operation for Amazon QuickSight.
//
// Updates a refresh schedule for a dataset.
//
// 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 Amazon QuickSight's
// API operation UpdateRefreshSchedule for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateRefreshSchedule
func (c *QuickSight) UpdateRefreshSchedule(input *UpdateRefreshScheduleInput) (*UpdateRefreshScheduleOutput, error) {
	req, out := c.UpdateRefreshScheduleRequest(input)
	return out, req.Send()
}

// UpdateRefreshScheduleWithContext is the same as UpdateRefreshSchedule with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateRefreshSchedule 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 *QuickSight) UpdateRefreshScheduleWithContext(ctx aws.Context, input *UpdateRefreshScheduleInput, opts ...request.Option) (*UpdateRefreshScheduleOutput, error) {
	req, out := c.UpdateRefreshScheduleRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateRoleCustomPermission = "UpdateRoleCustomPermission"

// UpdateRoleCustomPermissionRequest generates a "aws/request.Request" representing the
// client's request for the UpdateRoleCustomPermission 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 UpdateRoleCustomPermission for more information on using the UpdateRoleCustomPermission
// 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 UpdateRoleCustomPermissionRequest method.
//	req, resp := client.UpdateRoleCustomPermissionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateRoleCustomPermission
func (c *QuickSight) UpdateRoleCustomPermissionRequest(input *UpdateRoleCustomPermissionInput) (req *request.Request, output *UpdateRoleCustomPermissionOutput) {
	op := &request.Operation{
		Name:       opUpdateRoleCustomPermission,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/roles/{Role}/custom-permission",
	}

	if input == nil {
		input = &UpdateRoleCustomPermissionInput{}
	}

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

// UpdateRoleCustomPermission API operation for Amazon QuickSight.
//
// Updates the custom permissions that are associated with a role.
//
// 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 Amazon QuickSight's
// API operation UpdateRoleCustomPermission for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateRoleCustomPermission
func (c *QuickSight) UpdateRoleCustomPermission(input *UpdateRoleCustomPermissionInput) (*UpdateRoleCustomPermissionOutput, error) {
	req, out := c.UpdateRoleCustomPermissionRequest(input)
	return out, req.Send()
}

// UpdateRoleCustomPermissionWithContext is the same as UpdateRoleCustomPermission with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateRoleCustomPermission 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 *QuickSight) UpdateRoleCustomPermissionWithContext(ctx aws.Context, input *UpdateRoleCustomPermissionInput, opts ...request.Option) (*UpdateRoleCustomPermissionOutput, error) {
	req, out := c.UpdateRoleCustomPermissionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateSPICECapacityConfiguration = "UpdateSPICECapacityConfiguration"

// UpdateSPICECapacityConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the UpdateSPICECapacityConfiguration 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 UpdateSPICECapacityConfiguration for more information on using the UpdateSPICECapacityConfiguration
// 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 UpdateSPICECapacityConfigurationRequest method.
//	req, resp := client.UpdateSPICECapacityConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateSPICECapacityConfiguration
func (c *QuickSight) UpdateSPICECapacityConfigurationRequest(input *UpdateSPICECapacityConfigurationInput) (req *request.Request, output *UpdateSPICECapacityConfigurationOutput) {
	op := &request.Operation{
		Name:       opUpdateSPICECapacityConfiguration,
		HTTPMethod: "POST",
		HTTPPath:   "/accounts/{AwsAccountId}/spice-capacity-configuration",
	}

	if input == nil {
		input = &UpdateSPICECapacityConfigurationInput{}
	}

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

// UpdateSPICECapacityConfiguration API operation for Amazon QuickSight.
//
// Updates the SPICE capacity configuration for a Amazon QuickSight 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 Amazon QuickSight's
// API operation UpdateSPICECapacityConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateSPICECapacityConfiguration
func (c *QuickSight) UpdateSPICECapacityConfiguration(input *UpdateSPICECapacityConfigurationInput) (*UpdateSPICECapacityConfigurationOutput, error) {
	req, out := c.UpdateSPICECapacityConfigurationRequest(input)
	return out, req.Send()
}

// UpdateSPICECapacityConfigurationWithContext is the same as UpdateSPICECapacityConfiguration with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateSPICECapacityConfiguration 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 *QuickSight) UpdateSPICECapacityConfigurationWithContext(ctx aws.Context, input *UpdateSPICECapacityConfigurationInput, opts ...request.Option) (*UpdateSPICECapacityConfigurationOutput, error) {
	req, out := c.UpdateSPICECapacityConfigurationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateTemplate = "UpdateTemplate"

// UpdateTemplateRequest generates a "aws/request.Request" representing the
// client's request for the UpdateTemplate 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 UpdateTemplate for more information on using the UpdateTemplate
// 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 UpdateTemplateRequest method.
//	req, resp := client.UpdateTemplateRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateTemplate
func (c *QuickSight) UpdateTemplateRequest(input *UpdateTemplateInput) (req *request.Request, output *UpdateTemplateOutput) {
	op := &request.Operation{
		Name:       opUpdateTemplate,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/templates/{TemplateId}",
	}

	if input == nil {
		input = &UpdateTemplateInput{}
	}

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

// UpdateTemplate API operation for Amazon QuickSight.
//
// Updates a template from an existing Amazon QuickSight analysis or another
// template.
//
// 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 Amazon QuickSight's
// API operation UpdateTemplate for usage and error information.
//
// Returned Error Types:
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateTemplate
func (c *QuickSight) UpdateTemplate(input *UpdateTemplateInput) (*UpdateTemplateOutput, error) {
	req, out := c.UpdateTemplateRequest(input)
	return out, req.Send()
}

// UpdateTemplateWithContext is the same as UpdateTemplate with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateTemplate 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 *QuickSight) UpdateTemplateWithContext(ctx aws.Context, input *UpdateTemplateInput, opts ...request.Option) (*UpdateTemplateOutput, error) {
	req, out := c.UpdateTemplateRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateTemplateAlias = "UpdateTemplateAlias"

// UpdateTemplateAliasRequest generates a "aws/request.Request" representing the
// client's request for the UpdateTemplateAlias 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 UpdateTemplateAlias for more information on using the UpdateTemplateAlias
// 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 UpdateTemplateAliasRequest method.
//	req, resp := client.UpdateTemplateAliasRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateTemplateAlias
func (c *QuickSight) UpdateTemplateAliasRequest(input *UpdateTemplateAliasInput) (req *request.Request, output *UpdateTemplateAliasOutput) {
	op := &request.Operation{
		Name:       opUpdateTemplateAlias,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/templates/{TemplateId}/aliases/{AliasName}",
	}

	if input == nil {
		input = &UpdateTemplateAliasInput{}
	}

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

// UpdateTemplateAlias API operation for Amazon QuickSight.
//
// Updates the template alias of a template.
//
// 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 Amazon QuickSight's
// API operation UpdateTemplateAlias for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateTemplateAlias
func (c *QuickSight) UpdateTemplateAlias(input *UpdateTemplateAliasInput) (*UpdateTemplateAliasOutput, error) {
	req, out := c.UpdateTemplateAliasRequest(input)
	return out, req.Send()
}

// UpdateTemplateAliasWithContext is the same as UpdateTemplateAlias with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateTemplateAlias 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 *QuickSight) UpdateTemplateAliasWithContext(ctx aws.Context, input *UpdateTemplateAliasInput, opts ...request.Option) (*UpdateTemplateAliasOutput, error) {
	req, out := c.UpdateTemplateAliasRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateTemplatePermissions = "UpdateTemplatePermissions"

// UpdateTemplatePermissionsRequest generates a "aws/request.Request" representing the
// client's request for the UpdateTemplatePermissions 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 UpdateTemplatePermissions for more information on using the UpdateTemplatePermissions
// 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 UpdateTemplatePermissionsRequest method.
//	req, resp := client.UpdateTemplatePermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateTemplatePermissions
func (c *QuickSight) UpdateTemplatePermissionsRequest(input *UpdateTemplatePermissionsInput) (req *request.Request, output *UpdateTemplatePermissionsOutput) {
	op := &request.Operation{
		Name:       opUpdateTemplatePermissions,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/templates/{TemplateId}/permissions",
	}

	if input == nil {
		input = &UpdateTemplatePermissionsInput{}
	}

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

// UpdateTemplatePermissions API operation for Amazon QuickSight.
//
// Updates the resource permissions for a template.
//
// 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 Amazon QuickSight's
// API operation UpdateTemplatePermissions for usage and error information.
//
// Returned Error Types:
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateTemplatePermissions
func (c *QuickSight) UpdateTemplatePermissions(input *UpdateTemplatePermissionsInput) (*UpdateTemplatePermissionsOutput, error) {
	req, out := c.UpdateTemplatePermissionsRequest(input)
	return out, req.Send()
}

// UpdateTemplatePermissionsWithContext is the same as UpdateTemplatePermissions with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateTemplatePermissions 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 *QuickSight) UpdateTemplatePermissionsWithContext(ctx aws.Context, input *UpdateTemplatePermissionsInput, opts ...request.Option) (*UpdateTemplatePermissionsOutput, error) {
	req, out := c.UpdateTemplatePermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateTheme = "UpdateTheme"

// UpdateThemeRequest generates a "aws/request.Request" representing the
// client's request for the UpdateTheme 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 UpdateTheme for more information on using the UpdateTheme
// 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 UpdateThemeRequest method.
//	req, resp := client.UpdateThemeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateTheme
func (c *QuickSight) UpdateThemeRequest(input *UpdateThemeInput) (req *request.Request, output *UpdateThemeOutput) {
	op := &request.Operation{
		Name:       opUpdateTheme,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/themes/{ThemeId}",
	}

	if input == nil {
		input = &UpdateThemeInput{}
	}

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

// UpdateTheme API operation for Amazon QuickSight.
//
// Updates a theme.
//
// 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 Amazon QuickSight's
// API operation UpdateTheme for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateTheme
func (c *QuickSight) UpdateTheme(input *UpdateThemeInput) (*UpdateThemeOutput, error) {
	req, out := c.UpdateThemeRequest(input)
	return out, req.Send()
}

// UpdateThemeWithContext is the same as UpdateTheme with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateTheme 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 *QuickSight) UpdateThemeWithContext(ctx aws.Context, input *UpdateThemeInput, opts ...request.Option) (*UpdateThemeOutput, error) {
	req, out := c.UpdateThemeRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateThemeAlias = "UpdateThemeAlias"

// UpdateThemeAliasRequest generates a "aws/request.Request" representing the
// client's request for the UpdateThemeAlias 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 UpdateThemeAlias for more information on using the UpdateThemeAlias
// 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 UpdateThemeAliasRequest method.
//	req, resp := client.UpdateThemeAliasRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateThemeAlias
func (c *QuickSight) UpdateThemeAliasRequest(input *UpdateThemeAliasInput) (req *request.Request, output *UpdateThemeAliasOutput) {
	op := &request.Operation{
		Name:       opUpdateThemeAlias,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/themes/{ThemeId}/aliases/{AliasName}",
	}

	if input == nil {
		input = &UpdateThemeAliasInput{}
	}

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

// UpdateThemeAlias API operation for Amazon QuickSight.
//
// Updates an alias of a theme.
//
// 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 Amazon QuickSight's
// API operation UpdateThemeAlias for usage and error information.
//
// Returned Error Types:
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateThemeAlias
func (c *QuickSight) UpdateThemeAlias(input *UpdateThemeAliasInput) (*UpdateThemeAliasOutput, error) {
	req, out := c.UpdateThemeAliasRequest(input)
	return out, req.Send()
}

// UpdateThemeAliasWithContext is the same as UpdateThemeAlias with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateThemeAlias 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 *QuickSight) UpdateThemeAliasWithContext(ctx aws.Context, input *UpdateThemeAliasInput, opts ...request.Option) (*UpdateThemeAliasOutput, error) {
	req, out := c.UpdateThemeAliasRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateThemePermissions = "UpdateThemePermissions"

// UpdateThemePermissionsRequest generates a "aws/request.Request" representing the
// client's request for the UpdateThemePermissions 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 UpdateThemePermissions for more information on using the UpdateThemePermissions
// 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 UpdateThemePermissionsRequest method.
//	req, resp := client.UpdateThemePermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateThemePermissions
func (c *QuickSight) UpdateThemePermissionsRequest(input *UpdateThemePermissionsInput) (req *request.Request, output *UpdateThemePermissionsOutput) {
	op := &request.Operation{
		Name:       opUpdateThemePermissions,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/themes/{ThemeId}/permissions",
	}

	if input == nil {
		input = &UpdateThemePermissionsInput{}
	}

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

// UpdateThemePermissions API operation for Amazon QuickSight.
//
// Updates the resource permissions for a theme. Permissions apply to the action
// to grant or revoke permissions on, for example "quicksight:DescribeTheme".
//
// Theme permissions apply in groupings. Valid groupings include the following
// for the three levels of permissions, which are user, owner, or no permissions:
//
//   - User "quicksight:DescribeTheme" "quicksight:DescribeThemeAlias" "quicksight:ListThemeAliases"
//     "quicksight:ListThemeVersions"
//
//   - Owner "quicksight:DescribeTheme" "quicksight:DescribeThemeAlias" "quicksight:ListThemeAliases"
//     "quicksight:ListThemeVersions" "quicksight:DeleteTheme" "quicksight:UpdateTheme"
//     "quicksight:CreateThemeAlias" "quicksight:DeleteThemeAlias" "quicksight:UpdateThemeAlias"
//     "quicksight:UpdateThemePermissions" "quicksight:DescribeThemePermissions"
//
//   - To specify no permissions, omit the permissions list.
//
// 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 Amazon QuickSight's
// API operation UpdateThemePermissions for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateThemePermissions
func (c *QuickSight) UpdateThemePermissions(input *UpdateThemePermissionsInput) (*UpdateThemePermissionsOutput, error) {
	req, out := c.UpdateThemePermissionsRequest(input)
	return out, req.Send()
}

// UpdateThemePermissionsWithContext is the same as UpdateThemePermissions with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateThemePermissions 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 *QuickSight) UpdateThemePermissionsWithContext(ctx aws.Context, input *UpdateThemePermissionsInput, opts ...request.Option) (*UpdateThemePermissionsOutput, error) {
	req, out := c.UpdateThemePermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateTopic = "UpdateTopic"

// UpdateTopicRequest generates a "aws/request.Request" representing the
// client's request for the UpdateTopic 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 UpdateTopic for more information on using the UpdateTopic
// 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 UpdateTopicRequest method.
//	req, resp := client.UpdateTopicRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateTopic
func (c *QuickSight) UpdateTopicRequest(input *UpdateTopicInput) (req *request.Request, output *UpdateTopicOutput) {
	op := &request.Operation{
		Name:       opUpdateTopic,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/topics/{TopicId}",
	}

	if input == nil {
		input = &UpdateTopicInput{}
	}

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

// UpdateTopic API operation for Amazon QuickSight.
//
// Updates a topic.
//
// 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 Amazon QuickSight's
// API operation UpdateTopic for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateTopic
func (c *QuickSight) UpdateTopic(input *UpdateTopicInput) (*UpdateTopicOutput, error) {
	req, out := c.UpdateTopicRequest(input)
	return out, req.Send()
}

// UpdateTopicWithContext is the same as UpdateTopic with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateTopic 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 *QuickSight) UpdateTopicWithContext(ctx aws.Context, input *UpdateTopicInput, opts ...request.Option) (*UpdateTopicOutput, error) {
	req, out := c.UpdateTopicRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateTopicPermissions = "UpdateTopicPermissions"

// UpdateTopicPermissionsRequest generates a "aws/request.Request" representing the
// client's request for the UpdateTopicPermissions 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 UpdateTopicPermissions for more information on using the UpdateTopicPermissions
// 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 UpdateTopicPermissionsRequest method.
//	req, resp := client.UpdateTopicPermissionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateTopicPermissions
func (c *QuickSight) UpdateTopicPermissionsRequest(input *UpdateTopicPermissionsInput) (req *request.Request, output *UpdateTopicPermissionsOutput) {
	op := &request.Operation{
		Name:       opUpdateTopicPermissions,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/topics/{TopicId}/permissions",
	}

	if input == nil {
		input = &UpdateTopicPermissionsInput{}
	}

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

// UpdateTopicPermissions API operation for Amazon QuickSight.
//
// Updates the permissions of a topic.
//
// 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 Amazon QuickSight's
// API operation UpdateTopicPermissions for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateTopicPermissions
func (c *QuickSight) UpdateTopicPermissions(input *UpdateTopicPermissionsInput) (*UpdateTopicPermissionsOutput, error) {
	req, out := c.UpdateTopicPermissionsRequest(input)
	return out, req.Send()
}

// UpdateTopicPermissionsWithContext is the same as UpdateTopicPermissions with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateTopicPermissions 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 *QuickSight) UpdateTopicPermissionsWithContext(ctx aws.Context, input *UpdateTopicPermissionsInput, opts ...request.Option) (*UpdateTopicPermissionsOutput, error) {
	req, out := c.UpdateTopicPermissionsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateTopicRefreshSchedule = "UpdateTopicRefreshSchedule"

// UpdateTopicRefreshScheduleRequest generates a "aws/request.Request" representing the
// client's request for the UpdateTopicRefreshSchedule 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 UpdateTopicRefreshSchedule for more information on using the UpdateTopicRefreshSchedule
// 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 UpdateTopicRefreshScheduleRequest method.
//	req, resp := client.UpdateTopicRefreshScheduleRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateTopicRefreshSchedule
func (c *QuickSight) UpdateTopicRefreshScheduleRequest(input *UpdateTopicRefreshScheduleInput) (req *request.Request, output *UpdateTopicRefreshScheduleOutput) {
	op := &request.Operation{
		Name:       opUpdateTopicRefreshSchedule,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/topics/{TopicId}/schedules/{DatasetId}",
	}

	if input == nil {
		input = &UpdateTopicRefreshScheduleInput{}
	}

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

// UpdateTopicRefreshSchedule API operation for Amazon QuickSight.
//
// Updates a topic refresh schedule.
//
// 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 Amazon QuickSight's
// API operation UpdateTopicRefreshSchedule for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ResourceExistsException
//     The resource specified already exists.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateTopicRefreshSchedule
func (c *QuickSight) UpdateTopicRefreshSchedule(input *UpdateTopicRefreshScheduleInput) (*UpdateTopicRefreshScheduleOutput, error) {
	req, out := c.UpdateTopicRefreshScheduleRequest(input)
	return out, req.Send()
}

// UpdateTopicRefreshScheduleWithContext is the same as UpdateTopicRefreshSchedule with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateTopicRefreshSchedule 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 *QuickSight) UpdateTopicRefreshScheduleWithContext(ctx aws.Context, input *UpdateTopicRefreshScheduleInput, opts ...request.Option) (*UpdateTopicRefreshScheduleOutput, error) {
	req, out := c.UpdateTopicRefreshScheduleRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateUser = "UpdateUser"

// UpdateUserRequest generates a "aws/request.Request" representing the
// client's request for the UpdateUser 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 UpdateUser for more information on using the UpdateUser
// 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 UpdateUserRequest method.
//	req, resp := client.UpdateUserRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateUser
func (c *QuickSight) UpdateUserRequest(input *UpdateUserInput) (req *request.Request, output *UpdateUserOutput) {
	op := &request.Operation{
		Name:       opUpdateUser,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/namespaces/{Namespace}/users/{UserName}",
	}

	if input == nil {
		input = &UpdateUserInput{}
	}

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

// UpdateUser API operation for Amazon QuickSight.
//
// Updates an Amazon QuickSight user.
//
// 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 Amazon QuickSight's
// API operation UpdateUser for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - PreconditionNotMetException
//     One or more preconditions aren't met.
//
//   - InternalFailureException
//     An internal failure occurred.
//
//   - ResourceUnavailableException
//     This resource is currently unavailable.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateUser
func (c *QuickSight) UpdateUser(input *UpdateUserInput) (*UpdateUserOutput, error) {
	req, out := c.UpdateUserRequest(input)
	return out, req.Send()
}

// UpdateUserWithContext is the same as UpdateUser with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateUser 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 *QuickSight) UpdateUserWithContext(ctx aws.Context, input *UpdateUserInput, opts ...request.Option) (*UpdateUserOutput, error) {
	req, out := c.UpdateUserRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateVPCConnection = "UpdateVPCConnection"

// UpdateVPCConnectionRequest generates a "aws/request.Request" representing the
// client's request for the UpdateVPCConnection 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 UpdateVPCConnection for more information on using the UpdateVPCConnection
// 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 UpdateVPCConnectionRequest method.
//	req, resp := client.UpdateVPCConnectionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateVPCConnection
func (c *QuickSight) UpdateVPCConnectionRequest(input *UpdateVPCConnectionInput) (req *request.Request, output *UpdateVPCConnectionOutput) {
	op := &request.Operation{
		Name:       opUpdateVPCConnection,
		HTTPMethod: "PUT",
		HTTPPath:   "/accounts/{AwsAccountId}/vpc-connections/{VPCConnectionId}",
	}

	if input == nil {
		input = &UpdateVPCConnectionInput{}
	}

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

// UpdateVPCConnection API operation for Amazon QuickSight.
//
// Updates a VPC connection.
//
// 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 Amazon QuickSight's
// API operation UpdateVPCConnection for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     You don't have access to this item. The provided credentials couldn't be
//     validated. You might not be authorized to carry out the request. Make sure
//     that your account is authorized to use the Amazon QuickSight service, that
//     your policies have the correct permissions, and that you are using the correct
//     credentials.
//
//   - ConflictException
//     Updating or deleting a resource can cause an inconsistent state.
//
//   - InvalidParameterValueException
//     One or more parameters has a value that isn't valid.
//
//   - LimitExceededException
//     A limit is exceeded.
//
//   - ResourceNotFoundException
//     One or more resources can't be found.
//
//   - ThrottlingException
//     Access is throttled.
//
//   - UnsupportedUserEditionException
//     This error indicates that you are calling an operation on an Amazon QuickSight
//     subscription where the edition doesn't include support for that operation.
//     Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
//     Not every operation and capability is available in every edition.
//
//   - InternalFailureException
//     An internal failure occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/quicksight-2018-04-01/UpdateVPCConnection
func (c *QuickSight) UpdateVPCConnection(input *UpdateVPCConnectionInput) (*UpdateVPCConnectionOutput, error) {
	req, out := c.UpdateVPCConnectionRequest(input)
	return out, req.Send()
}

// UpdateVPCConnectionWithContext is the same as UpdateVPCConnection with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateVPCConnection 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 *QuickSight) UpdateVPCConnectionWithContext(ctx aws.Context, input *UpdateVPCConnectionInput, opts ...request.Option) (*UpdateVPCConnectionOutput, error) {
	req, out := c.UpdateVPCConnectionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// You don't have access to this item. The provided credentials couldn't be
// validated. You might not be authorized to carry out the request. Make sure
// that your account is authorized to use the Amazon QuickSight service, that
// your policies have the correct permissions, and that you are using the correct
// credentials.
type AccessDeniedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AccessDeniedException) 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 AccessDeniedException) GoString() string {
	return s.String()
}

func newErrorAccessDeniedException(v protocol.ResponseMetadata) error {
	return &AccessDeniedException{
		RespMetadata: v,
	}
}

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

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

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

func (s *AccessDeniedException) 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 *AccessDeniedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// The Amazon QuickSight customizations associated with your Amazon Web Services
// account or a QuickSight namespace in a specific Amazon Web Services Region.
type AccountCustomization struct {
	_ struct{} `type:"structure"`

	// The default email customization template.
	DefaultEmailCustomizationTemplate *string `type:"string"`

	// The default theme for this Amazon QuickSight subscription.
	DefaultTheme *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AccountCustomization) 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 AccountCustomization) GoString() string {
	return s.String()
}

// SetDefaultEmailCustomizationTemplate sets the DefaultEmailCustomizationTemplate field's value.
func (s *AccountCustomization) SetDefaultEmailCustomizationTemplate(v string) *AccountCustomization {
	s.DefaultEmailCustomizationTemplate = &v
	return s
}

// SetDefaultTheme sets the DefaultTheme field's value.
func (s *AccountCustomization) SetDefaultTheme(v string) *AccountCustomization {
	s.DefaultTheme = &v
	return s
}

// A structure that contains the following account information elements:
//
//   - Your Amazon QuickSight account name.
//
//   - The edition of Amazon QuickSight that your account is using.
//
//   - The notification email address that is associated with the Amazon QuickSight
//     account.
//
//   - The authentication type of the Amazon QuickSight account.
//
//   - The status of the Amazon QuickSight account's subscription.
type AccountInfo struct {
	_ struct{} `type:"structure"`

	// The account name that you provided for the Amazon QuickSight subscription
	// in your Amazon Web Services account. You create this name when you sign up
	// for Amazon QuickSight. It's unique over all of Amazon Web Services, and it
	// appears only when users sign in.
	AccountName *string `type:"string"`

	// The status of your account subscription.
	AccountSubscriptionStatus *string `type:"string"`

	// The way that your Amazon QuickSight account is authenticated.
	AuthenticationType *string `type:"string"`

	// The edition of your Amazon QuickSight account.
	Edition *string `type:"string" enum:"Edition"`

	// The Amazon Resource Name (ARN) for the IAM Identity Center instance.
	IAMIdentityCenterInstanceArn *string `type:"string"`

	// The email address that will be used for Amazon QuickSight to send notifications
	// regarding your Amazon Web Services account or Amazon QuickSight subscription.
	NotificationEmail *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AccountInfo) 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 AccountInfo) GoString() string {
	return s.String()
}

// SetAccountName sets the AccountName field's value.
func (s *AccountInfo) SetAccountName(v string) *AccountInfo {
	s.AccountName = &v
	return s
}

// SetAccountSubscriptionStatus sets the AccountSubscriptionStatus field's value.
func (s *AccountInfo) SetAccountSubscriptionStatus(v string) *AccountInfo {
	s.AccountSubscriptionStatus = &v
	return s
}

// SetAuthenticationType sets the AuthenticationType field's value.
func (s *AccountInfo) SetAuthenticationType(v string) *AccountInfo {
	s.AuthenticationType = &v
	return s
}

// SetEdition sets the Edition field's value.
func (s *AccountInfo) SetEdition(v string) *AccountInfo {
	s.Edition = &v
	return s
}

// SetIAMIdentityCenterInstanceArn sets the IAMIdentityCenterInstanceArn field's value.
func (s *AccountInfo) SetIAMIdentityCenterInstanceArn(v string) *AccountInfo {
	s.IAMIdentityCenterInstanceArn = &v
	return s
}

// SetNotificationEmail sets the NotificationEmail field's value.
func (s *AccountInfo) SetNotificationEmail(v string) *AccountInfo {
	s.NotificationEmail = &v
	return s
}

// The Amazon QuickSight settings associated with your Amazon Web Services account.
type AccountSettings struct {
	_ struct{} `type:"structure"`

	// The "account name" you provided for the Amazon QuickSight subscription in
	// your Amazon Web Services account. You create this name when you sign up for
	// Amazon QuickSight. It is unique in all of Amazon Web Services and it appears
	// only when users sign in.
	AccountName *string `type:"string"`

	// The default Amazon QuickSight namespace for your Amazon Web Services account.
	DefaultNamespace *string `type:"string"`

	// The edition of Amazon QuickSight that you're currently subscribed to: Enterprise
	// edition or Standard edition.
	Edition *string `type:"string" enum:"Edition"`

	// The main notification email for your Amazon QuickSight subscription.
	NotificationEmail *string `type:"string"`

	// A Boolean value that indicates whether public sharing is turned on for an
	// Amazon QuickSight account. For more information about turning on public sharing,
	// see UpdatePublicSharingSettings (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdatePublicSharingSettings.html).
	PublicSharingEnabled *bool `type:"boolean"`

	// A boolean value that determines whether or not an Amazon QuickSight account
	// can be deleted. A True value doesn't allow the account to be deleted and
	// results in an error message if a user tries to make a DeleteAccountSubsctiption
	// request. A False value will allow the ccount to be deleted.
	TerminationProtectionEnabled *bool `type:"boolean"`
}

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

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

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

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

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

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

// SetPublicSharingEnabled sets the PublicSharingEnabled field's value.
func (s *AccountSettings) SetPublicSharingEnabled(v bool) *AccountSettings {
	s.PublicSharingEnabled = &v
	return s
}

// SetTerminationProtectionEnabled sets the TerminationProtectionEnabled field's value.
func (s *AccountSettings) SetTerminationProtectionEnabled(v bool) *AccountSettings {
	s.TerminationProtectionEnabled = &v
	return s
}

// The active Identity and Access Management (IAM) policy assignment.
type ActiveIAMPolicyAssignment struct {
	_ struct{} `type:"structure"`

	// A name for the IAM policy assignment.
	AssignmentName *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the resource.
	PolicyArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ActiveIAMPolicyAssignment) 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 ActiveIAMPolicyAssignment) GoString() string {
	return s.String()
}

// SetAssignmentName sets the AssignmentName field's value.
func (s *ActiveIAMPolicyAssignment) SetAssignmentName(v string) *ActiveIAMPolicyAssignment {
	s.AssignmentName = &v
	return s
}

// SetPolicyArn sets the PolicyArn field's value.
func (s *ActiveIAMPolicyAssignment) SetPolicyArn(v string) *ActiveIAMPolicyAssignment {
	s.PolicyArn = &v
	return s
}

// An ad hoc (one-time) filtering option.
type AdHocFilteringOption struct {
	_ struct{} `type:"structure"`

	// Availability status.
	AvailabilityStatus *string `type:"string" enum:"DashboardBehavior"`
}

// 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 AdHocFilteringOption) 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 AdHocFilteringOption) GoString() string {
	return s.String()
}

// SetAvailabilityStatus sets the AvailabilityStatus field's value.
func (s *AdHocFilteringOption) SetAvailabilityStatus(v string) *AdHocFilteringOption {
	s.AvailabilityStatus = &v
	return s
}

// The definition of an Agg function.
type AggFunction struct {
	_ struct{} `type:"structure"`

	// The aggregation of an Agg function.
	Aggregation *string `type:"string" enum:"AggType"`

	// The aggregation parameters for an Agg function.
	AggregationFunctionParameters map[string]*string `type:"map"`

	// The period of an Agg function.
	Period *string `type:"string" enum:"TopicTimeGranularity"`

	// The period field for an Agg function.
	PeriodField *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AggFunction) 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 AggFunction) GoString() string {
	return s.String()
}

// SetAggregation sets the Aggregation field's value.
func (s *AggFunction) SetAggregation(v string) *AggFunction {
	s.Aggregation = &v
	return s
}

// SetAggregationFunctionParameters sets the AggregationFunctionParameters field's value.
func (s *AggFunction) SetAggregationFunctionParameters(v map[string]*string) *AggFunction {
	s.AggregationFunctionParameters = v
	return s
}

// SetPeriod sets the Period field's value.
func (s *AggFunction) SetPeriod(v string) *AggFunction {
	s.Period = &v
	return s
}

// SetPeriodField sets the PeriodField field's value.
func (s *AggFunction) SetPeriodField(v string) *AggFunction {
	s.PeriodField = &v
	return s
}

// An aggregation function aggregates values from a dimension or measure.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type AggregationFunction struct {
	_ struct{} `type:"structure"`

	// Aggregation for attributes.
	AttributeAggregationFunction *AttributeAggregationFunction `type:"structure"`

	// Aggregation for categorical values.
	//
	//    * COUNT: Aggregate by the total number of values, including duplicates.
	//
	//    * DISTINCT_COUNT: Aggregate by the total number of distinct values.
	CategoricalAggregationFunction *string `type:"string" enum:"CategoricalAggregationFunction"`

	// Aggregation for date values.
	//
	//    * COUNT: Aggregate by the total number of values, including duplicates.
	//
	//    * DISTINCT_COUNT: Aggregate by the total number of distinct values.
	//
	//    * MIN: Select the smallest date value.
	//
	//    * MAX: Select the largest date value.
	DateAggregationFunction *string `type:"string" enum:"DateAggregationFunction"`

	// Aggregation for numerical values.
	NumericalAggregationFunction *NumericalAggregationFunction `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 AggregationFunction) 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 AggregationFunction) GoString() string {
	return s.String()
}

// SetAttributeAggregationFunction sets the AttributeAggregationFunction field's value.
func (s *AggregationFunction) SetAttributeAggregationFunction(v *AttributeAggregationFunction) *AggregationFunction {
	s.AttributeAggregationFunction = v
	return s
}

// SetCategoricalAggregationFunction sets the CategoricalAggregationFunction field's value.
func (s *AggregationFunction) SetCategoricalAggregationFunction(v string) *AggregationFunction {
	s.CategoricalAggregationFunction = &v
	return s
}

// SetDateAggregationFunction sets the DateAggregationFunction field's value.
func (s *AggregationFunction) SetDateAggregationFunction(v string) *AggregationFunction {
	s.DateAggregationFunction = &v
	return s
}

// SetNumericalAggregationFunction sets the NumericalAggregationFunction field's value.
func (s *AggregationFunction) SetNumericalAggregationFunction(v *NumericalAggregationFunction) *AggregationFunction {
	s.NumericalAggregationFunction = v
	return s
}

// The definition of an AggregationPartitionBy.
type AggregationPartitionBy struct {
	_ struct{} `type:"structure"`

	// The field Name for an AggregationPartitionBy.
	FieldName *string `type:"string"`

	// The TimeGranularity for an AggregationPartitionBy.
	TimeGranularity *string `type:"string" enum:"TimeGranularity"`
}

// 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 AggregationPartitionBy) 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 AggregationPartitionBy) GoString() string {
	return s.String()
}

// SetFieldName sets the FieldName field's value.
func (s *AggregationPartitionBy) SetFieldName(v string) *AggregationPartitionBy {
	s.FieldName = &v
	return s
}

// SetTimeGranularity sets the TimeGranularity field's value.
func (s *AggregationPartitionBy) SetTimeGranularity(v string) *AggregationPartitionBy {
	s.TimeGranularity = &v
	return s
}

// The configuration options to sort aggregated values.
type AggregationSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The function that aggregates the values in Column.
	AggregationFunction *AggregationFunction `type:"structure"`

	// The column that determines the sort order of aggregated values.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The sort direction of values.
	//
	//    * ASC: Sort in ascending order.
	//
	//    * DESC: Sort in descending order.
	//
	// SortDirection is a required field
	SortDirection *string `type:"string" required:"true" enum:"SortDirection"`
}

// 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 AggregationSortConfiguration) 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 AggregationSortConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AggregationSortConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AggregationSortConfiguration"}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.SortDirection == nil {
		invalidParams.Add(request.NewErrParamRequired("SortDirection"))
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}

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

// SetAggregationFunction sets the AggregationFunction field's value.
func (s *AggregationSortConfiguration) SetAggregationFunction(v *AggregationFunction) *AggregationSortConfiguration {
	s.AggregationFunction = v
	return s
}

// SetColumn sets the Column field's value.
func (s *AggregationSortConfiguration) SetColumn(v *ColumnIdentifier) *AggregationSortConfiguration {
	s.Column = v
	return s
}

// SetSortDirection sets the SortDirection field's value.
func (s *AggregationSortConfiguration) SetSortDirection(v string) *AggregationSortConfiguration {
	s.SortDirection = &v
	return s
}

// An empty object that represents that the AllSheets option is the chosen value
// for the FilterScopeConfiguration parameter. This structure applies the filter
// to all visuals on all sheets of an Analysis, Dashboard, or Template.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type AllSheetsFilterScopeConfiguration 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 AllSheetsFilterScopeConfiguration) 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 AllSheetsFilterScopeConfiguration) GoString() string {
	return s.String()
}

// The parameters for OpenSearch.
type AmazonElasticsearchParameters struct {
	_ struct{} `type:"structure"`

	// The OpenSearch domain.
	//
	// Domain is a required field
	Domain *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AmazonElasticsearchParameters) 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 AmazonElasticsearchParameters) GoString() string {
	return s.String()
}

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

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

// SetDomain sets the Domain field's value.
func (s *AmazonElasticsearchParameters) SetDomain(v string) *AmazonElasticsearchParameters {
	s.Domain = &v
	return s
}

// The parameters for OpenSearch.
type AmazonOpenSearchParameters struct {
	_ struct{} `type:"structure"`

	// The OpenSearch domain.
	//
	// Domain is a required field
	Domain *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AmazonOpenSearchParameters) 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 AmazonOpenSearchParameters) GoString() string {
	return s.String()
}

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

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

// SetDomain sets the Domain field's value.
func (s *AmazonOpenSearchParameters) SetDomain(v string) *AmazonOpenSearchParameters {
	s.Domain = &v
	return s
}

// Metadata structure for an analysis in Amazon QuickSight
type Analysis struct {
	_ struct{} `type:"structure"`

	// The ID of the analysis.
	AnalysisId *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the analysis.
	Arn *string `type:"string"`

	// The time that the analysis was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The ARNs of the datasets of the analysis.
	DataSetArns []*string `type:"list"`

	// Errors associated with the analysis.
	Errors []*AnalysisError `min:"1" type:"list"`

	// The time that the analysis was last updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// The descriptive name of the analysis.
	Name *string `min:"1" type:"string"`

	// A list of the associated sheets with the unique identifier and name of each
	// sheet.
	Sheets []*Sheet `type:"list"`

	// Status associated with the analysis.
	Status *string `type:"string" enum:"ResourceStatus"`

	// The ARN of the theme of the analysis.
	ThemeArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Analysis) 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 Analysis) GoString() string {
	return s.String()
}

// SetAnalysisId sets the AnalysisId field's value.
func (s *Analysis) SetAnalysisId(v string) *Analysis {
	s.AnalysisId = &v
	return s
}

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

// SetCreatedTime sets the CreatedTime field's value.
func (s *Analysis) SetCreatedTime(v time.Time) *Analysis {
	s.CreatedTime = &v
	return s
}

// SetDataSetArns sets the DataSetArns field's value.
func (s *Analysis) SetDataSetArns(v []*string) *Analysis {
	s.DataSetArns = v
	return s
}

// SetErrors sets the Errors field's value.
func (s *Analysis) SetErrors(v []*AnalysisError) *Analysis {
	s.Errors = v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *Analysis) SetLastUpdatedTime(v time.Time) *Analysis {
	s.LastUpdatedTime = &v
	return s
}

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

// SetSheets sets the Sheets field's value.
func (s *Analysis) SetSheets(v []*Sheet) *Analysis {
	s.Sheets = v
	return s
}

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

// SetThemeArn sets the ThemeArn field's value.
func (s *Analysis) SetThemeArn(v string) *Analysis {
	s.ThemeArn = &v
	return s
}

// The configuration for default analysis settings.
type AnalysisDefaults struct {
	_ struct{} `type:"structure"`

	// The configuration for default new sheet settings.
	//
	// DefaultNewSheetConfiguration is a required field
	DefaultNewSheetConfiguration *DefaultNewSheetConfiguration `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 AnalysisDefaults) 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 AnalysisDefaults) GoString() string {
	return s.String()
}

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

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

// SetDefaultNewSheetConfiguration sets the DefaultNewSheetConfiguration field's value.
func (s *AnalysisDefaults) SetDefaultNewSheetConfiguration(v *DefaultNewSheetConfiguration) *AnalysisDefaults {
	s.DefaultNewSheetConfiguration = v
	return s
}

// The definition of an analysis.
type AnalysisDefinition struct {
	_ struct{} `type:"structure"`

	// The configuration for default analysis settings.
	AnalysisDefaults *AnalysisDefaults `type:"structure"`

	// An array of calculated field definitions for the analysis.
	CalculatedFields []*CalculatedField `type:"list"`

	// An array of analysis-level column configurations. Column configurations can
	// be used to set default formatting for a column to be used throughout an analysis.
	ColumnConfigurations []*ColumnConfiguration `type:"list"`

	// An array of dataset identifier declarations. This mapping allows the usage
	// of dataset identifiers instead of dataset ARNs throughout analysis sub-structures.
	//
	// DataSetIdentifierDeclarations is a required field
	DataSetIdentifierDeclarations []*DataSetIdentifierDeclaration `min:"1" type:"list" required:"true"`

	// Filter definitions for an analysis.
	//
	// For more information, see Filtering Data in Amazon QuickSight (https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html)
	// in the Amazon QuickSight User Guide.
	FilterGroups []*FilterGroup `type:"list"`

	// An array of option definitions for an analysis.
	Options *AssetOptions `type:"structure"`

	// An array of parameter declarations for an analysis.
	//
	// Parameters are named variables that can transfer a value for use by an action
	// or an object.
	//
	// For more information, see Parameters in Amazon QuickSight (https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html)
	// in the Amazon QuickSight User Guide.
	ParameterDeclarations []*ParameterDeclaration `type:"list"`

	// An array of sheet definitions for an analysis. Each SheetDefinition provides
	// detailed information about a sheet within this analysis.
	Sheets []*SheetDefinition `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 AnalysisDefinition) 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 AnalysisDefinition) GoString() string {
	return s.String()
}

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

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

// SetAnalysisDefaults sets the AnalysisDefaults field's value.
func (s *AnalysisDefinition) SetAnalysisDefaults(v *AnalysisDefaults) *AnalysisDefinition {
	s.AnalysisDefaults = v
	return s
}

// SetCalculatedFields sets the CalculatedFields field's value.
func (s *AnalysisDefinition) SetCalculatedFields(v []*CalculatedField) *AnalysisDefinition {
	s.CalculatedFields = v
	return s
}

// SetColumnConfigurations sets the ColumnConfigurations field's value.
func (s *AnalysisDefinition) SetColumnConfigurations(v []*ColumnConfiguration) *AnalysisDefinition {
	s.ColumnConfigurations = v
	return s
}

// SetDataSetIdentifierDeclarations sets the DataSetIdentifierDeclarations field's value.
func (s *AnalysisDefinition) SetDataSetIdentifierDeclarations(v []*DataSetIdentifierDeclaration) *AnalysisDefinition {
	s.DataSetIdentifierDeclarations = v
	return s
}

// SetFilterGroups sets the FilterGroups field's value.
func (s *AnalysisDefinition) SetFilterGroups(v []*FilterGroup) *AnalysisDefinition {
	s.FilterGroups = v
	return s
}

// SetOptions sets the Options field's value.
func (s *AnalysisDefinition) SetOptions(v *AssetOptions) *AnalysisDefinition {
	s.Options = v
	return s
}

// SetParameterDeclarations sets the ParameterDeclarations field's value.
func (s *AnalysisDefinition) SetParameterDeclarations(v []*ParameterDeclaration) *AnalysisDefinition {
	s.ParameterDeclarations = v
	return s
}

// SetSheets sets the Sheets field's value.
func (s *AnalysisDefinition) SetSheets(v []*SheetDefinition) *AnalysisDefinition {
	s.Sheets = v
	return s
}

// Analysis error.
type AnalysisError struct {
	_ struct{} `type:"structure"`

	// The message associated with the analysis error.
	Message *string `type:"string"`

	// The type of the analysis error.
	Type *string `type:"string" enum:"AnalysisErrorType"`

	// Lists the violated entities that caused the analysis error
	ViolatedEntities []*Entity `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 AnalysisError) 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 AnalysisError) GoString() string {
	return s.String()
}

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

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

// SetViolatedEntities sets the ViolatedEntities field's value.
func (s *AnalysisError) SetViolatedEntities(v []*Entity) *AnalysisError {
	s.ViolatedEntities = v
	return s
}

// A filter that you apply when searching for one or more analyses.
type AnalysisSearchFilter struct {
	_ struct{} `type:"structure"`

	// The name of the value that you want to use as a filter, for example "Name":
	// "QUICKSIGHT_OWNER".
	//
	// Valid values are defined as follows:
	//
	//    * QUICKSIGHT_VIEWER_OR_OWNER: Provide an ARN of a user or group, and any
	//    analyses with that ARN listed as one of the analysis' owners or viewers
	//    are returned. Implicit permissions from folders or groups are considered.
	//
	//    * QUICKSIGHT_OWNER: Provide an ARN of a user or group, and any analyses
	//    with that ARN listed as one of the owners of the analyses are returned.
	//    Implicit permissions from folders or groups are considered.
	//
	//    * DIRECT_QUICKSIGHT_SOLE_OWNER: Provide an ARN of a user or group, and
	//    any analyses with that ARN listed as the only owner of the analysis are
	//    returned. Implicit permissions from folders or groups are not considered.
	//
	//    * DIRECT_QUICKSIGHT_OWNER: Provide an ARN of a user or group, and any
	//    analyses with that ARN listed as one of the owners of the analyses are
	//    returned. Implicit permissions from folders or groups are not considered.
	//
	//    * DIRECT_QUICKSIGHT_VIEWER_OR_OWNER: Provide an ARN of a user or group,
	//    and any analyses with that ARN listed as one of the owners or viewers
	//    of the analyses are returned. Implicit permissions from folders or groups
	//    are not considered.
	//
	//    * ANALYSIS_NAME: Any analyses whose names have a substring match to this
	//    value will be returned.
	Name *string `type:"string" enum:"AnalysisFilterAttribute"`

	// The comparison operator that you want to use as a filter, for example "Operator":
	// "StringEquals". Valid values are "StringEquals" and "StringLike".
	//
	// If you set the operator value to "StringEquals", you need to provide an ownership
	// related filter in the "NAME" field and the arn of the user or group whose
	// folders you want to search in the "Value" field. For example, "Name":"DIRECT_QUICKSIGHT_OWNER",
	// "Operator": "StringEquals", "Value": "arn:aws:quicksight:us-east-1:1:user/default/UserName1".
	//
	// If you set the value to "StringLike", you need to provide the name of the
	// folders you are searching for. For example, "Name":"ANALYSIS_NAME", "Operator":
	// "StringLike", "Value": "Test". The "StringLike" operator only supports the
	// NAME value ANALYSIS_NAME.
	Operator *string `type:"string" enum:"FilterOperator"`

	// The value of the named item, in this case QUICKSIGHT_USER, that you want
	// to use as a filter, for example "Value". An example is "arn:aws:quicksight:us-east-1:1:user/default/UserName1".
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AnalysisSearchFilter) 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 AnalysisSearchFilter) GoString() string {
	return s.String()
}

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

// SetOperator sets the Operator field's value.
func (s *AnalysisSearchFilter) SetOperator(v string) *AnalysisSearchFilter {
	s.Operator = &v
	return s
}

// SetValue sets the Value field's value.
func (s *AnalysisSearchFilter) SetValue(v string) *AnalysisSearchFilter {
	s.Value = &v
	return s
}

// The source entity of an analysis.
type AnalysisSourceEntity struct {
	_ struct{} `type:"structure"`

	// The source template for the source entity of the analysis.
	SourceTemplate *AnalysisSourceTemplate `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 AnalysisSourceEntity) 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 AnalysisSourceEntity) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AnalysisSourceEntity) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AnalysisSourceEntity"}
	if s.SourceTemplate != nil {
		if err := s.SourceTemplate.Validate(); err != nil {
			invalidParams.AddNested("SourceTemplate", err.(request.ErrInvalidParams))
		}
	}

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

// SetSourceTemplate sets the SourceTemplate field's value.
func (s *AnalysisSourceEntity) SetSourceTemplate(v *AnalysisSourceTemplate) *AnalysisSourceEntity {
	s.SourceTemplate = v
	return s
}

// The source template of an analysis.
type AnalysisSourceTemplate struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the source template of an analysis.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// The dataset references of the source template of an analysis.
	//
	// DataSetReferences is a required field
	DataSetReferences []*DataSetReference `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AnalysisSourceTemplate) 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 AnalysisSourceTemplate) GoString() string {
	return s.String()
}

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

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

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

// SetDataSetReferences sets the DataSetReferences field's value.
func (s *AnalysisSourceTemplate) SetDataSetReferences(v []*DataSetReference) *AnalysisSourceTemplate {
	s.DataSetReferences = v
	return s
}

// The summary metadata that describes an analysis.
type AnalysisSummary struct {
	_ struct{} `type:"structure"`

	// The ID of the analysis. This ID displays in the URL.
	AnalysisId *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) for the analysis.
	Arn *string `type:"string"`

	// The time that the analysis was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The time that the analysis was last updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// The name of the analysis. This name is displayed in the Amazon QuickSight
	// console.
	Name *string `min:"1" type:"string"`

	// The last known status for the analysis.
	Status *string `type:"string" enum:"ResourceStatus"`
}

// 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 AnalysisSummary) 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 AnalysisSummary) GoString() string {
	return s.String()
}

// SetAnalysisId sets the AnalysisId field's value.
func (s *AnalysisSummary) SetAnalysisId(v string) *AnalysisSummary {
	s.AnalysisId = &v
	return s
}

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

// SetCreatedTime sets the CreatedTime field's value.
func (s *AnalysisSummary) SetCreatedTime(v time.Time) *AnalysisSummary {
	s.CreatedTime = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *AnalysisSummary) SetLastUpdatedTime(v time.Time) *AnalysisSummary {
	s.LastUpdatedTime = &v
	return s
}

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

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

// The definition of the Anchor.
type Anchor struct {
	_ struct{} `type:"structure"`

	// The AnchorType for the Anchor.
	AnchorType *string `type:"string" enum:"AnchorType"`

	// The offset of the Anchor.
	Offset *int64 `type:"integer"`

	// The TimeGranularity of the Anchor.
	TimeGranularity *string `type:"string" enum:"TimeGranularity"`
}

// 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 Anchor) 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 Anchor) GoString() string {
	return s.String()
}

// SetAnchorType sets the AnchorType field's value.
func (s *Anchor) SetAnchorType(v string) *Anchor {
	s.AnchorType = &v
	return s
}

// SetOffset sets the Offset field's value.
func (s *Anchor) SetOffset(v int64) *Anchor {
	s.Offset = &v
	return s
}

// SetTimeGranularity sets the TimeGranularity field's value.
func (s *Anchor) SetTimeGranularity(v string) *Anchor {
	s.TimeGranularity = &v
	return s
}

// The date configuration of the filter.
type AnchorDateConfiguration struct {
	_ struct{} `type:"structure"`

	// The options for the date configuration. Choose one of the options below:
	//
	//    * NOW
	AnchorOption *string `type:"string" enum:"AnchorOption"`

	// The name of the parameter that is used for the anchor date configuration.
	ParameterName *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AnchorDateConfiguration) 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 AnchorDateConfiguration) GoString() string {
	return s.String()
}

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

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

// SetAnchorOption sets the AnchorOption field's value.
func (s *AnchorDateConfiguration) SetAnchorOption(v string) *AnchorDateConfiguration {
	s.AnchorOption = &v
	return s
}

// SetParameterName sets the ParameterName field's value.
func (s *AnchorDateConfiguration) SetParameterName(v string) *AnchorDateConfiguration {
	s.ParameterName = &v
	return s
}

// Information about the dashboard that you want to embed.
type AnonymousUserDashboardEmbeddingConfiguration struct {
	_ struct{} `type:"structure"`

	// The dashboard ID for the dashboard that you want the user to see first. This
	// ID is included in the output URL. When the URL in response is accessed, Amazon
	// QuickSight renders this dashboard.
	//
	// The Amazon Resource Name (ARN) of this dashboard must be included in the
	// AuthorizedResourceArns parameter. Otherwise, the request will fail with InvalidParameterValueException.
	//
	// InitialDashboardId is a required field
	InitialDashboardId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AnonymousUserDashboardEmbeddingConfiguration) 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 AnonymousUserDashboardEmbeddingConfiguration) GoString() string {
	return s.String()
}

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

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

// SetInitialDashboardId sets the InitialDashboardId field's value.
func (s *AnonymousUserDashboardEmbeddingConfiguration) SetInitialDashboardId(v string) *AnonymousUserDashboardEmbeddingConfiguration {
	s.InitialDashboardId = &v
	return s
}

// The experience that you are embedding. You can use this object to generate
// a url that embeds a visual into your application.
type AnonymousUserDashboardVisualEmbeddingConfiguration struct {
	_ struct{} `type:"structure"`

	// The visual ID for the visual that you want the user to see. This ID is included
	// in the output URL. When the URL in response is accessed, Amazon QuickSight
	// renders this visual.
	//
	// The Amazon Resource Name (ARN) of the dashboard that the visual belongs to
	// must be included in the AuthorizedResourceArns parameter. Otherwise, the
	// request will fail with InvalidParameterValueException.
	//
	// InitialDashboardVisualId is a required field
	InitialDashboardVisualId *DashboardVisualId `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 AnonymousUserDashboardVisualEmbeddingConfiguration) 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 AnonymousUserDashboardVisualEmbeddingConfiguration) GoString() string {
	return s.String()
}

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

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

// SetInitialDashboardVisualId sets the InitialDashboardVisualId field's value.
func (s *AnonymousUserDashboardVisualEmbeddingConfiguration) SetInitialDashboardVisualId(v *DashboardVisualId) *AnonymousUserDashboardVisualEmbeddingConfiguration {
	s.InitialDashboardVisualId = v
	return s
}

// The type of experience you want to embed. For anonymous users, you can embed
// Amazon QuickSight dashboards.
type AnonymousUserEmbeddingExperienceConfiguration struct {
	_ struct{} `type:"structure"`

	// The type of embedding experience. In this case, Amazon QuickSight dashboards.
	Dashboard *AnonymousUserDashboardEmbeddingConfiguration `type:"structure"`

	// The type of embedding experience. In this case, Amazon QuickSight visuals.
	DashboardVisual *AnonymousUserDashboardVisualEmbeddingConfiguration `type:"structure"`

	// The Generative Q&A experience that you want to use for anonymous user embedding.
	GenerativeQnA *AnonymousUserGenerativeQnAEmbeddingConfiguration `type:"structure"`

	// The Q search bar that you want to use for anonymous user embedding.
	QSearchBar *AnonymousUserQSearchBarEmbeddingConfiguration `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 AnonymousUserEmbeddingExperienceConfiguration) 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 AnonymousUserEmbeddingExperienceConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AnonymousUserEmbeddingExperienceConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AnonymousUserEmbeddingExperienceConfiguration"}
	if s.Dashboard != nil {
		if err := s.Dashboard.Validate(); err != nil {
			invalidParams.AddNested("Dashboard", err.(request.ErrInvalidParams))
		}
	}
	if s.DashboardVisual != nil {
		if err := s.DashboardVisual.Validate(); err != nil {
			invalidParams.AddNested("DashboardVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.GenerativeQnA != nil {
		if err := s.GenerativeQnA.Validate(); err != nil {
			invalidParams.AddNested("GenerativeQnA", err.(request.ErrInvalidParams))
		}
	}
	if s.QSearchBar != nil {
		if err := s.QSearchBar.Validate(); err != nil {
			invalidParams.AddNested("QSearchBar", err.(request.ErrInvalidParams))
		}
	}

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

// SetDashboard sets the Dashboard field's value.
func (s *AnonymousUserEmbeddingExperienceConfiguration) SetDashboard(v *AnonymousUserDashboardEmbeddingConfiguration) *AnonymousUserEmbeddingExperienceConfiguration {
	s.Dashboard = v
	return s
}

// SetDashboardVisual sets the DashboardVisual field's value.
func (s *AnonymousUserEmbeddingExperienceConfiguration) SetDashboardVisual(v *AnonymousUserDashboardVisualEmbeddingConfiguration) *AnonymousUserEmbeddingExperienceConfiguration {
	s.DashboardVisual = v
	return s
}

// SetGenerativeQnA sets the GenerativeQnA field's value.
func (s *AnonymousUserEmbeddingExperienceConfiguration) SetGenerativeQnA(v *AnonymousUserGenerativeQnAEmbeddingConfiguration) *AnonymousUserEmbeddingExperienceConfiguration {
	s.GenerativeQnA = v
	return s
}

// SetQSearchBar sets the QSearchBar field's value.
func (s *AnonymousUserEmbeddingExperienceConfiguration) SetQSearchBar(v *AnonymousUserQSearchBarEmbeddingConfiguration) *AnonymousUserEmbeddingExperienceConfiguration {
	s.QSearchBar = v
	return s
}

// The settings that you want to use for the Generative Q&A experience.
type AnonymousUserGenerativeQnAEmbeddingConfiguration struct {
	_ struct{} `type:"structure"`

	// The Amazon QuickSight Q topic ID of the new reader experience topic that
	// you want the anonymous user to see first. This ID is included in the output
	// URL. When the URL in response is accessed, Amazon QuickSight renders the
	// Generative Q&A experience with this new reader experience topic pre selected.
	//
	// The Amazon Resource Name (ARN) of this Q new reader experience topic must
	// be included in the AuthorizedResourceArns parameter. Otherwise, the request
	// fails with an InvalidParameterValueException error.
	//
	// InitialTopicId is a required field
	InitialTopicId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AnonymousUserGenerativeQnAEmbeddingConfiguration) 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 AnonymousUserGenerativeQnAEmbeddingConfiguration) GoString() string {
	return s.String()
}

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

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

// SetInitialTopicId sets the InitialTopicId field's value.
func (s *AnonymousUserGenerativeQnAEmbeddingConfiguration) SetInitialTopicId(v string) *AnonymousUserGenerativeQnAEmbeddingConfiguration {
	s.InitialTopicId = &v
	return s
}

// The settings that you want to use with the Q search bar.
type AnonymousUserQSearchBarEmbeddingConfiguration struct {
	_ struct{} `type:"structure"`

	// The Amazon QuickSight Q topic ID of the legacy topic that you want the anonymous
	// user to see first. This ID is included in the output URL. When the URL in
	// response is accessed, Amazon QuickSight renders the Q search bar with this
	// legacy topic pre-selected.
	//
	// The Amazon Resource Name (ARN) of this Q legacy topic must be included in
	// the AuthorizedResourceArns parameter. Otherwise, the request fails with an
	// InvalidParameterValueException error.
	//
	// InitialTopicId is a required field
	InitialTopicId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AnonymousUserQSearchBarEmbeddingConfiguration) 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 AnonymousUserQSearchBarEmbeddingConfiguration) GoString() string {
	return s.String()
}

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

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

// SetInitialTopicId sets the InitialTopicId field's value.
func (s *AnonymousUserQSearchBarEmbeddingConfiguration) SetInitialTopicId(v string) *AnonymousUserQSearchBarEmbeddingConfiguration {
	s.InitialTopicId = &v
	return s
}

// A structure that contains the file groups that are requested for the artifact
// generation in a StartDashboardSnapshotJob API call.
type AnonymousUserSnapshotJobResult struct {
	_ struct{} `type:"structure"`

	// A list of SnapshotJobResultFileGroup objects that contain information on
	// the files that are requested during a StartDashboardSnapshotJob API call.
	// If the job succeeds, these objects contain the location where the snapshot
	// artifacts are stored. If the job fails, the objects contain information about
	// the error that caused the job to fail.
	FileGroups []*SnapshotJobResultFileGroup `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 AnonymousUserSnapshotJobResult) 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 AnonymousUserSnapshotJobResult) GoString() string {
	return s.String()
}

// SetFileGroups sets the FileGroups field's value.
func (s *AnonymousUserSnapshotJobResult) SetFileGroups(v []*SnapshotJobResultFileGroup) *AnonymousUserSnapshotJobResult {
	s.FileGroups = v
	return s
}

// The arc axis configuration of a GaugeChartVisual.
type ArcAxisConfiguration struct {
	_ struct{} `type:"structure"`

	// The arc axis range of a GaugeChartVisual.
	Range *ArcAxisDisplayRange `type:"structure"`

	// The reserved range of the arc axis.
	ReserveRange *int64 `type:"integer"`
}

// 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 ArcAxisConfiguration) 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 ArcAxisConfiguration) GoString() string {
	return s.String()
}

// SetRange sets the Range field's value.
func (s *ArcAxisConfiguration) SetRange(v *ArcAxisDisplayRange) *ArcAxisConfiguration {
	s.Range = v
	return s
}

// SetReserveRange sets the ReserveRange field's value.
func (s *ArcAxisConfiguration) SetReserveRange(v int64) *ArcAxisConfiguration {
	s.ReserveRange = &v
	return s
}

// The arc axis range of a GaugeChartVisual.
type ArcAxisDisplayRange struct {
	_ struct{} `type:"structure"`

	// The maximum value of the arc axis range.
	Max *float64 `type:"double"`

	// The minimum value of the arc axis range.
	Min *float64 `type:"double"`
}

// 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 ArcAxisDisplayRange) 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 ArcAxisDisplayRange) GoString() string {
	return s.String()
}

// SetMax sets the Max field's value.
func (s *ArcAxisDisplayRange) SetMax(v float64) *ArcAxisDisplayRange {
	s.Max = &v
	return s
}

// SetMin sets the Min field's value.
func (s *ArcAxisDisplayRange) SetMin(v float64) *ArcAxisDisplayRange {
	s.Min = &v
	return s
}

// The arc configuration of a GaugeChartVisual.
type ArcConfiguration struct {
	_ struct{} `type:"structure"`

	// The option that determines the arc angle of a GaugeChartVisual.
	ArcAngle *float64 `type:"double"`

	// The options that determine the arc thickness of a GaugeChartVisual.
	ArcThickness *string `type:"string" enum:"ArcThicknessOptions"`
}

// 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 ArcConfiguration) 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 ArcConfiguration) GoString() string {
	return s.String()
}

// SetArcAngle sets the ArcAngle field's value.
func (s *ArcConfiguration) SetArcAngle(v float64) *ArcConfiguration {
	s.ArcAngle = &v
	return s
}

// SetArcThickness sets the ArcThickness field's value.
func (s *ArcConfiguration) SetArcThickness(v string) *ArcConfiguration {
	s.ArcThickness = &v
	return s
}

// The options that determine the arc thickness of a GaugeChartVisual.
type ArcOptions struct {
	_ struct{} `type:"structure"`

	// The arc thickness of a GaugeChartVisual.
	ArcThickness *string `type:"string" enum:"ArcThickness"`
}

// 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 ArcOptions) 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 ArcOptions) GoString() string {
	return s.String()
}

// SetArcThickness sets the ArcThickness field's value.
func (s *ArcOptions) SetArcThickness(v string) *ArcOptions {
	s.ArcThickness = &v
	return s
}

// An optional collection of CloudFormation property configurations that control
// how the export job is generated.
type AssetBundleCloudFormationOverridePropertyConfiguration struct {
	_ struct{} `type:"structure"`

	// An optional list of structures that control how Analysis resources are parameterized
	// in the returned CloudFormation template.
	Analyses []*AssetBundleExportJobAnalysisOverrideProperties `min:"1" type:"list"`

	// An optional list of structures that control how Dashboard resources are parameterized
	// in the returned CloudFormation template.
	Dashboards []*AssetBundleExportJobDashboardOverrideProperties `min:"1" type:"list"`

	// An optional list of structures that control how DataSet resources are parameterized
	// in the returned CloudFormation template.
	DataSets []*AssetBundleExportJobDataSetOverrideProperties `min:"1" type:"list"`

	// An optional list of structures that control how DataSource resources are
	// parameterized in the returned CloudFormation template.
	DataSources []*AssetBundleExportJobDataSourceOverrideProperties `min:"1" type:"list"`

	// An optional list of structures that control how RefreshSchedule resources
	// are parameterized in the returned CloudFormation template.
	RefreshSchedules []*AssetBundleExportJobRefreshScheduleOverrideProperties `min:"1" type:"list"`

	// An optional list of structures that control how resource IDs are parameterized
	// in the returned CloudFormation template.
	ResourceIdOverrideConfiguration *AssetBundleExportJobResourceIdOverrideConfiguration `type:"structure"`

	// An optional list of structures that control how Theme resources are parameterized
	// in the returned CloudFormation template.
	Themes []*AssetBundleExportJobThemeOverrideProperties `min:"1" type:"list"`

	// An optional list of structures that control how VPCConnection resources are
	// parameterized in the returned CloudFormation template.
	VPCConnections []*AssetBundleExportJobVPCConnectionOverrideProperties `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleCloudFormationOverridePropertyConfiguration) 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 AssetBundleCloudFormationOverridePropertyConfiguration) GoString() string {
	return s.String()
}

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

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

// SetAnalyses sets the Analyses field's value.
func (s *AssetBundleCloudFormationOverridePropertyConfiguration) SetAnalyses(v []*AssetBundleExportJobAnalysisOverrideProperties) *AssetBundleCloudFormationOverridePropertyConfiguration {
	s.Analyses = v
	return s
}

// SetDashboards sets the Dashboards field's value.
func (s *AssetBundleCloudFormationOverridePropertyConfiguration) SetDashboards(v []*AssetBundleExportJobDashboardOverrideProperties) *AssetBundleCloudFormationOverridePropertyConfiguration {
	s.Dashboards = v
	return s
}

// SetDataSets sets the DataSets field's value.
func (s *AssetBundleCloudFormationOverridePropertyConfiguration) SetDataSets(v []*AssetBundleExportJobDataSetOverrideProperties) *AssetBundleCloudFormationOverridePropertyConfiguration {
	s.DataSets = v
	return s
}

// SetDataSources sets the DataSources field's value.
func (s *AssetBundleCloudFormationOverridePropertyConfiguration) SetDataSources(v []*AssetBundleExportJobDataSourceOverrideProperties) *AssetBundleCloudFormationOverridePropertyConfiguration {
	s.DataSources = v
	return s
}

// SetRefreshSchedules sets the RefreshSchedules field's value.
func (s *AssetBundleCloudFormationOverridePropertyConfiguration) SetRefreshSchedules(v []*AssetBundleExportJobRefreshScheduleOverrideProperties) *AssetBundleCloudFormationOverridePropertyConfiguration {
	s.RefreshSchedules = v
	return s
}

// SetResourceIdOverrideConfiguration sets the ResourceIdOverrideConfiguration field's value.
func (s *AssetBundleCloudFormationOverridePropertyConfiguration) SetResourceIdOverrideConfiguration(v *AssetBundleExportJobResourceIdOverrideConfiguration) *AssetBundleCloudFormationOverridePropertyConfiguration {
	s.ResourceIdOverrideConfiguration = v
	return s
}

// SetThemes sets the Themes field's value.
func (s *AssetBundleCloudFormationOverridePropertyConfiguration) SetThemes(v []*AssetBundleExportJobThemeOverrideProperties) *AssetBundleCloudFormationOverridePropertyConfiguration {
	s.Themes = v
	return s
}

// SetVPCConnections sets the VPCConnections field's value.
func (s *AssetBundleCloudFormationOverridePropertyConfiguration) SetVPCConnections(v []*AssetBundleExportJobVPCConnectionOverrideProperties) *AssetBundleCloudFormationOverridePropertyConfiguration {
	s.VPCConnections = v
	return s
}

// Controls how a specific Analysis resource is parameterized in the returned
// CloudFormation template.
type AssetBundleExportJobAnalysisOverrideProperties struct {
	_ struct{} `type:"structure"`

	// The ARN of the specific Analysis resource whose override properties are configured
	// in this structure.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// A list of Analysis resource properties to generate variables for in the returned
	// CloudFormation template.
	//
	// Properties is a required field
	Properties []*string `min:"1" type:"list" required:"true" enum:"AssetBundleExportJobAnalysisPropertyToOverride"`
}

// 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 AssetBundleExportJobAnalysisOverrideProperties) 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 AssetBundleExportJobAnalysisOverrideProperties) GoString() string {
	return s.String()
}

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

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

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

// SetProperties sets the Properties field's value.
func (s *AssetBundleExportJobAnalysisOverrideProperties) SetProperties(v []*string) *AssetBundleExportJobAnalysisOverrideProperties {
	s.Properties = v
	return s
}

// Controls how a specific Dashboard resource is parameterized in the returned
// CloudFormation template.
type AssetBundleExportJobDashboardOverrideProperties struct {
	_ struct{} `type:"structure"`

	// The ARN of the specific Dashboard resource whose override properties are
	// configured in this structure.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// A list of Dashboard resource properties to generate variables for in the
	// returned CloudFormation template.
	//
	// Properties is a required field
	Properties []*string `min:"1" type:"list" required:"true" enum:"AssetBundleExportJobDashboardPropertyToOverride"`
}

// 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 AssetBundleExportJobDashboardOverrideProperties) 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 AssetBundleExportJobDashboardOverrideProperties) GoString() string {
	return s.String()
}

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

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

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

// SetProperties sets the Properties field's value.
func (s *AssetBundleExportJobDashboardOverrideProperties) SetProperties(v []*string) *AssetBundleExportJobDashboardOverrideProperties {
	s.Properties = v
	return s
}

// Controls how a specific DataSet resource is parameterized in the returned
// CloudFormation template.
type AssetBundleExportJobDataSetOverrideProperties struct {
	_ struct{} `type:"structure"`

	// The ARN of the specific DataSet resource whose override properties are configured
	// in this structure.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// A list of DataSet resource properties to generate variables for in the returned
	// CloudFormation template.
	//
	// Properties is a required field
	Properties []*string `min:"1" type:"list" required:"true" enum:"AssetBundleExportJobDataSetPropertyToOverride"`
}

// 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 AssetBundleExportJobDataSetOverrideProperties) 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 AssetBundleExportJobDataSetOverrideProperties) GoString() string {
	return s.String()
}

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

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

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

// SetProperties sets the Properties field's value.
func (s *AssetBundleExportJobDataSetOverrideProperties) SetProperties(v []*string) *AssetBundleExportJobDataSetOverrideProperties {
	s.Properties = v
	return s
}

// Controls how a specific DataSource resource is parameterized in the returned
// CloudFormation template.
type AssetBundleExportJobDataSourceOverrideProperties struct {
	_ struct{} `type:"structure"`

	// The ARN of the specific DataSource resource whose override properties are
	// configured in this structure.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// A list of DataSource resource properties to generate variables for in the
	// returned CloudFormation template.
	//
	// Properties is a required field
	Properties []*string `min:"1" type:"list" required:"true" enum:"AssetBundleExportJobDataSourcePropertyToOverride"`
}

// 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 AssetBundleExportJobDataSourceOverrideProperties) 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 AssetBundleExportJobDataSourceOverrideProperties) GoString() string {
	return s.String()
}

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

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

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

// SetProperties sets the Properties field's value.
func (s *AssetBundleExportJobDataSourceOverrideProperties) SetProperties(v []*string) *AssetBundleExportJobDataSourceOverrideProperties {
	s.Properties = v
	return s
}

// Describes an error that occurred during an Asset Bundle export job.
type AssetBundleExportJobError struct {
	_ struct{} `type:"structure"`

	// The ARN of the resource whose processing caused an error.
	Arn *string `type:"string"`

	// A description of the error.
	Message *string `type:"string"`

	// The specific error type of the error that occurred.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleExportJobError) 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 AssetBundleExportJobError) GoString() string {
	return s.String()
}

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

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

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

// Controls how a specific RefreshSchedule resource is parameterized in the
// returned CloudFormation template.
type AssetBundleExportJobRefreshScheduleOverrideProperties struct {
	_ struct{} `type:"structure"`

	// The ARN of the specific RefreshSchedule resource whose override properties
	// are configured in this structure.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// A list of RefreshSchedule resource properties to generate variables for in
	// the returned CloudFormation template.
	//
	// Properties is a required field
	Properties []*string `min:"1" type:"list" required:"true" enum:"AssetBundleExportJobRefreshSchedulePropertyToOverride"`
}

// 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 AssetBundleExportJobRefreshScheduleOverrideProperties) 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 AssetBundleExportJobRefreshScheduleOverrideProperties) GoString() string {
	return s.String()
}

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

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

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

// SetProperties sets the Properties field's value.
func (s *AssetBundleExportJobRefreshScheduleOverrideProperties) SetProperties(v []*string) *AssetBundleExportJobRefreshScheduleOverrideProperties {
	s.Properties = v
	return s
}

// An optional structure that configures resource ID overrides for the export
// job.
type AssetBundleExportJobResourceIdOverrideConfiguration struct {
	_ struct{} `type:"structure"`

	// An option to request a CloudFormation variable for a prefix to be prepended
	// to each resource's ID before import. The prefix is only added to the asset
	// IDs and does not change the name of the asset.
	PrefixForAllResources *bool `type:"boolean"`
}

// 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 AssetBundleExportJobResourceIdOverrideConfiguration) 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 AssetBundleExportJobResourceIdOverrideConfiguration) GoString() string {
	return s.String()
}

// SetPrefixForAllResources sets the PrefixForAllResources field's value.
func (s *AssetBundleExportJobResourceIdOverrideConfiguration) SetPrefixForAllResources(v bool) *AssetBundleExportJobResourceIdOverrideConfiguration {
	s.PrefixForAllResources = &v
	return s
}

// A summary of the export job that includes details of the job's configuration
// and its current status.
type AssetBundleExportJobSummary struct {
	_ struct{} `type:"structure"`

	// The ARN of the export job.
	Arn *string `type:"string"`

	// The ID of the export job.
	AssetBundleExportJobId *string `min:"1" type:"string"`

	// The time that the export job was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The format for the export job.
	ExportFormat *string `type:"string" enum:"AssetBundleExportFormat"`

	// The flag that determines the inclusion of resource dependencies in the returned
	// asset bundle.
	IncludeAllDependencies *bool `type:"boolean"`

	// The flag that determines the inclusion of permissions associated with each
	// resource ARN.
	IncludePermissions *bool `type:"boolean"`

	// The flag that determines the inclusion of tags associated with each resource
	// ARN.
	IncludeTags *bool `type:"boolean"`

	// The current status of the export job.
	JobStatus *string `type:"string" enum:"AssetBundleExportJobStatus"`
}

// 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 AssetBundleExportJobSummary) 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 AssetBundleExportJobSummary) GoString() string {
	return s.String()
}

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

// SetAssetBundleExportJobId sets the AssetBundleExportJobId field's value.
func (s *AssetBundleExportJobSummary) SetAssetBundleExportJobId(v string) *AssetBundleExportJobSummary {
	s.AssetBundleExportJobId = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *AssetBundleExportJobSummary) SetCreatedTime(v time.Time) *AssetBundleExportJobSummary {
	s.CreatedTime = &v
	return s
}

// SetExportFormat sets the ExportFormat field's value.
func (s *AssetBundleExportJobSummary) SetExportFormat(v string) *AssetBundleExportJobSummary {
	s.ExportFormat = &v
	return s
}

// SetIncludeAllDependencies sets the IncludeAllDependencies field's value.
func (s *AssetBundleExportJobSummary) SetIncludeAllDependencies(v bool) *AssetBundleExportJobSummary {
	s.IncludeAllDependencies = &v
	return s
}

// SetIncludePermissions sets the IncludePermissions field's value.
func (s *AssetBundleExportJobSummary) SetIncludePermissions(v bool) *AssetBundleExportJobSummary {
	s.IncludePermissions = &v
	return s
}

// SetIncludeTags sets the IncludeTags field's value.
func (s *AssetBundleExportJobSummary) SetIncludeTags(v bool) *AssetBundleExportJobSummary {
	s.IncludeTags = &v
	return s
}

// SetJobStatus sets the JobStatus field's value.
func (s *AssetBundleExportJobSummary) SetJobStatus(v string) *AssetBundleExportJobSummary {
	s.JobStatus = &v
	return s
}

// Controls how a specific Theme resource is parameterized in the returned CloudFormation
// template.
type AssetBundleExportJobThemeOverrideProperties struct {
	_ struct{} `type:"structure"`

	// The ARN of the specific Theme resource whose override properties are configured
	// in this structure.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// A list of Theme resource properties to generate variables for in the returned
	// CloudFormation template.
	//
	// Properties is a required field
	Properties []*string `min:"1" type:"list" required:"true" enum:"AssetBundleExportJobThemePropertyToOverride"`
}

// 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 AssetBundleExportJobThemeOverrideProperties) 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 AssetBundleExportJobThemeOverrideProperties) GoString() string {
	return s.String()
}

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

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

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

// SetProperties sets the Properties field's value.
func (s *AssetBundleExportJobThemeOverrideProperties) SetProperties(v []*string) *AssetBundleExportJobThemeOverrideProperties {
	s.Properties = v
	return s
}

// Controls how a specific VPCConnection resource is parameterized in the outputted
// CloudFormation template.
type AssetBundleExportJobVPCConnectionOverrideProperties struct {
	_ struct{} `type:"structure"`

	// The ARN of the specific VPCConnection resource whose override properties
	// are configured in this structure.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// A list of VPCConnection resource properties to generate variables for in
	// the returned CloudFormation template.
	//
	// Properties is a required field
	Properties []*string `min:"1" type:"list" required:"true" enum:"AssetBundleExportJobVPCConnectionPropertyToOverride"`
}

// 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 AssetBundleExportJobVPCConnectionOverrideProperties) 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 AssetBundleExportJobVPCConnectionOverrideProperties) GoString() string {
	return s.String()
}

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

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

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

// SetProperties sets the Properties field's value.
func (s *AssetBundleExportJobVPCConnectionOverrideProperties) SetProperties(v []*string) *AssetBundleExportJobVPCConnectionOverrideProperties {
	s.Properties = v
	return s
}

// The option to relax the validation that is required to export each asset.
// When StrictModeForAllResource is set to false, validation is skipped for
// specific UI errors.
type AssetBundleExportJobValidationStrategy struct {
	_ struct{} `type:"structure"`

	// A Boolean value that indicates whether to export resources under strict or
	// lenient mode.
	StrictModeForAllResources *bool `type:"boolean"`
}

// 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 AssetBundleExportJobValidationStrategy) 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 AssetBundleExportJobValidationStrategy) GoString() string {
	return s.String()
}

// SetStrictModeForAllResources sets the StrictModeForAllResources field's value.
func (s *AssetBundleExportJobValidationStrategy) SetStrictModeForAllResources(v bool) *AssetBundleExportJobValidationStrategy {
	s.StrictModeForAllResources = &v
	return s
}

// Describes a warning that occurred during an Asset Bundle export job.
type AssetBundleExportJobWarning struct {
	_ struct{} `type:"structure"`

	// The ARN of the resource whose processing caused a warning.
	Arn *string `type:"string"`

	// A description of the warning.
	Message *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleExportJobWarning) 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 AssetBundleExportJobWarning) GoString() string {
	return s.String()
}

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

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

// The override parameters for a single analysis that is being imported.
type AssetBundleImportJobAnalysisOverrideParameters struct {
	_ struct{} `type:"structure"`

	// The ID of the analysis that you ant to apply overrides to.
	//
	// AnalysisId is a required field
	AnalysisId *string `type:"string" required:"true"`

	// A new name for the analysis.
	Name *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobAnalysisOverrideParameters) 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 AssetBundleImportJobAnalysisOverrideParameters) GoString() string {
	return s.String()
}

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

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

// SetAnalysisId sets the AnalysisId field's value.
func (s *AssetBundleImportJobAnalysisOverrideParameters) SetAnalysisId(v string) *AssetBundleImportJobAnalysisOverrideParameters {
	s.AnalysisId = &v
	return s
}

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

// An object that contains a list of permissions to be applied to a list of
// analysis IDs.
type AssetBundleImportJobAnalysisOverridePermissions struct {
	_ struct{} `type:"structure"`

	// A list of analysis IDs that you want to apply overrides to. You can use *
	// to override all analyses in this asset bundle.
	//
	// AnalysisIds is a required field
	AnalysisIds []*string `min:"1" type:"list" required:"true"`

	// A list of permissions for the analyses that you want to apply overrides to.
	//
	// Permissions is a required field
	Permissions *AssetBundleResourcePermissions `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 AssetBundleImportJobAnalysisOverridePermissions) 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 AssetBundleImportJobAnalysisOverridePermissions) GoString() string {
	return s.String()
}

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

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

// SetAnalysisIds sets the AnalysisIds field's value.
func (s *AssetBundleImportJobAnalysisOverridePermissions) SetAnalysisIds(v []*string) *AssetBundleImportJobAnalysisOverridePermissions {
	s.AnalysisIds = v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *AssetBundleImportJobAnalysisOverridePermissions) SetPermissions(v *AssetBundleResourcePermissions) *AssetBundleImportJobAnalysisOverridePermissions {
	s.Permissions = v
	return s
}

// An object that contains a list of tags to be assigned to a list of analysis
// IDs.
type AssetBundleImportJobAnalysisOverrideTags struct {
	_ struct{} `type:"structure"`

	// A list of analysis IDs that you want to apply overrides to. You can use *
	// to override all analyses in this asset bundle.
	//
	// AnalysisIds is a required field
	AnalysisIds []*string `min:"1" type:"list" required:"true"`

	// A list of tags for the analyses that you want to apply overrides to.
	//
	// Tags is a required field
	Tags []*Tag `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobAnalysisOverrideTags) 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 AssetBundleImportJobAnalysisOverrideTags) GoString() string {
	return s.String()
}

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

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

// SetAnalysisIds sets the AnalysisIds field's value.
func (s *AssetBundleImportJobAnalysisOverrideTags) SetAnalysisIds(v []*string) *AssetBundleImportJobAnalysisOverrideTags {
	s.AnalysisIds = v
	return s
}

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

// The override parameters for a single dashboard that is being imported.
type AssetBundleImportJobDashboardOverrideParameters struct {
	_ struct{} `type:"structure"`

	// The ID of the dashboard that you want to apply overrides to.
	//
	// DashboardId is a required field
	DashboardId *string `type:"string" required:"true"`

	// A new name for the dashboard.
	Name *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobDashboardOverrideParameters) 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 AssetBundleImportJobDashboardOverrideParameters) GoString() string {
	return s.String()
}

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

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

// SetDashboardId sets the DashboardId field's value.
func (s *AssetBundleImportJobDashboardOverrideParameters) SetDashboardId(v string) *AssetBundleImportJobDashboardOverrideParameters {
	s.DashboardId = &v
	return s
}

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

// An object that contains a list of permissions to be applied to a list of
// dashboard IDs.
type AssetBundleImportJobDashboardOverridePermissions struct {
	_ struct{} `type:"structure"`

	// A list of dashboard IDs that you want to apply overrides to. You can use
	// * to override all dashboards in this asset bundle.
	//
	// DashboardIds is a required field
	DashboardIds []*string `min:"1" type:"list" required:"true"`

	// A structure that contains the link sharing configurations that you want to
	// apply overrides to.
	LinkSharingConfiguration *AssetBundleResourceLinkSharingConfiguration `type:"structure"`

	// A list of permissions for the dashboards that you want to apply overrides
	// to.
	Permissions *AssetBundleResourcePermissions `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 AssetBundleImportJobDashboardOverridePermissions) 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 AssetBundleImportJobDashboardOverridePermissions) GoString() string {
	return s.String()
}

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

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

// SetDashboardIds sets the DashboardIds field's value.
func (s *AssetBundleImportJobDashboardOverridePermissions) SetDashboardIds(v []*string) *AssetBundleImportJobDashboardOverridePermissions {
	s.DashboardIds = v
	return s
}

// SetLinkSharingConfiguration sets the LinkSharingConfiguration field's value.
func (s *AssetBundleImportJobDashboardOverridePermissions) SetLinkSharingConfiguration(v *AssetBundleResourceLinkSharingConfiguration) *AssetBundleImportJobDashboardOverridePermissions {
	s.LinkSharingConfiguration = v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *AssetBundleImportJobDashboardOverridePermissions) SetPermissions(v *AssetBundleResourcePermissions) *AssetBundleImportJobDashboardOverridePermissions {
	s.Permissions = v
	return s
}

// An object that contains a list of tags to be assigned to a list of dashboard
// IDs.
type AssetBundleImportJobDashboardOverrideTags struct {
	_ struct{} `type:"structure"`

	// A list of dashboard IDs that you want to apply overrides to. You can use
	// * to override all dashboards in this asset bundle.
	//
	// DashboardIds is a required field
	DashboardIds []*string `min:"1" type:"list" required:"true"`

	// A list of tags for the dashboards that you want to apply overrides to.
	//
	// Tags is a required field
	Tags []*Tag `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobDashboardOverrideTags) 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 AssetBundleImportJobDashboardOverrideTags) GoString() string {
	return s.String()
}

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

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

// SetDashboardIds sets the DashboardIds field's value.
func (s *AssetBundleImportJobDashboardOverrideTags) SetDashboardIds(v []*string) *AssetBundleImportJobDashboardOverrideTags {
	s.DashboardIds = v
	return s
}

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

// The override parameters for a single dataset that is being imported.
type AssetBundleImportJobDataSetOverrideParameters struct {
	_ struct{} `type:"structure"`

	// The ID of the dataset to apply overrides to.
	//
	// DataSetId is a required field
	DataSetId *string `type:"string" required:"true"`

	// A new name for the dataset.
	Name *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobDataSetOverrideParameters) 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 AssetBundleImportJobDataSetOverrideParameters) GoString() string {
	return s.String()
}

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

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

// SetDataSetId sets the DataSetId field's value.
func (s *AssetBundleImportJobDataSetOverrideParameters) SetDataSetId(v string) *AssetBundleImportJobDataSetOverrideParameters {
	s.DataSetId = &v
	return s
}

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

// An object that contains a list of permissions to be applied to a list of
// dataset IDs.
type AssetBundleImportJobDataSetOverridePermissions struct {
	_ struct{} `type:"structure"`

	// A list of dataset IDs that you want to apply overrides to. You can use *
	// to override all datasets in this asset bundle.
	//
	// DataSetIds is a required field
	DataSetIds []*string `min:"1" type:"list" required:"true"`

	// A list of permissions for the datasets that you want to apply overrides to.
	//
	// Permissions is a required field
	Permissions *AssetBundleResourcePermissions `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 AssetBundleImportJobDataSetOverridePermissions) 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 AssetBundleImportJobDataSetOverridePermissions) GoString() string {
	return s.String()
}

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

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

// SetDataSetIds sets the DataSetIds field's value.
func (s *AssetBundleImportJobDataSetOverridePermissions) SetDataSetIds(v []*string) *AssetBundleImportJobDataSetOverridePermissions {
	s.DataSetIds = v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *AssetBundleImportJobDataSetOverridePermissions) SetPermissions(v *AssetBundleResourcePermissions) *AssetBundleImportJobDataSetOverridePermissions {
	s.Permissions = v
	return s
}

// An object that contains a list of tags to be assigned to a list of dataset
// IDs.
type AssetBundleImportJobDataSetOverrideTags struct {
	_ struct{} `type:"structure"`

	// A list of dataset IDs that you want to apply overrides to. You can use *
	// to override all datasets in this asset bundle.
	//
	// DataSetIds is a required field
	DataSetIds []*string `min:"1" type:"list" required:"true"`

	// A list of tags for the datasets that you want to apply overrides to.
	//
	// Tags is a required field
	Tags []*Tag `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobDataSetOverrideTags) 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 AssetBundleImportJobDataSetOverrideTags) GoString() string {
	return s.String()
}

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

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

// SetDataSetIds sets the DataSetIds field's value.
func (s *AssetBundleImportJobDataSetOverrideTags) SetDataSetIds(v []*string) *AssetBundleImportJobDataSetOverrideTags {
	s.DataSetIds = v
	return s
}

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

// A username and password credential pair to use to import a data source resource.
type AssetBundleImportJobDataSourceCredentialPair struct {
	_ struct{} `type:"structure" sensitive:"true"`

	// The password for the data source connection.
	//
	// Password is a required field
	Password *string `min:"1" type:"string" required:"true"`

	// The username for the data source connection.
	//
	// Username is a required field
	Username *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobDataSourceCredentialPair) 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 AssetBundleImportJobDataSourceCredentialPair) GoString() string {
	return s.String()
}

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

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

// SetPassword sets the Password field's value.
func (s *AssetBundleImportJobDataSourceCredentialPair) SetPassword(v string) *AssetBundleImportJobDataSourceCredentialPair {
	s.Password = &v
	return s
}

// SetUsername sets the Username field's value.
func (s *AssetBundleImportJobDataSourceCredentialPair) SetUsername(v string) *AssetBundleImportJobDataSourceCredentialPair {
	s.Username = &v
	return s
}

// The login credentials to use to import a data source resource.
type AssetBundleImportJobDataSourceCredentials struct {
	_ struct{} `type:"structure"`

	// A username and password credential pair to be used to create the imported
	// data source. Keep this field blank if you are using a Secrets Manager secret
	// to provide credentials.
	//
	// CredentialPair is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssetBundleImportJobDataSourceCredentials's
	// String and GoString methods.
	CredentialPair *AssetBundleImportJobDataSourceCredentialPair `type:"structure" sensitive:"true"`

	// The ARN of the Secrets Manager secret that's used to create the imported
	// data source. Keep this field blank, unless you are using a secret in place
	// of a credential pair.
	SecretArn *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobDataSourceCredentials) 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 AssetBundleImportJobDataSourceCredentials) GoString() string {
	return s.String()
}

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

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

// SetCredentialPair sets the CredentialPair field's value.
func (s *AssetBundleImportJobDataSourceCredentials) SetCredentialPair(v *AssetBundleImportJobDataSourceCredentialPair) *AssetBundleImportJobDataSourceCredentials {
	s.CredentialPair = v
	return s
}

// SetSecretArn sets the SecretArn field's value.
func (s *AssetBundleImportJobDataSourceCredentials) SetSecretArn(v string) *AssetBundleImportJobDataSourceCredentials {
	s.SecretArn = &v
	return s
}

// The override parameters for a single data source that is being imported.
type AssetBundleImportJobDataSourceOverrideParameters struct {
	_ struct{} `type:"structure"`

	// An optional structure that provides the credentials to be used to create
	// the imported data source.
	Credentials *AssetBundleImportJobDataSourceCredentials `type:"structure"`

	// The ID of the data source to apply overrides to.
	//
	// DataSourceId is a required field
	DataSourceId *string `type:"string" required:"true"`

	// The parameters that Amazon QuickSight uses to connect to your underlying
	// data source. This is a variant type structure. For this structure to be valid,
	// only one of the attributes can be non-null.
	DataSourceParameters *DataSourceParameters `type:"structure"`

	// A new name for the data source.
	Name *string `min:"1" type:"string"`

	// Secure Socket Layer (SSL) properties that apply when Amazon QuickSight connects
	// to your underlying data source.
	SslProperties *SslProperties `type:"structure"`

	// VPC connection properties.
	VpcConnectionProperties *VpcConnectionProperties `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 AssetBundleImportJobDataSourceOverrideParameters) 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 AssetBundleImportJobDataSourceOverrideParameters) GoString() string {
	return s.String()
}

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

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

// SetCredentials sets the Credentials field's value.
func (s *AssetBundleImportJobDataSourceOverrideParameters) SetCredentials(v *AssetBundleImportJobDataSourceCredentials) *AssetBundleImportJobDataSourceOverrideParameters {
	s.Credentials = v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *AssetBundleImportJobDataSourceOverrideParameters) SetDataSourceId(v string) *AssetBundleImportJobDataSourceOverrideParameters {
	s.DataSourceId = &v
	return s
}

// SetDataSourceParameters sets the DataSourceParameters field's value.
func (s *AssetBundleImportJobDataSourceOverrideParameters) SetDataSourceParameters(v *DataSourceParameters) *AssetBundleImportJobDataSourceOverrideParameters {
	s.DataSourceParameters = v
	return s
}

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

// SetSslProperties sets the SslProperties field's value.
func (s *AssetBundleImportJobDataSourceOverrideParameters) SetSslProperties(v *SslProperties) *AssetBundleImportJobDataSourceOverrideParameters {
	s.SslProperties = v
	return s
}

// SetVpcConnectionProperties sets the VpcConnectionProperties field's value.
func (s *AssetBundleImportJobDataSourceOverrideParameters) SetVpcConnectionProperties(v *VpcConnectionProperties) *AssetBundleImportJobDataSourceOverrideParameters {
	s.VpcConnectionProperties = v
	return s
}

// An object that contains a list of permissions to be applied to a list of
// data source IDs.
type AssetBundleImportJobDataSourceOverridePermissions struct {
	_ struct{} `type:"structure"`

	// A list of data source IDs that you want to apply overrides to. You can use
	// * to override all data sources in this asset bundle.
	//
	// DataSourceIds is a required field
	DataSourceIds []*string `min:"1" type:"list" required:"true"`

	// A list of permissions for the data source that you want to apply overrides
	// to.
	//
	// Permissions is a required field
	Permissions *AssetBundleResourcePermissions `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 AssetBundleImportJobDataSourceOverridePermissions) 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 AssetBundleImportJobDataSourceOverridePermissions) GoString() string {
	return s.String()
}

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

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

// SetDataSourceIds sets the DataSourceIds field's value.
func (s *AssetBundleImportJobDataSourceOverridePermissions) SetDataSourceIds(v []*string) *AssetBundleImportJobDataSourceOverridePermissions {
	s.DataSourceIds = v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *AssetBundleImportJobDataSourceOverridePermissions) SetPermissions(v *AssetBundleResourcePermissions) *AssetBundleImportJobDataSourceOverridePermissions {
	s.Permissions = v
	return s
}

// An object that contains a list of tags to be assigned to a list of data source
// IDs.
type AssetBundleImportJobDataSourceOverrideTags struct {
	_ struct{} `type:"structure"`

	// A list of data source IDs that you want to apply overrides to. You can use
	// * to override all data sources in this asset bundle.
	//
	// DataSourceIds is a required field
	DataSourceIds []*string `min:"1" type:"list" required:"true"`

	// A list of tags for the data source that you want to apply overrides to.
	//
	// Tags is a required field
	Tags []*Tag `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobDataSourceOverrideTags) 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 AssetBundleImportJobDataSourceOverrideTags) GoString() string {
	return s.String()
}

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

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

// SetDataSourceIds sets the DataSourceIds field's value.
func (s *AssetBundleImportJobDataSourceOverrideTags) SetDataSourceIds(v []*string) *AssetBundleImportJobDataSourceOverrideTags {
	s.DataSourceIds = v
	return s
}

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

// Describes an error that occurred within an Asset Bundle import execution.
type AssetBundleImportJobError struct {
	_ struct{} `type:"structure"`

	// The ARN of the resource whose processing caused an error.
	Arn *string `type:"string"`

	// A description of the error.
	Message *string `type:"string"`

	// The specific error type or the error that occurred.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobError) 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 AssetBundleImportJobError) GoString() string {
	return s.String()
}

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

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

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

// A list of overrides that modify the asset bundle resource configuration before
// the resource is imported.
type AssetBundleImportJobOverrideParameters struct {
	_ struct{} `type:"structure"`

	// A list of overrides for any Analysis resources that are present in the asset
	// bundle that is imported.
	Analyses []*AssetBundleImportJobAnalysisOverrideParameters `min:"1" type:"list"`

	// A list of overrides for any Dashboard resources that are present in the asset
	// bundle that is imported.
	Dashboards []*AssetBundleImportJobDashboardOverrideParameters `min:"1" type:"list"`

	// A list of overrides for any DataSet resources that are present in the asset
	// bundle that is imported.
	DataSets []*AssetBundleImportJobDataSetOverrideParameters `min:"1" type:"list"`

	// A list of overrides for any DataSource resources that are present in the
	// asset bundle that is imported.
	DataSources []*AssetBundleImportJobDataSourceOverrideParameters `min:"1" type:"list"`

	// A list of overrides for any RefreshSchedule resources that are present in
	// the asset bundle that is imported.
	RefreshSchedules []*AssetBundleImportJobRefreshScheduleOverrideParameters `min:"1" type:"list"`

	// An optional structure that configures resource ID overrides to be applied
	// within the import job.
	ResourceIdOverrideConfiguration *AssetBundleImportJobResourceIdOverrideConfiguration `type:"structure"`

	// A list of overrides for any Theme resources that are present in the asset
	// bundle that is imported.
	Themes []*AssetBundleImportJobThemeOverrideParameters `min:"1" type:"list"`

	// A list of overrides for any VPCConnection resources that are present in the
	// asset bundle that is imported.
	VPCConnections []*AssetBundleImportJobVPCConnectionOverrideParameters `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobOverrideParameters) 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 AssetBundleImportJobOverrideParameters) GoString() string {
	return s.String()
}

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

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

// SetAnalyses sets the Analyses field's value.
func (s *AssetBundleImportJobOverrideParameters) SetAnalyses(v []*AssetBundleImportJobAnalysisOverrideParameters) *AssetBundleImportJobOverrideParameters {
	s.Analyses = v
	return s
}

// SetDashboards sets the Dashboards field's value.
func (s *AssetBundleImportJobOverrideParameters) SetDashboards(v []*AssetBundleImportJobDashboardOverrideParameters) *AssetBundleImportJobOverrideParameters {
	s.Dashboards = v
	return s
}

// SetDataSets sets the DataSets field's value.
func (s *AssetBundleImportJobOverrideParameters) SetDataSets(v []*AssetBundleImportJobDataSetOverrideParameters) *AssetBundleImportJobOverrideParameters {
	s.DataSets = v
	return s
}

// SetDataSources sets the DataSources field's value.
func (s *AssetBundleImportJobOverrideParameters) SetDataSources(v []*AssetBundleImportJobDataSourceOverrideParameters) *AssetBundleImportJobOverrideParameters {
	s.DataSources = v
	return s
}

// SetRefreshSchedules sets the RefreshSchedules field's value.
func (s *AssetBundleImportJobOverrideParameters) SetRefreshSchedules(v []*AssetBundleImportJobRefreshScheduleOverrideParameters) *AssetBundleImportJobOverrideParameters {
	s.RefreshSchedules = v
	return s
}

// SetResourceIdOverrideConfiguration sets the ResourceIdOverrideConfiguration field's value.
func (s *AssetBundleImportJobOverrideParameters) SetResourceIdOverrideConfiguration(v *AssetBundleImportJobResourceIdOverrideConfiguration) *AssetBundleImportJobOverrideParameters {
	s.ResourceIdOverrideConfiguration = v
	return s
}

// SetThemes sets the Themes field's value.
func (s *AssetBundleImportJobOverrideParameters) SetThemes(v []*AssetBundleImportJobThemeOverrideParameters) *AssetBundleImportJobOverrideParameters {
	s.Themes = v
	return s
}

// SetVPCConnections sets the VPCConnections field's value.
func (s *AssetBundleImportJobOverrideParameters) SetVPCConnections(v []*AssetBundleImportJobVPCConnectionOverrideParameters) *AssetBundleImportJobOverrideParameters {
	s.VPCConnections = v
	return s
}

// A structure that contains the override permission configurations that modify
// the permissions for specified resources before the resource is imported.
type AssetBundleImportJobOverridePermissions struct {
	_ struct{} `type:"structure"`

	// A list of permissions overrides for any Analysis resources that are present
	// in the asset bundle that is imported.
	Analyses []*AssetBundleImportJobAnalysisOverridePermissions `min:"1" type:"list"`

	// A list of permissions overrides for any Dashboard resources that are present
	// in the asset bundle that is imported.
	Dashboards []*AssetBundleImportJobDashboardOverridePermissions `min:"1" type:"list"`

	// A list of permissions overrides for any DataSet resources that are present
	// in the asset bundle that is imported.
	DataSets []*AssetBundleImportJobDataSetOverridePermissions `min:"1" type:"list"`

	// A list of permissions overrides for any DataSource resources that are present
	// in the asset bundle that is imported.
	DataSources []*AssetBundleImportJobDataSourceOverridePermissions `min:"1" type:"list"`

	// A list of permissions overrides for any Theme resources that are present
	// in the asset bundle that is imported.
	Themes []*AssetBundleImportJobThemeOverridePermissions `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobOverridePermissions) 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 AssetBundleImportJobOverridePermissions) GoString() string {
	return s.String()
}

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

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

// SetAnalyses sets the Analyses field's value.
func (s *AssetBundleImportJobOverridePermissions) SetAnalyses(v []*AssetBundleImportJobAnalysisOverridePermissions) *AssetBundleImportJobOverridePermissions {
	s.Analyses = v
	return s
}

// SetDashboards sets the Dashboards field's value.
func (s *AssetBundleImportJobOverridePermissions) SetDashboards(v []*AssetBundleImportJobDashboardOverridePermissions) *AssetBundleImportJobOverridePermissions {
	s.Dashboards = v
	return s
}

// SetDataSets sets the DataSets field's value.
func (s *AssetBundleImportJobOverridePermissions) SetDataSets(v []*AssetBundleImportJobDataSetOverridePermissions) *AssetBundleImportJobOverridePermissions {
	s.DataSets = v
	return s
}

// SetDataSources sets the DataSources field's value.
func (s *AssetBundleImportJobOverridePermissions) SetDataSources(v []*AssetBundleImportJobDataSourceOverridePermissions) *AssetBundleImportJobOverridePermissions {
	s.DataSources = v
	return s
}

// SetThemes sets the Themes field's value.
func (s *AssetBundleImportJobOverridePermissions) SetThemes(v []*AssetBundleImportJobThemeOverridePermissions) *AssetBundleImportJobOverridePermissions {
	s.Themes = v
	return s
}

// A structure that contains the override tag configuration that modify the
// tags that are assigned to specified resources before the resource is imported.
type AssetBundleImportJobOverrideTags struct {
	_ struct{} `type:"structure"`

	// A list of tag overrides for any Analysis resources that are present in the
	// asset bundle that is imported.
	Analyses []*AssetBundleImportJobAnalysisOverrideTags `min:"1" type:"list"`

	// A list of tag overrides for any Dashboard resources that are present in the
	// asset bundle that is imported.
	Dashboards []*AssetBundleImportJobDashboardOverrideTags `min:"1" type:"list"`

	// A list of tag overrides for any DataSet resources that are present in the
	// asset bundle that is imported.
	DataSets []*AssetBundleImportJobDataSetOverrideTags `min:"1" type:"list"`

	// A list of tag overrides for any DataSource resources that are present in
	// the asset bundle that is imported.
	DataSources []*AssetBundleImportJobDataSourceOverrideTags `min:"1" type:"list"`

	// A list of tag overrides for any Theme resources that are present in the asset
	// bundle that is imported.
	Themes []*AssetBundleImportJobThemeOverrideTags `min:"1" type:"list"`

	// A list of tag overrides for any VPCConnection resources that are present
	// in the asset bundle that is imported.
	VPCConnections []*AssetBundleImportJobVPCConnectionOverrideTags `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobOverrideTags) 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 AssetBundleImportJobOverrideTags) GoString() string {
	return s.String()
}

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

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

// SetAnalyses sets the Analyses field's value.
func (s *AssetBundleImportJobOverrideTags) SetAnalyses(v []*AssetBundleImportJobAnalysisOverrideTags) *AssetBundleImportJobOverrideTags {
	s.Analyses = v
	return s
}

// SetDashboards sets the Dashboards field's value.
func (s *AssetBundleImportJobOverrideTags) SetDashboards(v []*AssetBundleImportJobDashboardOverrideTags) *AssetBundleImportJobOverrideTags {
	s.Dashboards = v
	return s
}

// SetDataSets sets the DataSets field's value.
func (s *AssetBundleImportJobOverrideTags) SetDataSets(v []*AssetBundleImportJobDataSetOverrideTags) *AssetBundleImportJobOverrideTags {
	s.DataSets = v
	return s
}

// SetDataSources sets the DataSources field's value.
func (s *AssetBundleImportJobOverrideTags) SetDataSources(v []*AssetBundleImportJobDataSourceOverrideTags) *AssetBundleImportJobOverrideTags {
	s.DataSources = v
	return s
}

// SetThemes sets the Themes field's value.
func (s *AssetBundleImportJobOverrideTags) SetThemes(v []*AssetBundleImportJobThemeOverrideTags) *AssetBundleImportJobOverrideTags {
	s.Themes = v
	return s
}

// SetVPCConnections sets the VPCConnections field's value.
func (s *AssetBundleImportJobOverrideTags) SetVPCConnections(v []*AssetBundleImportJobVPCConnectionOverrideTags) *AssetBundleImportJobOverrideTags {
	s.VPCConnections = v
	return s
}

// An optional parameter that overrides the validation strategy for all analyses
// and dashboards before the resource is imported.
type AssetBundleImportJobOverrideValidationStrategy struct {
	_ struct{} `type:"structure"`

	// A Boolean value that indicates whether to import all analyses and dashboards
	// under strict or lenient mode.
	StrictModeForAllResources *bool `type:"boolean"`
}

// 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 AssetBundleImportJobOverrideValidationStrategy) 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 AssetBundleImportJobOverrideValidationStrategy) GoString() string {
	return s.String()
}

// SetStrictModeForAllResources sets the StrictModeForAllResources field's value.
func (s *AssetBundleImportJobOverrideValidationStrategy) SetStrictModeForAllResources(v bool) *AssetBundleImportJobOverrideValidationStrategy {
	s.StrictModeForAllResources = &v
	return s
}

// A list of overrides for a specific RefreshsSchedule resource that is present
// in the asset bundle that is imported.
type AssetBundleImportJobRefreshScheduleOverrideParameters struct {
	_ struct{} `type:"structure"`

	// A partial identifier for the specific RefreshSchedule resource that is being
	// overridden. This structure is used together with the ScheduleID structure.
	//
	// DataSetId is a required field
	DataSetId *string `type:"string" required:"true"`

	// A partial identifier for the specific RefreshSchedule resource being overridden.
	// This structure is used together with the DataSetId structure.
	//
	// ScheduleId is a required field
	ScheduleId *string `type:"string" required:"true"`

	// An override for the StartAfterDateTime of a RefreshSchedule. Make sure that
	// the StartAfterDateTime is set to a time that takes place in the future.
	StartAfterDateTime *time.Time `type:"timestamp"`
}

// 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 AssetBundleImportJobRefreshScheduleOverrideParameters) 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 AssetBundleImportJobRefreshScheduleOverrideParameters) GoString() string {
	return s.String()
}

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

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

// SetDataSetId sets the DataSetId field's value.
func (s *AssetBundleImportJobRefreshScheduleOverrideParameters) SetDataSetId(v string) *AssetBundleImportJobRefreshScheduleOverrideParameters {
	s.DataSetId = &v
	return s
}

// SetScheduleId sets the ScheduleId field's value.
func (s *AssetBundleImportJobRefreshScheduleOverrideParameters) SetScheduleId(v string) *AssetBundleImportJobRefreshScheduleOverrideParameters {
	s.ScheduleId = &v
	return s
}

// SetStartAfterDateTime sets the StartAfterDateTime field's value.
func (s *AssetBundleImportJobRefreshScheduleOverrideParameters) SetStartAfterDateTime(v time.Time) *AssetBundleImportJobRefreshScheduleOverrideParameters {
	s.StartAfterDateTime = &v
	return s
}

// An optional structure that configures resource ID overrides for the import
// job.
type AssetBundleImportJobResourceIdOverrideConfiguration struct {
	_ struct{} `type:"structure"`

	// An option to request a CloudFormation variable for a prefix to be prepended
	// to each resource's ID before import. The prefix is only added to the asset
	// IDs and does not change the name of the asset.
	PrefixForAllResources *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobResourceIdOverrideConfiguration) 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 AssetBundleImportJobResourceIdOverrideConfiguration) GoString() string {
	return s.String()
}

// SetPrefixForAllResources sets the PrefixForAllResources field's value.
func (s *AssetBundleImportJobResourceIdOverrideConfiguration) SetPrefixForAllResources(v string) *AssetBundleImportJobResourceIdOverrideConfiguration {
	s.PrefixForAllResources = &v
	return s
}

// A summary of the import job that includes details of the requested job's
// configuration and its current status.
type AssetBundleImportJobSummary struct {
	_ struct{} `type:"structure"`

	// The ARN of the import job.
	Arn *string `type:"string"`

	// The ID of the job. This ID is unique while the job is running. After the
	// job is completed, you can reuse this ID for another job.
	AssetBundleImportJobId *string `min:"1" type:"string"`

	// The time that the import job was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The failure action for the import job.
	FailureAction *string `type:"string" enum:"AssetBundleImportFailureAction"`

	// The current status of the import job.
	JobStatus *string `type:"string" enum:"AssetBundleImportJobStatus"`
}

// 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 AssetBundleImportJobSummary) 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 AssetBundleImportJobSummary) GoString() string {
	return s.String()
}

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

// SetAssetBundleImportJobId sets the AssetBundleImportJobId field's value.
func (s *AssetBundleImportJobSummary) SetAssetBundleImportJobId(v string) *AssetBundleImportJobSummary {
	s.AssetBundleImportJobId = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *AssetBundleImportJobSummary) SetCreatedTime(v time.Time) *AssetBundleImportJobSummary {
	s.CreatedTime = &v
	return s
}

// SetFailureAction sets the FailureAction field's value.
func (s *AssetBundleImportJobSummary) SetFailureAction(v string) *AssetBundleImportJobSummary {
	s.FailureAction = &v
	return s
}

// SetJobStatus sets the JobStatus field's value.
func (s *AssetBundleImportJobSummary) SetJobStatus(v string) *AssetBundleImportJobSummary {
	s.JobStatus = &v
	return s
}

// The override parameters for a single theme that is imported.
type AssetBundleImportJobThemeOverrideParameters struct {
	_ struct{} `type:"structure"`

	// A new name for the theme.
	Name *string `min:"1" type:"string"`

	// The ID of the theme to apply overrides to.
	//
	// ThemeId is a required field
	ThemeId *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobThemeOverrideParameters) 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 AssetBundleImportJobThemeOverrideParameters) GoString() string {
	return s.String()
}

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

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

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

// SetThemeId sets the ThemeId field's value.
func (s *AssetBundleImportJobThemeOverrideParameters) SetThemeId(v string) *AssetBundleImportJobThemeOverrideParameters {
	s.ThemeId = &v
	return s
}

// An object that contains a list of permissions to be applied to a list of
// theme IDs.
type AssetBundleImportJobThemeOverridePermissions struct {
	_ struct{} `type:"structure"`

	// A list of permissions for the themes that you want to apply overrides to.
	//
	// Permissions is a required field
	Permissions *AssetBundleResourcePermissions `type:"structure" required:"true"`

	// A list of theme IDs that you want to apply overrides to. You can use * to
	// override all themes in this asset bundle.
	//
	// ThemeIds is a required field
	ThemeIds []*string `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobThemeOverridePermissions) 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 AssetBundleImportJobThemeOverridePermissions) GoString() string {
	return s.String()
}

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

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

// SetPermissions sets the Permissions field's value.
func (s *AssetBundleImportJobThemeOverridePermissions) SetPermissions(v *AssetBundleResourcePermissions) *AssetBundleImportJobThemeOverridePermissions {
	s.Permissions = v
	return s
}

// SetThemeIds sets the ThemeIds field's value.
func (s *AssetBundleImportJobThemeOverridePermissions) SetThemeIds(v []*string) *AssetBundleImportJobThemeOverridePermissions {
	s.ThemeIds = v
	return s
}

// An object that contains a list of tags to be assigned to a list of theme
// IDs.
type AssetBundleImportJobThemeOverrideTags struct {
	_ struct{} `type:"structure"`

	// A list of tags for the themes that you want to apply overrides to.
	//
	// Tags is a required field
	Tags []*Tag `min:"1" type:"list" required:"true"`

	// A list of theme IDs that you want to apply overrides to. You can use * to
	// override all themes in this asset bundle.
	//
	// ThemeIds is a required field
	ThemeIds []*string `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobThemeOverrideTags) 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 AssetBundleImportJobThemeOverrideTags) GoString() string {
	return s.String()
}

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

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

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

// SetThemeIds sets the ThemeIds field's value.
func (s *AssetBundleImportJobThemeOverrideTags) SetThemeIds(v []*string) *AssetBundleImportJobThemeOverrideTags {
	s.ThemeIds = v
	return s
}

// The override parameters for a single VPC connection that is imported.
type AssetBundleImportJobVPCConnectionOverrideParameters struct {
	_ struct{} `type:"structure"`

	// An optional override of DNS resolvers to be used by the VPC connection.
	DnsResolvers []*string `type:"list"`

	// A new name for the VPC connection.
	Name *string `min:"1" type:"string"`

	// An optional override of the role ARN to be used by the VPC connection.
	RoleArn *string `min:"20" type:"string"`

	// A new security group ID for the VPC connection you are importing. This field
	// is required if you are importing the VPC connection from another Amazon Web
	// Services account or Region.
	SecurityGroupIds []*string `min:"1" type:"list"`

	// A list of new subnet IDs for the VPC connection you are importing. This field
	// is required if you are importing the VPC connection from another Amazon Web
	// Services account or Region.
	SubnetIds []*string `min:"2" type:"list"`

	// The ID of the VPC Connection to apply overrides to.
	//
	// VPCConnectionId is a required field
	VPCConnectionId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobVPCConnectionOverrideParameters) 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 AssetBundleImportJobVPCConnectionOverrideParameters) GoString() string {
	return s.String()
}

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

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

// SetDnsResolvers sets the DnsResolvers field's value.
func (s *AssetBundleImportJobVPCConnectionOverrideParameters) SetDnsResolvers(v []*string) *AssetBundleImportJobVPCConnectionOverrideParameters {
	s.DnsResolvers = v
	return s
}

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

// SetRoleArn sets the RoleArn field's value.
func (s *AssetBundleImportJobVPCConnectionOverrideParameters) SetRoleArn(v string) *AssetBundleImportJobVPCConnectionOverrideParameters {
	s.RoleArn = &v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *AssetBundleImportJobVPCConnectionOverrideParameters) SetSecurityGroupIds(v []*string) *AssetBundleImportJobVPCConnectionOverrideParameters {
	s.SecurityGroupIds = v
	return s
}

// SetSubnetIds sets the SubnetIds field's value.
func (s *AssetBundleImportJobVPCConnectionOverrideParameters) SetSubnetIds(v []*string) *AssetBundleImportJobVPCConnectionOverrideParameters {
	s.SubnetIds = v
	return s
}

// SetVPCConnectionId sets the VPCConnectionId field's value.
func (s *AssetBundleImportJobVPCConnectionOverrideParameters) SetVPCConnectionId(v string) *AssetBundleImportJobVPCConnectionOverrideParameters {
	s.VPCConnectionId = &v
	return s
}

// An object that contains a list of tags to be assigned to a list of VPC connection
// IDs.
type AssetBundleImportJobVPCConnectionOverrideTags struct {
	_ struct{} `type:"structure"`

	// A list of tags for the VPC connections that you want to apply overrides to.
	//
	// Tags is a required field
	Tags []*Tag `min:"1" type:"list" required:"true"`

	// A list of VPC connection IDs that you want to apply overrides to. You can
	// use * to override all VPC connections in this asset bundle.
	//
	// VPCConnectionIds is a required field
	VPCConnectionIds []*string `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobVPCConnectionOverrideTags) 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 AssetBundleImportJobVPCConnectionOverrideTags) GoString() string {
	return s.String()
}

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

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

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

// SetVPCConnectionIds sets the VPCConnectionIds field's value.
func (s *AssetBundleImportJobVPCConnectionOverrideTags) SetVPCConnectionIds(v []*string) *AssetBundleImportJobVPCConnectionOverrideTags {
	s.VPCConnectionIds = v
	return s
}

// Describes a warning that occurred during an Asset Bundle import job.
type AssetBundleImportJobWarning struct {
	_ struct{} `type:"structure"`

	// The ARN of the resource that the warning occurred for.
	Arn *string `type:"string"`

	// A description of the warning that occurred during an Asset Bundle import
	// job.
	Message *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportJobWarning) 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 AssetBundleImportJobWarning) GoString() string {
	return s.String()
}

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

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

// The source of the asset bundle zip file that contains the data that you want
// to import. The file must be in QUICKSIGHT_JSON format.
type AssetBundleImportSource struct {
	_ struct{} `type:"structure"`

	// The bytes of the base64 encoded asset bundle import zip file. This file can't
	// exceed 20 MB.
	//
	// If you are calling the API operations from the Amazon Web Services SDK for
	// Java, JavaScript, Python, or PHP, the SDK encodes base64 automatically to
	// allow the direct setting of the zip file's bytes. If you are using an SDK
	// for a different language or receiving related errors, try to base64 encode
	// your data.
	//
	// Body is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssetBundleImportSource's
	// String and GoString methods.
	//
	// Body is automatically base64 encoded/decoded by the SDK.
	Body []byte `type:"blob" sensitive:"true"`

	// The Amazon S3 URI for an asset bundle import file that exists in an Amazon
	// S3 bucket that the caller has read access to. The file must be a zip format
	// file and can't exceed 20 MB.
	S3Uri *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportSource) 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 AssetBundleImportSource) GoString() string {
	return s.String()
}

// SetBody sets the Body field's value.
func (s *AssetBundleImportSource) SetBody(v []byte) *AssetBundleImportSource {
	s.Body = v
	return s
}

// SetS3Uri sets the S3Uri field's value.
func (s *AssetBundleImportSource) SetS3Uri(v string) *AssetBundleImportSource {
	s.S3Uri = &v
	return s
}

// A description of the import source that you provide at the start of an import
// job. This value is set to either Body or S3Uri, depending on how the StartAssetBundleImportJobRequest
// is configured.
type AssetBundleImportSourceDescription struct {
	_ struct{} `type:"structure"`

	// An HTTPS download URL for the provided asset bundle that you optionally provided
	// at the start of the import job. This URL is valid for five minutes after
	// issuance. Call DescribeAssetBundleExportJob again for a fresh URL if needed.
	// The downloaded asset bundle is a .qs zip file.
	//
	// Body is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssetBundleImportSourceDescription's
	// String and GoString methods.
	Body *string `type:"string" sensitive:"true"`

	// The Amazon S3 URI that you provided at the start of the import job.
	S3Uri *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleImportSourceDescription) 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 AssetBundleImportSourceDescription) GoString() string {
	return s.String()
}

// SetBody sets the Body field's value.
func (s *AssetBundleImportSourceDescription) SetBody(v string) *AssetBundleImportSourceDescription {
	s.Body = &v
	return s
}

// SetS3Uri sets the S3Uri field's value.
func (s *AssetBundleImportSourceDescription) SetS3Uri(v string) *AssetBundleImportSourceDescription {
	s.S3Uri = &v
	return s
}

// A structure that contains the configuration of a shared link to an Amazon
// QuickSight dashboard.
type AssetBundleResourceLinkSharingConfiguration struct {
	_ struct{} `type:"structure"`

	// A list of link sharing permissions for the dashboards that you want to apply
	// overrides to.
	Permissions *AssetBundleResourcePermissions `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 AssetBundleResourceLinkSharingConfiguration) 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 AssetBundleResourceLinkSharingConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AssetBundleResourceLinkSharingConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AssetBundleResourceLinkSharingConfiguration"}
	if s.Permissions != nil {
		if err := s.Permissions.Validate(); err != nil {
			invalidParams.AddNested("Permissions", err.(request.ErrInvalidParams))
		}
	}

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

// SetPermissions sets the Permissions field's value.
func (s *AssetBundleResourceLinkSharingConfiguration) SetPermissions(v *AssetBundleResourcePermissions) *AssetBundleResourceLinkSharingConfiguration {
	s.Permissions = v
	return s
}

// A structure that contains the permissions for the resource that you want
// to override in an asset bundle import job.
type AssetBundleResourcePermissions struct {
	_ struct{} `type:"structure"`

	// A list of IAM actions to grant permissions on.
	//
	// Actions is a required field
	Actions []*string `min:"1" type:"list" required:"true"`

	// A list of principals to grant permissions on.
	//
	// Principals is a required field
	Principals []*string `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssetBundleResourcePermissions) 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 AssetBundleResourcePermissions) GoString() string {
	return s.String()
}

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

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

// SetActions sets the Actions field's value.
func (s *AssetBundleResourcePermissions) SetActions(v []*string) *AssetBundleResourcePermissions {
	s.Actions = v
	return s
}

// SetPrincipals sets the Principals field's value.
func (s *AssetBundleResourcePermissions) SetPrincipals(v []*string) *AssetBundleResourcePermissions {
	s.Principals = v
	return s
}

// An array of analysis level configurations.
type AssetOptions struct {
	_ struct{} `type:"structure"`

	// Determines the timezone for the analysis.
	Timezone *string `type:"string"`

	// Determines the week start day for an analysis.
	WeekStart *string `type:"string" enum:"DayOfTheWeek"`
}

// 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 AssetOptions) 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 AssetOptions) GoString() string {
	return s.String()
}

// SetTimezone sets the Timezone field's value.
func (s *AssetOptions) SetTimezone(v string) *AssetOptions {
	s.Timezone = &v
	return s
}

// SetWeekStart sets the WeekStart field's value.
func (s *AssetOptions) SetWeekStart(v string) *AssetOptions {
	s.WeekStart = &v
	return s
}

// Parameters for Amazon Athena.
type AthenaParameters struct {
	_ struct{} `type:"structure"`

	// Use the RoleArn structure to override an account-wide role for a specific
	// Athena data source. For example, say an account administrator has turned
	// off all Athena access with an account-wide role. The administrator can then
	// use RoleArn to bypass the account-wide role and allow Athena access for the
	// single Athena data source that is specified in the structure, even if the
	// account-wide role forbidding Athena access is still active.
	RoleArn *string `min:"20" type:"string"`

	// The workgroup that Amazon Athena uses.
	WorkGroup *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AthenaParameters) 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 AthenaParameters) GoString() string {
	return s.String()
}

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

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

// SetRoleArn sets the RoleArn field's value.
func (s *AthenaParameters) SetRoleArn(v string) *AthenaParameters {
	s.RoleArn = &v
	return s
}

// SetWorkGroup sets the WorkGroup field's value.
func (s *AthenaParameters) SetWorkGroup(v string) *AthenaParameters {
	s.WorkGroup = &v
	return s
}

// Aggregation for attributes.
type AttributeAggregationFunction struct {
	_ struct{} `type:"structure"`

	// The built-in aggregation functions for attributes.
	//
	//    * UNIQUE_VALUE: Returns the unique value for a field, aggregated by the
	//    dimension fields.
	SimpleAttributeAggregation *string `type:"string" enum:"SimpleAttributeAggregationFunction"`

	// Used by the UNIQUE_VALUE aggregation function. If there are multiple values
	// for the field used by the aggregation, the value for this property will be
	// returned instead. Defaults to '*'.
	ValueForMultipleValues *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AttributeAggregationFunction) 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 AttributeAggregationFunction) GoString() string {
	return s.String()
}

// SetSimpleAttributeAggregation sets the SimpleAttributeAggregation field's value.
func (s *AttributeAggregationFunction) SetSimpleAttributeAggregation(v string) *AttributeAggregationFunction {
	s.SimpleAttributeAggregation = &v
	return s
}

// SetValueForMultipleValues sets the ValueForMultipleValues field's value.
func (s *AttributeAggregationFunction) SetValueForMultipleValues(v string) *AttributeAggregationFunction {
	s.ValueForMultipleValues = &v
	return s
}

// Parameters for Amazon Aurora.
type AuroraParameters struct {
	_ struct{} `type:"structure"`

	// Database.
	//
	// Database is a required field
	Database *string `min:"1" type:"string" required:"true"`

	// Host.
	//
	// Host is a required field
	Host *string `min:"1" type:"string" required:"true"`

	// Port.
	//
	// Port is a required field
	Port *int64 `min:"1" type:"integer" 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 AuroraParameters) 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 AuroraParameters) GoString() string {
	return s.String()
}

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

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

// SetDatabase sets the Database field's value.
func (s *AuroraParameters) SetDatabase(v string) *AuroraParameters {
	s.Database = &v
	return s
}

// SetHost sets the Host field's value.
func (s *AuroraParameters) SetHost(v string) *AuroraParameters {
	s.Host = &v
	return s
}

// SetPort sets the Port field's value.
func (s *AuroraParameters) SetPort(v int64) *AuroraParameters {
	s.Port = &v
	return s
}

// Parameters for Amazon Aurora PostgreSQL-Compatible Edition.
type AuroraPostgreSqlParameters struct {
	_ struct{} `type:"structure"`

	// The Amazon Aurora PostgreSQL database to connect to.
	//
	// Database is a required field
	Database *string `min:"1" type:"string" required:"true"`

	// The Amazon Aurora PostgreSQL-Compatible host to connect to.
	//
	// Host is a required field
	Host *string `min:"1" type:"string" required:"true"`

	// The port that Amazon Aurora PostgreSQL is listening on.
	//
	// Port is a required field
	Port *int64 `min:"1" type:"integer" 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 AuroraPostgreSqlParameters) 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 AuroraPostgreSqlParameters) GoString() string {
	return s.String()
}

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

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

// SetDatabase sets the Database field's value.
func (s *AuroraPostgreSqlParameters) SetDatabase(v string) *AuroraPostgreSqlParameters {
	s.Database = &v
	return s
}

// SetHost sets the Host field's value.
func (s *AuroraPostgreSqlParameters) SetHost(v string) *AuroraPostgreSqlParameters {
	s.Host = &v
	return s
}

// SetPort sets the Port field's value.
func (s *AuroraPostgreSqlParameters) SetPort(v int64) *AuroraPostgreSqlParameters {
	s.Port = &v
	return s
}

// The authorized targets that are associated with a service.
type AuthorizedTargetsByService struct {
	_ struct{} `type:"structure"`

	// Aist of authorized targets that are represented by IAM Identity Center application
	// ARNs.
	AuthorizedTargets []*string `type:"list"`

	// The name of the Amazon Web Services service.
	Service *string `type:"string" enum:"ServiceType"`
}

// 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 AuthorizedTargetsByService) 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 AuthorizedTargetsByService) GoString() string {
	return s.String()
}

// SetAuthorizedTargets sets the AuthorizedTargets field's value.
func (s *AuthorizedTargetsByService) SetAuthorizedTargets(v []*string) *AuthorizedTargetsByService {
	s.AuthorizedTargets = v
	return s
}

// SetService sets the Service field's value.
func (s *AuthorizedTargetsByService) SetService(v string) *AuthorizedTargetsByService {
	s.Service = &v
	return s
}

// The parameters for IoT Analytics.
type AwsIotAnalyticsParameters struct {
	_ struct{} `type:"structure"`

	// Dataset name.
	//
	// DataSetName is a required field
	DataSetName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AwsIotAnalyticsParameters) 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 AwsIotAnalyticsParameters) GoString() string {
	return s.String()
}

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

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

// SetDataSetName sets the DataSetName field's value.
func (s *AwsIotAnalyticsParameters) SetDataSetName(v string) *AwsIotAnalyticsParameters {
	s.DataSetName = &v
	return s
}

// The data options for an axis.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type AxisDataOptions struct {
	_ struct{} `type:"structure"`

	// The options for an axis with a date field.
	DateAxisOptions *DateAxisOptions `type:"structure"`

	// The options for an axis with a numeric field.
	NumericAxisOptions *NumericAxisOptions `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 AxisDataOptions) 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 AxisDataOptions) GoString() string {
	return s.String()
}

// SetDateAxisOptions sets the DateAxisOptions field's value.
func (s *AxisDataOptions) SetDateAxisOptions(v *DateAxisOptions) *AxisDataOptions {
	s.DateAxisOptions = v
	return s
}

// SetNumericAxisOptions sets the NumericAxisOptions field's value.
func (s *AxisDataOptions) SetNumericAxisOptions(v *NumericAxisOptions) *AxisDataOptions {
	s.NumericAxisOptions = v
	return s
}

// The options that are saved for future extension.
type AxisDisplayDataDrivenRange 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 AxisDisplayDataDrivenRange) 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 AxisDisplayDataDrivenRange) GoString() string {
	return s.String()
}

// The minimum and maximum setup for an axis display range.
type AxisDisplayMinMaxRange struct {
	_ struct{} `type:"structure"`

	// The maximum setup for an axis display range.
	Maximum *float64 `type:"double"`

	// The minimum setup for an axis display range.
	Minimum *float64 `type:"double"`
}

// 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 AxisDisplayMinMaxRange) 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 AxisDisplayMinMaxRange) GoString() string {
	return s.String()
}

// SetMaximum sets the Maximum field's value.
func (s *AxisDisplayMinMaxRange) SetMaximum(v float64) *AxisDisplayMinMaxRange {
	s.Maximum = &v
	return s
}

// SetMinimum sets the Minimum field's value.
func (s *AxisDisplayMinMaxRange) SetMinimum(v float64) *AxisDisplayMinMaxRange {
	s.Minimum = &v
	return s
}

// The display options for the axis label.
type AxisDisplayOptions struct {
	_ struct{} `type:"structure"`

	// Determines whether or not the axis line is visible.
	AxisLineVisibility *string `type:"string" enum:"Visibility"`

	// The offset value that determines the starting placement of the axis within
	// a visual's bounds.
	AxisOffset *string `type:"string"`

	// The data options for an axis.
	DataOptions *AxisDataOptions `type:"structure"`

	// Determines whether or not the grid line is visible.
	GridLineVisibility *string `type:"string" enum:"Visibility"`

	// The scroll bar options for an axis.
	ScrollbarOptions *ScrollBarOptions `type:"structure"`

	// The tick label options of an axis.
	TickLabelOptions *AxisTickLabelOptions `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 AxisDisplayOptions) 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 AxisDisplayOptions) GoString() string {
	return s.String()
}

// SetAxisLineVisibility sets the AxisLineVisibility field's value.
func (s *AxisDisplayOptions) SetAxisLineVisibility(v string) *AxisDisplayOptions {
	s.AxisLineVisibility = &v
	return s
}

// SetAxisOffset sets the AxisOffset field's value.
func (s *AxisDisplayOptions) SetAxisOffset(v string) *AxisDisplayOptions {
	s.AxisOffset = &v
	return s
}

// SetDataOptions sets the DataOptions field's value.
func (s *AxisDisplayOptions) SetDataOptions(v *AxisDataOptions) *AxisDisplayOptions {
	s.DataOptions = v
	return s
}

// SetGridLineVisibility sets the GridLineVisibility field's value.
func (s *AxisDisplayOptions) SetGridLineVisibility(v string) *AxisDisplayOptions {
	s.GridLineVisibility = &v
	return s
}

// SetScrollbarOptions sets the ScrollbarOptions field's value.
func (s *AxisDisplayOptions) SetScrollbarOptions(v *ScrollBarOptions) *AxisDisplayOptions {
	s.ScrollbarOptions = v
	return s
}

// SetTickLabelOptions sets the TickLabelOptions field's value.
func (s *AxisDisplayOptions) SetTickLabelOptions(v *AxisTickLabelOptions) *AxisDisplayOptions {
	s.TickLabelOptions = v
	return s
}

// The range setup of a numeric axis display range.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type AxisDisplayRange struct {
	_ struct{} `type:"structure"`

	// The data-driven setup of an axis display range.
	DataDriven *AxisDisplayDataDrivenRange `type:"structure"`

	// The minimum and maximum setup of an axis display range.
	MinMax *AxisDisplayMinMaxRange `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 AxisDisplayRange) 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 AxisDisplayRange) GoString() string {
	return s.String()
}

// SetDataDriven sets the DataDriven field's value.
func (s *AxisDisplayRange) SetDataDriven(v *AxisDisplayDataDrivenRange) *AxisDisplayRange {
	s.DataDriven = v
	return s
}

// SetMinMax sets the MinMax field's value.
func (s *AxisDisplayRange) SetMinMax(v *AxisDisplayMinMaxRange) *AxisDisplayRange {
	s.MinMax = v
	return s
}

// The label options for a chart axis. You must specify the field that the label
// is targeted to.
type AxisLabelOptions struct {
	_ struct{} `type:"structure"`

	// The options that indicate which field the label belongs to.
	ApplyTo *AxisLabelReferenceOptions `type:"structure"`

	// The text for the axis label.
	CustomLabel *string `type:"string"`

	// The font configuration of the axis label.
	FontConfiguration *FontConfiguration `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 AxisLabelOptions) 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 AxisLabelOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *AxisLabelOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AxisLabelOptions"}
	if s.ApplyTo != nil {
		if err := s.ApplyTo.Validate(); err != nil {
			invalidParams.AddNested("ApplyTo", err.(request.ErrInvalidParams))
		}
	}

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

// SetApplyTo sets the ApplyTo field's value.
func (s *AxisLabelOptions) SetApplyTo(v *AxisLabelReferenceOptions) *AxisLabelOptions {
	s.ApplyTo = v
	return s
}

// SetCustomLabel sets the CustomLabel field's value.
func (s *AxisLabelOptions) SetCustomLabel(v string) *AxisLabelOptions {
	s.CustomLabel = &v
	return s
}

// SetFontConfiguration sets the FontConfiguration field's value.
func (s *AxisLabelOptions) SetFontConfiguration(v *FontConfiguration) *AxisLabelOptions {
	s.FontConfiguration = v
	return s
}

// The reference that specifies where the axis label is applied to.
type AxisLabelReferenceOptions struct {
	_ struct{} `type:"structure"`

	// The column that the axis label is targeted to.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The field that the axis label is targeted to.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AxisLabelReferenceOptions) 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 AxisLabelReferenceOptions) GoString() string {
	return s.String()
}

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

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

// SetColumn sets the Column field's value.
func (s *AxisLabelReferenceOptions) SetColumn(v *ColumnIdentifier) *AxisLabelReferenceOptions {
	s.Column = v
	return s
}

// SetFieldId sets the FieldId field's value.
func (s *AxisLabelReferenceOptions) SetFieldId(v string) *AxisLabelReferenceOptions {
	s.FieldId = &v
	return s
}

// The liner axis scale setup.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type AxisLinearScale struct {
	_ struct{} `type:"structure"`

	// The step count setup of a linear axis.
	StepCount *int64 `type:"integer"`

	// The step size setup of a linear axis.
	StepSize *float64 `type:"double"`
}

// 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 AxisLinearScale) 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 AxisLinearScale) GoString() string {
	return s.String()
}

// SetStepCount sets the StepCount field's value.
func (s *AxisLinearScale) SetStepCount(v int64) *AxisLinearScale {
	s.StepCount = &v
	return s
}

// SetStepSize sets the StepSize field's value.
func (s *AxisLinearScale) SetStepSize(v float64) *AxisLinearScale {
	s.StepSize = &v
	return s
}

// The logarithmic axis scale setup.
type AxisLogarithmicScale struct {
	_ struct{} `type:"structure"`

	// The base setup of a logarithmic axis scale.
	Base *float64 `type:"double"`
}

// 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 AxisLogarithmicScale) 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 AxisLogarithmicScale) GoString() string {
	return s.String()
}

// SetBase sets the Base field's value.
func (s *AxisLogarithmicScale) SetBase(v float64) *AxisLogarithmicScale {
	s.Base = &v
	return s
}

// The scale setup options for a numeric axis display.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type AxisScale struct {
	_ struct{} `type:"structure"`

	// The linear axis scale setup.
	Linear *AxisLinearScale `type:"structure"`

	// The logarithmic axis scale setup.
	Logarithmic *AxisLogarithmicScale `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 AxisScale) 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 AxisScale) GoString() string {
	return s.String()
}

// SetLinear sets the Linear field's value.
func (s *AxisScale) SetLinear(v *AxisLinearScale) *AxisScale {
	s.Linear = v
	return s
}

// SetLogarithmic sets the Logarithmic field's value.
func (s *AxisScale) SetLogarithmic(v *AxisLogarithmicScale) *AxisScale {
	s.Logarithmic = v
	return s
}

// The tick label options of an axis.
type AxisTickLabelOptions struct {
	_ struct{} `type:"structure"`

	// Determines whether or not the axis ticks are visible.
	LabelOptions *LabelOptions `type:"structure"`

	// The rotation angle of the axis tick labels.
	RotationAngle *float64 `type:"double"`
}

// 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 AxisTickLabelOptions) 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 AxisTickLabelOptions) GoString() string {
	return s.String()
}

// SetLabelOptions sets the LabelOptions field's value.
func (s *AxisTickLabelOptions) SetLabelOptions(v *LabelOptions) *AxisTickLabelOptions {
	s.LabelOptions = v
	return s
}

// SetRotationAngle sets the RotationAngle field's value.
func (s *AxisTickLabelOptions) SetRotationAngle(v float64) *AxisTickLabelOptions {
	s.RotationAngle = &v
	return s
}

// The aggregated field wells of a bar chart.
type BarChartAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The category (y-axis) field well of a bar chart.
	Category []*DimensionField `type:"list"`

	// The color (group/color) field well of a bar chart.
	Colors []*DimensionField `type:"list"`

	// The small multiples field well of a bar chart.
	SmallMultiples []*DimensionField `type:"list"`

	// The value field wells of a bar chart. Values are aggregated by category.
	Values []*MeasureField `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 BarChartAggregatedFieldWells) 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 BarChartAggregatedFieldWells) GoString() string {
	return s.String()
}

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

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

// SetCategory sets the Category field's value.
func (s *BarChartAggregatedFieldWells) SetCategory(v []*DimensionField) *BarChartAggregatedFieldWells {
	s.Category = v
	return s
}

// SetColors sets the Colors field's value.
func (s *BarChartAggregatedFieldWells) SetColors(v []*DimensionField) *BarChartAggregatedFieldWells {
	s.Colors = v
	return s
}

// SetSmallMultiples sets the SmallMultiples field's value.
func (s *BarChartAggregatedFieldWells) SetSmallMultiples(v []*DimensionField) *BarChartAggregatedFieldWells {
	s.SmallMultiples = v
	return s
}

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

// The configuration of a BarChartVisual.
type BarChartConfiguration struct {
	_ struct{} `type:"structure"`

	// Determines the arrangement of the bars. The orientation and arrangement of
	// bars determine the type of bar that is used in the visual.
	BarsArrangement *string `type:"string" enum:"BarsArrangement"`

	// The label display options (grid line, range, scale, axis step) for bar chart
	// category.
	CategoryAxis *AxisDisplayOptions `type:"structure"`

	// The label options (label text, label visibility and sort icon visibility)
	// for a bar chart.
	CategoryLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The label options (label text, label visibility and sort icon visibility)
	// for a color that is used in a bar chart.
	ColorLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The contribution analysis (anomaly configuration) setup of the visual.
	ContributionAnalysisDefaults []*ContributionAnalysisDefault `min:"1" type:"list"`

	// The options that determine if visual data labels are displayed.
	DataLabels *DataLabelOptions `type:"structure"`

	// The field wells of the visual.
	FieldWells *BarChartFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The legend display setup of the visual.
	Legend *LegendOptions `type:"structure"`

	// The orientation of the bars in a bar chart visual. There are two valid values
	// in this structure:
	//
	//    * HORIZONTAL: Used for charts that have horizontal bars. Visuals that
	//    use this value are horizontal bar charts, horizontal stacked bar charts,
	//    and horizontal stacked 100% bar charts.
	//
	//    * VERTICAL: Used for charts that have vertical bars. Visuals that use
	//    this value are vertical bar charts, vertical stacked bar charts, and vertical
	//    stacked 100% bar charts.
	Orientation *string `type:"string" enum:"BarChartOrientation"`

	// The reference line setup of the visual.
	ReferenceLines []*ReferenceLine `type:"list"`

	// The small multiples setup for the visual.
	SmallMultiplesOptions *SmallMultiplesOptions `type:"structure"`

	// The sort configuration of a BarChartVisual.
	SortConfiguration *BarChartSortConfiguration `type:"structure"`

	// The tooltip display setup of the visual.
	Tooltip *TooltipOptions `type:"structure"`

	// The label display options (grid line, range, scale, axis step) for a bar
	// chart value.
	ValueAxis *AxisDisplayOptions `type:"structure"`

	// The label options (label text, label visibility and sort icon visibility)
	// for a bar chart value.
	ValueLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The palette (chart color) display setup of the visual.
	VisualPalette *VisualPalette `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 BarChartConfiguration) 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 BarChartConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BarChartConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BarChartConfiguration"}
	if s.ContributionAnalysisDefaults != nil && len(s.ContributionAnalysisDefaults) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContributionAnalysisDefaults", 1))
	}
	if s.CategoryLabelOptions != nil {
		if err := s.CategoryLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("CategoryLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.ColorLabelOptions != nil {
		if err := s.ColorLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("ColorLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.ContributionAnalysisDefaults != nil {
		for i, v := range s.ContributionAnalysisDefaults {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ContributionAnalysisDefaults", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.DataLabels != nil {
		if err := s.DataLabels.Validate(); err != nil {
			invalidParams.AddNested("DataLabels", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.ReferenceLines != nil {
		for i, v := range s.ReferenceLines {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReferenceLines", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.SmallMultiplesOptions != nil {
		if err := s.SmallMultiplesOptions.Validate(); err != nil {
			invalidParams.AddNested("SmallMultiplesOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.SortConfiguration != nil {
		if err := s.SortConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SortConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Tooltip != nil {
		if err := s.Tooltip.Validate(); err != nil {
			invalidParams.AddNested("Tooltip", err.(request.ErrInvalidParams))
		}
	}
	if s.ValueLabelOptions != nil {
		if err := s.ValueLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("ValueLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.VisualPalette != nil {
		if err := s.VisualPalette.Validate(); err != nil {
			invalidParams.AddNested("VisualPalette", err.(request.ErrInvalidParams))
		}
	}

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

// SetBarsArrangement sets the BarsArrangement field's value.
func (s *BarChartConfiguration) SetBarsArrangement(v string) *BarChartConfiguration {
	s.BarsArrangement = &v
	return s
}

// SetCategoryAxis sets the CategoryAxis field's value.
func (s *BarChartConfiguration) SetCategoryAxis(v *AxisDisplayOptions) *BarChartConfiguration {
	s.CategoryAxis = v
	return s
}

// SetCategoryLabelOptions sets the CategoryLabelOptions field's value.
func (s *BarChartConfiguration) SetCategoryLabelOptions(v *ChartAxisLabelOptions) *BarChartConfiguration {
	s.CategoryLabelOptions = v
	return s
}

// SetColorLabelOptions sets the ColorLabelOptions field's value.
func (s *BarChartConfiguration) SetColorLabelOptions(v *ChartAxisLabelOptions) *BarChartConfiguration {
	s.ColorLabelOptions = v
	return s
}

// SetContributionAnalysisDefaults sets the ContributionAnalysisDefaults field's value.
func (s *BarChartConfiguration) SetContributionAnalysisDefaults(v []*ContributionAnalysisDefault) *BarChartConfiguration {
	s.ContributionAnalysisDefaults = v
	return s
}

// SetDataLabels sets the DataLabels field's value.
func (s *BarChartConfiguration) SetDataLabels(v *DataLabelOptions) *BarChartConfiguration {
	s.DataLabels = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *BarChartConfiguration) SetFieldWells(v *BarChartFieldWells) *BarChartConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *BarChartConfiguration) SetInteractions(v *VisualInteractionOptions) *BarChartConfiguration {
	s.Interactions = v
	return s
}

// SetLegend sets the Legend field's value.
func (s *BarChartConfiguration) SetLegend(v *LegendOptions) *BarChartConfiguration {
	s.Legend = v
	return s
}

// SetOrientation sets the Orientation field's value.
func (s *BarChartConfiguration) SetOrientation(v string) *BarChartConfiguration {
	s.Orientation = &v
	return s
}

// SetReferenceLines sets the ReferenceLines field's value.
func (s *BarChartConfiguration) SetReferenceLines(v []*ReferenceLine) *BarChartConfiguration {
	s.ReferenceLines = v
	return s
}

// SetSmallMultiplesOptions sets the SmallMultiplesOptions field's value.
func (s *BarChartConfiguration) SetSmallMultiplesOptions(v *SmallMultiplesOptions) *BarChartConfiguration {
	s.SmallMultiplesOptions = v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *BarChartConfiguration) SetSortConfiguration(v *BarChartSortConfiguration) *BarChartConfiguration {
	s.SortConfiguration = v
	return s
}

// SetTooltip sets the Tooltip field's value.
func (s *BarChartConfiguration) SetTooltip(v *TooltipOptions) *BarChartConfiguration {
	s.Tooltip = v
	return s
}

// SetValueAxis sets the ValueAxis field's value.
func (s *BarChartConfiguration) SetValueAxis(v *AxisDisplayOptions) *BarChartConfiguration {
	s.ValueAxis = v
	return s
}

// SetValueLabelOptions sets the ValueLabelOptions field's value.
func (s *BarChartConfiguration) SetValueLabelOptions(v *ChartAxisLabelOptions) *BarChartConfiguration {
	s.ValueLabelOptions = v
	return s
}

// SetVisualPalette sets the VisualPalette field's value.
func (s *BarChartConfiguration) SetVisualPalette(v *VisualPalette) *BarChartConfiguration {
	s.VisualPalette = v
	return s
}

// The field wells of a BarChartVisual.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type BarChartFieldWells struct {
	_ struct{} `type:"structure"`

	// The aggregated field wells of a bar chart.
	BarChartAggregatedFieldWells *BarChartAggregatedFieldWells `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 BarChartFieldWells) 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 BarChartFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BarChartFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BarChartFieldWells"}
	if s.BarChartAggregatedFieldWells != nil {
		if err := s.BarChartAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("BarChartAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

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

// SetBarChartAggregatedFieldWells sets the BarChartAggregatedFieldWells field's value.
func (s *BarChartFieldWells) SetBarChartAggregatedFieldWells(v *BarChartAggregatedFieldWells) *BarChartFieldWells {
	s.BarChartAggregatedFieldWells = v
	return s
}

// sort-configuration-description
type BarChartSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The limit on the number of categories displayed in a bar chart.
	CategoryItemsLimit *ItemsLimitConfiguration `type:"structure"`

	// The sort configuration of category fields.
	CategorySort []*FieldSortOptions `type:"list"`

	// The limit on the number of values displayed in a bar chart.
	ColorItemsLimit *ItemsLimitConfiguration `type:"structure"`

	// The sort configuration of color fields in a bar chart.
	ColorSort []*FieldSortOptions `type:"list"`

	// The limit on the number of small multiples panels that are displayed.
	SmallMultiplesLimitConfiguration *ItemsLimitConfiguration `type:"structure"`

	// The sort configuration of the small multiples field.
	SmallMultiplesSort []*FieldSortOptions `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 BarChartSortConfiguration) 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 BarChartSortConfiguration) GoString() string {
	return s.String()
}

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

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

// SetCategoryItemsLimit sets the CategoryItemsLimit field's value.
func (s *BarChartSortConfiguration) SetCategoryItemsLimit(v *ItemsLimitConfiguration) *BarChartSortConfiguration {
	s.CategoryItemsLimit = v
	return s
}

// SetCategorySort sets the CategorySort field's value.
func (s *BarChartSortConfiguration) SetCategorySort(v []*FieldSortOptions) *BarChartSortConfiguration {
	s.CategorySort = v
	return s
}

// SetColorItemsLimit sets the ColorItemsLimit field's value.
func (s *BarChartSortConfiguration) SetColorItemsLimit(v *ItemsLimitConfiguration) *BarChartSortConfiguration {
	s.ColorItemsLimit = v
	return s
}

// SetColorSort sets the ColorSort field's value.
func (s *BarChartSortConfiguration) SetColorSort(v []*FieldSortOptions) *BarChartSortConfiguration {
	s.ColorSort = v
	return s
}

// SetSmallMultiplesLimitConfiguration sets the SmallMultiplesLimitConfiguration field's value.
func (s *BarChartSortConfiguration) SetSmallMultiplesLimitConfiguration(v *ItemsLimitConfiguration) *BarChartSortConfiguration {
	s.SmallMultiplesLimitConfiguration = v
	return s
}

// SetSmallMultiplesSort sets the SmallMultiplesSort field's value.
func (s *BarChartSortConfiguration) SetSmallMultiplesSort(v []*FieldSortOptions) *BarChartSortConfiguration {
	s.SmallMultiplesSort = v
	return s
}

// A bar chart.
//
// The BarChartVisual structure describes a visual that is a member of the bar
// chart family. The following charts can be described using this structure:
//
//   - Horizontal bar chart
//
//   - Vertical bar chart
//
//   - Horizontal stacked bar chart
//
//   - Vertical stacked bar chart
//
//   - Horizontal stacked 100% bar chart
//
//   - Vertical stacked 100% bar chart
//
// For more information, see Using bar charts (https://docs.aws.amazon.com/quicksight/latest/user/bar-charts.html)
// in the Amazon QuickSight User Guide.
type BarChartVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration settings of the visual.
	ChartConfiguration *BarChartConfiguration `type:"structure"`

	// The column hierarchy that is used during drill-downs and drill-ups.
	ColumnHierarchies []*ColumnHierarchy `type:"list"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers.
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BarChartVisual) 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 BarChartVisual) GoString() string {
	return s.String()
}

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

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

// SetActions sets the Actions field's value.
func (s *BarChartVisual) SetActions(v []*VisualCustomAction) *BarChartVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *BarChartVisual) SetChartConfiguration(v *BarChartConfiguration) *BarChartVisual {
	s.ChartConfiguration = v
	return s
}

// SetColumnHierarchies sets the ColumnHierarchies field's value.
func (s *BarChartVisual) SetColumnHierarchies(v []*ColumnHierarchy) *BarChartVisual {
	s.ColumnHierarchies = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *BarChartVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *BarChartVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *BarChartVisual) SetTitle(v *VisualTitleLabelOptions) *BarChartVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *BarChartVisual) SetVisualId(v string) *BarChartVisual {
	s.VisualId = &v
	return s
}

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

	// The definition of the Answers to be created.
	//
	// Answers is a required field
	Answers []*CreateTopicReviewedAnswer `type:"list" required:"true"`

	// The ID of the Amazon Web Services account that you want to create a reviewed
	// answer in.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the topic reviewed answer that you want to create. This ID is
	// unique per Amazon Web Services Region for each Amazon Web Services account.
	//
	// TopicId is a required field
	TopicId *string `location:"uri" locationName:"TopicId" 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 BatchCreateTopicReviewedAnswerInput) 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 BatchCreateTopicReviewedAnswerInput) GoString() string {
	return s.String()
}

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

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

// SetAnswers sets the Answers field's value.
func (s *BatchCreateTopicReviewedAnswerInput) SetAnswers(v []*CreateTopicReviewedAnswer) *BatchCreateTopicReviewedAnswerInput {
	s.Answers = v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *BatchCreateTopicReviewedAnswerInput) SetAwsAccountId(v string) *BatchCreateTopicReviewedAnswerInput {
	s.AwsAccountId = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *BatchCreateTopicReviewedAnswerInput) SetTopicId(v string) *BatchCreateTopicReviewedAnswerInput {
	s.TopicId = &v
	return s
}

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

	// The definition of Answers that are invalid and not created.
	InvalidAnswers []*InvalidTopicReviewedAnswer `type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The definition of Answers that are successfully created.
	SucceededAnswers []*SucceededTopicReviewedAnswer `type:"list"`

	// The Amazon Resource Name (ARN) of the topic.
	TopicArn *string `type:"string"`

	// The ID for the topic reviewed answer that you want to create. This ID is
	// unique per Amazon Web Services Region for each Amazon Web Services account.
	TopicId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchCreateTopicReviewedAnswerOutput) 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 BatchCreateTopicReviewedAnswerOutput) GoString() string {
	return s.String()
}

// SetInvalidAnswers sets the InvalidAnswers field's value.
func (s *BatchCreateTopicReviewedAnswerOutput) SetInvalidAnswers(v []*InvalidTopicReviewedAnswer) *BatchCreateTopicReviewedAnswerOutput {
	s.InvalidAnswers = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *BatchCreateTopicReviewedAnswerOutput) SetRequestId(v string) *BatchCreateTopicReviewedAnswerOutput {
	s.RequestId = &v
	return s
}

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

// SetSucceededAnswers sets the SucceededAnswers field's value.
func (s *BatchCreateTopicReviewedAnswerOutput) SetSucceededAnswers(v []*SucceededTopicReviewedAnswer) *BatchCreateTopicReviewedAnswerOutput {
	s.SucceededAnswers = v
	return s
}

// SetTopicArn sets the TopicArn field's value.
func (s *BatchCreateTopicReviewedAnswerOutput) SetTopicArn(v string) *BatchCreateTopicReviewedAnswerOutput {
	s.TopicArn = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *BatchCreateTopicReviewedAnswerOutput) SetTopicId(v string) *BatchCreateTopicReviewedAnswerOutput {
	s.TopicId = &v
	return s
}

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

	// The Answer IDs of the Answers to be deleted.
	AnswerIds []*string `type:"list"`

	// The ID of the Amazon Web Services account that you want to delete a reviewed
	// answers in.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the topic reviewed answer that you want to delete. This ID is
	// unique per Amazon Web Services Region for each Amazon Web Services account.
	//
	// TopicId is a required field
	TopicId *string `location:"uri" locationName:"TopicId" 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 BatchDeleteTopicReviewedAnswerInput) 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 BatchDeleteTopicReviewedAnswerInput) GoString() string {
	return s.String()
}

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

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

// SetAnswerIds sets the AnswerIds field's value.
func (s *BatchDeleteTopicReviewedAnswerInput) SetAnswerIds(v []*string) *BatchDeleteTopicReviewedAnswerInput {
	s.AnswerIds = v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *BatchDeleteTopicReviewedAnswerInput) SetAwsAccountId(v string) *BatchDeleteTopicReviewedAnswerInput {
	s.AwsAccountId = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *BatchDeleteTopicReviewedAnswerInput) SetTopicId(v string) *BatchDeleteTopicReviewedAnswerInput {
	s.TopicId = &v
	return s
}

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

	// The definition of Answers that are invalid and not deleted.
	InvalidAnswers []*InvalidTopicReviewedAnswer `type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The definition of Answers that are successfully deleted.
	SucceededAnswers []*SucceededTopicReviewedAnswer `type:"list"`

	// The Amazon Resource Name (ARN) of the topic.
	TopicArn *string `type:"string"`

	// The ID of the topic reviewed answer that you want to delete. This ID is unique
	// per Amazon Web Services Region for each Amazon Web Services account.
	TopicId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BatchDeleteTopicReviewedAnswerOutput) 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 BatchDeleteTopicReviewedAnswerOutput) GoString() string {
	return s.String()
}

// SetInvalidAnswers sets the InvalidAnswers field's value.
func (s *BatchDeleteTopicReviewedAnswerOutput) SetInvalidAnswers(v []*InvalidTopicReviewedAnswer) *BatchDeleteTopicReviewedAnswerOutput {
	s.InvalidAnswers = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *BatchDeleteTopicReviewedAnswerOutput) SetRequestId(v string) *BatchDeleteTopicReviewedAnswerOutput {
	s.RequestId = &v
	return s
}

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

// SetSucceededAnswers sets the SucceededAnswers field's value.
func (s *BatchDeleteTopicReviewedAnswerOutput) SetSucceededAnswers(v []*SucceededTopicReviewedAnswer) *BatchDeleteTopicReviewedAnswerOutput {
	s.SucceededAnswers = v
	return s
}

// SetTopicArn sets the TopicArn field's value.
func (s *BatchDeleteTopicReviewedAnswerOutput) SetTopicArn(v string) *BatchDeleteTopicReviewedAnswerOutput {
	s.TopicArn = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *BatchDeleteTopicReviewedAnswerOutput) SetTopicId(v string) *BatchDeleteTopicReviewedAnswerOutput {
	s.TopicId = &v
	return s
}

// The parameters that are required to connect to a Google BigQuery data source.
type BigQueryParameters struct {
	_ struct{} `type:"structure"`

	// The storage location where you create a Google BigQuery data source.
	DataSetRegion *string `min:"1" type:"string"`

	// The Google Cloud Platform project ID where your datasource was created.
	//
	// ProjectId is a required field
	ProjectId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BigQueryParameters) 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 BigQueryParameters) GoString() string {
	return s.String()
}

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

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

// SetDataSetRegion sets the DataSetRegion field's value.
func (s *BigQueryParameters) SetDataSetRegion(v string) *BigQueryParameters {
	s.DataSetRegion = &v
	return s
}

// SetProjectId sets the ProjectId field's value.
func (s *BigQueryParameters) SetProjectId(v string) *BigQueryParameters {
	s.ProjectId = &v
	return s
}

// The options that determine the bin count of a histogram.
type BinCountOptions struct {
	_ struct{} `type:"structure"`

	// The options that determine the bin count value.
	Value *int64 `type:"integer"`
}

// 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 BinCountOptions) 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 BinCountOptions) GoString() string {
	return s.String()
}

// SetValue sets the Value field's value.
func (s *BinCountOptions) SetValue(v int64) *BinCountOptions {
	s.Value = &v
	return s
}

// The options that determine the bin width of a histogram.
type BinWidthOptions struct {
	_ struct{} `type:"structure"`

	// The options that determine the bin count limit.
	BinCountLimit *int64 `type:"long"`

	// The options that determine the bin width value.
	Value *float64 `type:"double"`
}

// 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 BinWidthOptions) 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 BinWidthOptions) GoString() string {
	return s.String()
}

// SetBinCountLimit sets the BinCountLimit field's value.
func (s *BinWidthOptions) SetBinCountLimit(v int64) *BinWidthOptions {
	s.BinCountLimit = &v
	return s
}

// SetValue sets the Value field's value.
func (s *BinWidthOptions) SetValue(v float64) *BinWidthOptions {
	s.Value = &v
	return s
}

// The configuration of a body section.
type BodySectionConfiguration struct {
	_ struct{} `type:"structure"`

	// The configuration of content in a body section.
	//
	// Content is a required field
	Content *BodySectionContent `type:"structure" required:"true"`

	// The configuration of a page break for a section.
	PageBreakConfiguration *SectionPageBreakConfiguration `type:"structure"`

	// Describes the configurations that are required to declare a section as repeating.
	RepeatConfiguration *BodySectionRepeatConfiguration `type:"structure"`

	// The unique identifier of a body section.
	//
	// SectionId is a required field
	SectionId *string `min:"1" type:"string" required:"true"`

	// The style options of a body section.
	Style *SectionStyle `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 BodySectionConfiguration) 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 BodySectionConfiguration) GoString() string {
	return s.String()
}

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

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

// SetContent sets the Content field's value.
func (s *BodySectionConfiguration) SetContent(v *BodySectionContent) *BodySectionConfiguration {
	s.Content = v
	return s
}

// SetPageBreakConfiguration sets the PageBreakConfiguration field's value.
func (s *BodySectionConfiguration) SetPageBreakConfiguration(v *SectionPageBreakConfiguration) *BodySectionConfiguration {
	s.PageBreakConfiguration = v
	return s
}

// SetRepeatConfiguration sets the RepeatConfiguration field's value.
func (s *BodySectionConfiguration) SetRepeatConfiguration(v *BodySectionRepeatConfiguration) *BodySectionConfiguration {
	s.RepeatConfiguration = v
	return s
}

// SetSectionId sets the SectionId field's value.
func (s *BodySectionConfiguration) SetSectionId(v string) *BodySectionConfiguration {
	s.SectionId = &v
	return s
}

// SetStyle sets the Style field's value.
func (s *BodySectionConfiguration) SetStyle(v *SectionStyle) *BodySectionConfiguration {
	s.Style = v
	return s
}

// The configuration of content in a body section.
type BodySectionContent struct {
	_ struct{} `type:"structure"`

	// The layout configuration of a body section.
	Layout *SectionLayoutConfiguration `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 BodySectionContent) 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 BodySectionContent) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BodySectionContent) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BodySectionContent"}
	if s.Layout != nil {
		if err := s.Layout.Validate(); err != nil {
			invalidParams.AddNested("Layout", err.(request.ErrInvalidParams))
		}
	}

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

// SetLayout sets the Layout field's value.
func (s *BodySectionContent) SetLayout(v *SectionLayoutConfiguration) *BodySectionContent {
	s.Layout = v
	return s
}

// Describes the Category dataset column and constraints for the dynamic values
// used to repeat the contents of a section.
type BodySectionDynamicCategoryDimensionConfiguration struct {
	_ struct{} `type:"structure"`

	// A column of a data set.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// Number of values to use from the column for repetition.
	Limit *int64 `min:"1" type:"integer"`

	// Sort criteria on the column values that you use for repetition.
	SortByMetrics []*ColumnSort `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 BodySectionDynamicCategoryDimensionConfiguration) 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 BodySectionDynamicCategoryDimensionConfiguration) GoString() string {
	return s.String()
}

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

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

// SetColumn sets the Column field's value.
func (s *BodySectionDynamicCategoryDimensionConfiguration) SetColumn(v *ColumnIdentifier) *BodySectionDynamicCategoryDimensionConfiguration {
	s.Column = v
	return s
}

// SetLimit sets the Limit field's value.
func (s *BodySectionDynamicCategoryDimensionConfiguration) SetLimit(v int64) *BodySectionDynamicCategoryDimensionConfiguration {
	s.Limit = &v
	return s
}

// SetSortByMetrics sets the SortByMetrics field's value.
func (s *BodySectionDynamicCategoryDimensionConfiguration) SetSortByMetrics(v []*ColumnSort) *BodySectionDynamicCategoryDimensionConfiguration {
	s.SortByMetrics = v
	return s
}

// Describes the Numeric dataset column and constraints for the dynamic values
// used to repeat the contents of a section.
type BodySectionDynamicNumericDimensionConfiguration struct {
	_ struct{} `type:"structure"`

	// A column of a data set.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// Number of values to use from the column for repetition.
	Limit *int64 `min:"1" type:"integer"`

	// Sort criteria on the column values that you use for repetition.
	SortByMetrics []*ColumnSort `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 BodySectionDynamicNumericDimensionConfiguration) 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 BodySectionDynamicNumericDimensionConfiguration) GoString() string {
	return s.String()
}

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

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

// SetColumn sets the Column field's value.
func (s *BodySectionDynamicNumericDimensionConfiguration) SetColumn(v *ColumnIdentifier) *BodySectionDynamicNumericDimensionConfiguration {
	s.Column = v
	return s
}

// SetLimit sets the Limit field's value.
func (s *BodySectionDynamicNumericDimensionConfiguration) SetLimit(v int64) *BodySectionDynamicNumericDimensionConfiguration {
	s.Limit = &v
	return s
}

// SetSortByMetrics sets the SortByMetrics field's value.
func (s *BodySectionDynamicNumericDimensionConfiguration) SetSortByMetrics(v []*ColumnSort) *BodySectionDynamicNumericDimensionConfiguration {
	s.SortByMetrics = v
	return s
}

// Describes the configurations that are required to declare a section as repeating.
type BodySectionRepeatConfiguration struct {
	_ struct{} `type:"structure"`

	// List of BodySectionRepeatDimensionConfiguration values that describe the
	// dataset column and constraints for the column used to repeat the contents
	// of a section.
	DimensionConfigurations []*BodySectionRepeatDimensionConfiguration `type:"list"`

	// List of visuals to exclude from repetition in repeating sections. The visuals
	// will render identically, and ignore the repeating configurations in all repeating
	// instances.
	NonRepeatingVisuals []*string `type:"list"`

	// Page break configuration to apply for each repeating instance.
	PageBreakConfiguration *BodySectionRepeatPageBreakConfiguration `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 BodySectionRepeatConfiguration) 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 BodySectionRepeatConfiguration) GoString() string {
	return s.String()
}

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

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

// SetDimensionConfigurations sets the DimensionConfigurations field's value.
func (s *BodySectionRepeatConfiguration) SetDimensionConfigurations(v []*BodySectionRepeatDimensionConfiguration) *BodySectionRepeatConfiguration {
	s.DimensionConfigurations = v
	return s
}

// SetNonRepeatingVisuals sets the NonRepeatingVisuals field's value.
func (s *BodySectionRepeatConfiguration) SetNonRepeatingVisuals(v []*string) *BodySectionRepeatConfiguration {
	s.NonRepeatingVisuals = v
	return s
}

// SetPageBreakConfiguration sets the PageBreakConfiguration field's value.
func (s *BodySectionRepeatConfiguration) SetPageBreakConfiguration(v *BodySectionRepeatPageBreakConfiguration) *BodySectionRepeatConfiguration {
	s.PageBreakConfiguration = v
	return s
}

// Describes the dataset column and constraints for the dynamic values used
// to repeat the contents of a section. The dataset column is either Category
// or Numeric column configuration
type BodySectionRepeatDimensionConfiguration struct {
	_ struct{} `type:"structure"`

	// Describes the Category dataset column and constraints around the dynamic
	// values that will be used in repeating the section contents.
	DynamicCategoryDimensionConfiguration *BodySectionDynamicCategoryDimensionConfiguration `type:"structure"`

	// Describes the Numeric dataset column and constraints around the dynamic values
	// used to repeat the contents of a section.
	DynamicNumericDimensionConfiguration *BodySectionDynamicNumericDimensionConfiguration `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 BodySectionRepeatDimensionConfiguration) 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 BodySectionRepeatDimensionConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BodySectionRepeatDimensionConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BodySectionRepeatDimensionConfiguration"}
	if s.DynamicCategoryDimensionConfiguration != nil {
		if err := s.DynamicCategoryDimensionConfiguration.Validate(); err != nil {
			invalidParams.AddNested("DynamicCategoryDimensionConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.DynamicNumericDimensionConfiguration != nil {
		if err := s.DynamicNumericDimensionConfiguration.Validate(); err != nil {
			invalidParams.AddNested("DynamicNumericDimensionConfiguration", err.(request.ErrInvalidParams))
		}
	}

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

// SetDynamicCategoryDimensionConfiguration sets the DynamicCategoryDimensionConfiguration field's value.
func (s *BodySectionRepeatDimensionConfiguration) SetDynamicCategoryDimensionConfiguration(v *BodySectionDynamicCategoryDimensionConfiguration) *BodySectionRepeatDimensionConfiguration {
	s.DynamicCategoryDimensionConfiguration = v
	return s
}

// SetDynamicNumericDimensionConfiguration sets the DynamicNumericDimensionConfiguration field's value.
func (s *BodySectionRepeatDimensionConfiguration) SetDynamicNumericDimensionConfiguration(v *BodySectionDynamicNumericDimensionConfiguration) *BodySectionRepeatDimensionConfiguration {
	s.DynamicNumericDimensionConfiguration = v
	return s
}

// The page break configuration to apply for each repeating instance.
type BodySectionRepeatPageBreakConfiguration struct {
	_ struct{} `type:"structure"`

	// The configuration of a page break after a section.
	After *SectionAfterPageBreak `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 BodySectionRepeatPageBreakConfiguration) 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 BodySectionRepeatPageBreakConfiguration) GoString() string {
	return s.String()
}

// SetAfter sets the After field's value.
func (s *BodySectionRepeatPageBreakConfiguration) SetAfter(v *SectionAfterPageBreak) *BodySectionRepeatPageBreakConfiguration {
	s.After = v
	return s
}

// The bookmarks configuration of an embedded dashboard.
type BookmarksConfigurations struct {
	_ struct{} `type:"structure"`

	// A Boolean value that determines whether a user can bookmark an embedded dashboard.
	//
	// Enabled is a required field
	Enabled *bool `type:"boolean" 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 BookmarksConfigurations) 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 BookmarksConfigurations) GoString() string {
	return s.String()
}

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

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

// SetEnabled sets the Enabled field's value.
func (s *BookmarksConfigurations) SetEnabled(v bool) *BookmarksConfigurations {
	s.Enabled = &v
	return s
}

// The display options for tile borders for visuals.
type BorderStyle struct {
	_ struct{} `type:"structure"`

	// The option to enable display of borders for visuals.
	Show *bool `type:"boolean"`
}

// 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 BorderStyle) 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 BorderStyle) GoString() string {
	return s.String()
}

// SetShow sets the Show field's value.
func (s *BorderStyle) SetShow(v bool) *BorderStyle {
	s.Show = &v
	return s
}

// The aggregated field well for a box plot.
type BoxPlotAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The group by field well of a box plot chart. Values are grouped based on
	// group by fields.
	GroupBy []*DimensionField `type:"list"`

	// The value field well of a box plot chart. Values are aggregated based on
	// group by fields.
	Values []*MeasureField `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 BoxPlotAggregatedFieldWells) 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 BoxPlotAggregatedFieldWells) GoString() string {
	return s.String()
}

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

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

// SetGroupBy sets the GroupBy field's value.
func (s *BoxPlotAggregatedFieldWells) SetGroupBy(v []*DimensionField) *BoxPlotAggregatedFieldWells {
	s.GroupBy = v
	return s
}

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

// The configuration of a BoxPlotVisual.
type BoxPlotChartConfiguration struct {
	_ struct{} `type:"structure"`

	// The box plot chart options for a box plot visual
	BoxPlotOptions *BoxPlotOptions `type:"structure"`

	// The label display options (grid line, range, scale, axis step) of a box plot
	// category.
	CategoryAxis *AxisDisplayOptions `type:"structure"`

	// The label options (label text, label visibility and sort Icon visibility)
	// of a box plot category.
	CategoryLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The field wells of the visual.
	FieldWells *BoxPlotFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The options for the legend setup of a visual.
	Legend *LegendOptions `type:"structure"`

	// The label display options (grid line, range, scale, axis step) of a box plot
	// category.
	PrimaryYAxisDisplayOptions *AxisDisplayOptions `type:"structure"`

	// The label options (label text, label visibility and sort icon visibility)
	// of a box plot value.
	PrimaryYAxisLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The reference line setup of the visual.
	ReferenceLines []*ReferenceLine `type:"list"`

	// The sort configuration of a BoxPlotVisual.
	SortConfiguration *BoxPlotSortConfiguration `type:"structure"`

	// The tooltip display setup of the visual.
	Tooltip *TooltipOptions `type:"structure"`

	// The palette (chart color) display setup of the visual.
	VisualPalette *VisualPalette `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 BoxPlotChartConfiguration) 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 BoxPlotChartConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BoxPlotChartConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BoxPlotChartConfiguration"}
	if s.CategoryLabelOptions != nil {
		if err := s.CategoryLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("CategoryLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.PrimaryYAxisLabelOptions != nil {
		if err := s.PrimaryYAxisLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("PrimaryYAxisLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.ReferenceLines != nil {
		for i, v := range s.ReferenceLines {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReferenceLines", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.SortConfiguration != nil {
		if err := s.SortConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SortConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Tooltip != nil {
		if err := s.Tooltip.Validate(); err != nil {
			invalidParams.AddNested("Tooltip", err.(request.ErrInvalidParams))
		}
	}
	if s.VisualPalette != nil {
		if err := s.VisualPalette.Validate(); err != nil {
			invalidParams.AddNested("VisualPalette", err.(request.ErrInvalidParams))
		}
	}

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

// SetBoxPlotOptions sets the BoxPlotOptions field's value.
func (s *BoxPlotChartConfiguration) SetBoxPlotOptions(v *BoxPlotOptions) *BoxPlotChartConfiguration {
	s.BoxPlotOptions = v
	return s
}

// SetCategoryAxis sets the CategoryAxis field's value.
func (s *BoxPlotChartConfiguration) SetCategoryAxis(v *AxisDisplayOptions) *BoxPlotChartConfiguration {
	s.CategoryAxis = v
	return s
}

// SetCategoryLabelOptions sets the CategoryLabelOptions field's value.
func (s *BoxPlotChartConfiguration) SetCategoryLabelOptions(v *ChartAxisLabelOptions) *BoxPlotChartConfiguration {
	s.CategoryLabelOptions = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *BoxPlotChartConfiguration) SetFieldWells(v *BoxPlotFieldWells) *BoxPlotChartConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *BoxPlotChartConfiguration) SetInteractions(v *VisualInteractionOptions) *BoxPlotChartConfiguration {
	s.Interactions = v
	return s
}

// SetLegend sets the Legend field's value.
func (s *BoxPlotChartConfiguration) SetLegend(v *LegendOptions) *BoxPlotChartConfiguration {
	s.Legend = v
	return s
}

// SetPrimaryYAxisDisplayOptions sets the PrimaryYAxisDisplayOptions field's value.
func (s *BoxPlotChartConfiguration) SetPrimaryYAxisDisplayOptions(v *AxisDisplayOptions) *BoxPlotChartConfiguration {
	s.PrimaryYAxisDisplayOptions = v
	return s
}

// SetPrimaryYAxisLabelOptions sets the PrimaryYAxisLabelOptions field's value.
func (s *BoxPlotChartConfiguration) SetPrimaryYAxisLabelOptions(v *ChartAxisLabelOptions) *BoxPlotChartConfiguration {
	s.PrimaryYAxisLabelOptions = v
	return s
}

// SetReferenceLines sets the ReferenceLines field's value.
func (s *BoxPlotChartConfiguration) SetReferenceLines(v []*ReferenceLine) *BoxPlotChartConfiguration {
	s.ReferenceLines = v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *BoxPlotChartConfiguration) SetSortConfiguration(v *BoxPlotSortConfiguration) *BoxPlotChartConfiguration {
	s.SortConfiguration = v
	return s
}

// SetTooltip sets the Tooltip field's value.
func (s *BoxPlotChartConfiguration) SetTooltip(v *TooltipOptions) *BoxPlotChartConfiguration {
	s.Tooltip = v
	return s
}

// SetVisualPalette sets the VisualPalette field's value.
func (s *BoxPlotChartConfiguration) SetVisualPalette(v *VisualPalette) *BoxPlotChartConfiguration {
	s.VisualPalette = v
	return s
}

// The field wells of a BoxPlotVisual.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type BoxPlotFieldWells struct {
	_ struct{} `type:"structure"`

	// The aggregated field wells of a box plot.
	BoxPlotAggregatedFieldWells *BoxPlotAggregatedFieldWells `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 BoxPlotFieldWells) 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 BoxPlotFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BoxPlotFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BoxPlotFieldWells"}
	if s.BoxPlotAggregatedFieldWells != nil {
		if err := s.BoxPlotAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("BoxPlotAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

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

// SetBoxPlotAggregatedFieldWells sets the BoxPlotAggregatedFieldWells field's value.
func (s *BoxPlotFieldWells) SetBoxPlotAggregatedFieldWells(v *BoxPlotAggregatedFieldWells) *BoxPlotFieldWells {
	s.BoxPlotAggregatedFieldWells = v
	return s
}

// The options of a box plot visual.
type BoxPlotOptions struct {
	_ struct{} `type:"structure"`

	// Determines the visibility of all data points of the box plot.
	AllDataPointsVisibility *string `type:"string" enum:"Visibility"`

	// Determines the visibility of the outlier in a box plot.
	OutlierVisibility *string `type:"string" enum:"Visibility"`

	// The style options of the box plot.
	StyleOptions *BoxPlotStyleOptions `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 BoxPlotOptions) 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 BoxPlotOptions) GoString() string {
	return s.String()
}

// SetAllDataPointsVisibility sets the AllDataPointsVisibility field's value.
func (s *BoxPlotOptions) SetAllDataPointsVisibility(v string) *BoxPlotOptions {
	s.AllDataPointsVisibility = &v
	return s
}

// SetOutlierVisibility sets the OutlierVisibility field's value.
func (s *BoxPlotOptions) SetOutlierVisibility(v string) *BoxPlotOptions {
	s.OutlierVisibility = &v
	return s
}

// SetStyleOptions sets the StyleOptions field's value.
func (s *BoxPlotOptions) SetStyleOptions(v *BoxPlotStyleOptions) *BoxPlotOptions {
	s.StyleOptions = v
	return s
}

// The sort configuration of a BoxPlotVisual.
type BoxPlotSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The sort configuration of a group by fields.
	CategorySort []*FieldSortOptions `type:"list"`

	// The pagination configuration of a table visual or box plot.
	PaginationConfiguration *PaginationConfiguration `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 BoxPlotSortConfiguration) 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 BoxPlotSortConfiguration) GoString() string {
	return s.String()
}

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

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

// SetCategorySort sets the CategorySort field's value.
func (s *BoxPlotSortConfiguration) SetCategorySort(v []*FieldSortOptions) *BoxPlotSortConfiguration {
	s.CategorySort = v
	return s
}

// SetPaginationConfiguration sets the PaginationConfiguration field's value.
func (s *BoxPlotSortConfiguration) SetPaginationConfiguration(v *PaginationConfiguration) *BoxPlotSortConfiguration {
	s.PaginationConfiguration = v
	return s
}

// The style options of the box plot.
type BoxPlotStyleOptions struct {
	_ struct{} `type:"structure"`

	// The fill styles (solid, transparent) of the box plot.
	FillStyle *string `type:"string" enum:"BoxPlotFillStyle"`
}

// 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 BoxPlotStyleOptions) 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 BoxPlotStyleOptions) GoString() string {
	return s.String()
}

// SetFillStyle sets the FillStyle field's value.
func (s *BoxPlotStyleOptions) SetFillStyle(v string) *BoxPlotStyleOptions {
	s.FillStyle = &v
	return s
}

// A box plot.
//
// For more information, see Using box plots (https://docs.aws.amazon.com/quicksight/latest/user/box-plots.html)
// in the Amazon QuickSight User Guide.
type BoxPlotVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration settings of the visual.
	ChartConfiguration *BoxPlotChartConfiguration `type:"structure"`

	// The column hierarchy that is used during drill-downs and drill-ups.
	ColumnHierarchies []*ColumnHierarchy `type:"list"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers..
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BoxPlotVisual) 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 BoxPlotVisual) GoString() string {
	return s.String()
}

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

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

// SetActions sets the Actions field's value.
func (s *BoxPlotVisual) SetActions(v []*VisualCustomAction) *BoxPlotVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *BoxPlotVisual) SetChartConfiguration(v *BoxPlotChartConfiguration) *BoxPlotVisual {
	s.ChartConfiguration = v
	return s
}

// SetColumnHierarchies sets the ColumnHierarchies field's value.
func (s *BoxPlotVisual) SetColumnHierarchies(v []*ColumnHierarchy) *BoxPlotVisual {
	s.ColumnHierarchies = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *BoxPlotVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *BoxPlotVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *BoxPlotVisual) SetTitle(v *VisualTitleLabelOptions) *BoxPlotVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *BoxPlotVisual) SetVisualId(v string) *BoxPlotVisual {
	s.VisualId = &v
	return s
}

// A calculated column for a dataset.
type CalculatedColumn struct {
	_ struct{} `type:"structure"`

	// A unique ID to identify a calculated column. During a dataset update, if
	// the column ID of a calculated column matches that of an existing calculated
	// column, Amazon QuickSight preserves the existing calculated column.
	//
	// ColumnId is a required field
	ColumnId *string `min:"1" type:"string" required:"true"`

	// Column name.
	//
	// ColumnName is a required field
	ColumnName *string `min:"1" type:"string" required:"true"`

	// An expression that defines the calculated column.
	//
	// Expression is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CalculatedColumn's
	// String and GoString methods.
	//
	// Expression is a required field
	Expression *string `min:"1" type:"string" required:"true" sensitive:"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 CalculatedColumn) 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 CalculatedColumn) GoString() string {
	return s.String()
}

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

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

// SetColumnId sets the ColumnId field's value.
func (s *CalculatedColumn) SetColumnId(v string) *CalculatedColumn {
	s.ColumnId = &v
	return s
}

// SetColumnName sets the ColumnName field's value.
func (s *CalculatedColumn) SetColumnName(v string) *CalculatedColumn {
	s.ColumnName = &v
	return s
}

// SetExpression sets the Expression field's value.
func (s *CalculatedColumn) SetExpression(v string) *CalculatedColumn {
	s.Expression = &v
	return s
}

// The calculated field of an analysis.
type CalculatedField struct {
	_ struct{} `type:"structure"`

	// The data set that is used in this calculated field.
	//
	// DataSetIdentifier is a required field
	DataSetIdentifier *string `min:"1" type:"string" required:"true"`

	// The expression of the calculated field.
	//
	// Expression is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CalculatedField's
	// String and GoString methods.
	//
	// Expression is a required field
	Expression *string `min:"1" type:"string" required:"true" sensitive:"true"`

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

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CalculatedField) 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 CalculatedField) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CalculatedField) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CalculatedField"}
	if s.DataSetIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetIdentifier"))
	}
	if s.DataSetIdentifier != nil && len(*s.DataSetIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetIdentifier", 1))
	}
	if s.Expression == nil {
		invalidParams.Add(request.NewErrParamRequired("Expression"))
	}
	if s.Expression != nil && len(*s.Expression) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Expression", 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
}

// SetDataSetIdentifier sets the DataSetIdentifier field's value.
func (s *CalculatedField) SetDataSetIdentifier(v string) *CalculatedField {
	s.DataSetIdentifier = &v
	return s
}

// SetExpression sets the Expression field's value.
func (s *CalculatedField) SetExpression(v string) *CalculatedField {
	s.Expression = &v
	return s
}

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

// The table calculation measure field for pivot tables.
type CalculatedMeasureField struct {
	_ struct{} `type:"structure"`

	// The expression in the table calculation.
	//
	// Expression is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CalculatedMeasureField's
	// String and GoString methods.
	//
	// Expression is a required field
	Expression *string `min:"1" type:"string" required:"true" sensitive:"true"`

	// The custom field ID.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CalculatedMeasureField) 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 CalculatedMeasureField) GoString() string {
	return s.String()
}

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

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

// SetExpression sets the Expression field's value.
func (s *CalculatedMeasureField) SetExpression(v string) *CalculatedMeasureField {
	s.Expression = &v
	return s
}

// SetFieldId sets the FieldId field's value.
func (s *CalculatedMeasureField) SetFieldId(v string) *CalculatedMeasureField {
	s.FieldId = &v
	return s
}

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

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dataset used in the ingestion.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" type:"string" required:"true"`

	// An ID for the ingestion.
	//
	// IngestionId is a required field
	IngestionId *string `location:"uri" locationName:"IngestionId" 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 CancelIngestionInput) 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 CancelIngestionInput) GoString() string {
	return s.String()
}

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

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CancelIngestionInput) SetAwsAccountId(v string) *CancelIngestionInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *CancelIngestionInput) SetDataSetId(v string) *CancelIngestionInput {
	s.DataSetId = &v
	return s
}

// SetIngestionId sets the IngestionId field's value.
func (s *CancelIngestionInput) SetIngestionId(v string) *CancelIngestionInput {
	s.IngestionId = &v
	return s
}

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

	// The Amazon Resource Name (ARN) for the data ingestion.
	Arn *string `type:"string"`

	// An ID for the ingestion.
	IngestionId *string `min:"1" type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 CancelIngestionOutput) 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 CancelIngestionOutput) GoString() string {
	return s.String()
}

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

// SetIngestionId sets the IngestionId field's value.
func (s *CancelIngestionOutput) SetIngestionId(v string) *CancelIngestionOutput {
	s.IngestionId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CancelIngestionOutput) SetRequestId(v string) *CancelIngestionOutput {
	s.RequestId = &v
	return s
}

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

// The values that are displayed in a control can be configured to only show
// values that are valid based on what's selected in other controls.
type CascadingControlConfiguration struct {
	_ struct{} `type:"structure"`

	// A list of source controls that determine the values that are used in the
	// current control.
	SourceControls []*CascadingControlSource `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 CascadingControlConfiguration) 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 CascadingControlConfiguration) GoString() string {
	return s.String()
}

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

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

// SetSourceControls sets the SourceControls field's value.
func (s *CascadingControlConfiguration) SetSourceControls(v []*CascadingControlSource) *CascadingControlConfiguration {
	s.SourceControls = v
	return s
}

// The source controls that are used in a CascadingControlConfiguration.
type CascadingControlSource struct {
	_ struct{} `type:"structure"`

	// The column identifier that determines which column to look up for the source
	// sheet control.
	ColumnToMatch *ColumnIdentifier `type:"structure"`

	// The source sheet control ID of a CascadingControlSource.
	SourceSheetControlId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CascadingControlSource) 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 CascadingControlSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CascadingControlSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CascadingControlSource"}
	if s.ColumnToMatch != nil {
		if err := s.ColumnToMatch.Validate(); err != nil {
			invalidParams.AddNested("ColumnToMatch", err.(request.ErrInvalidParams))
		}
	}

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

// SetColumnToMatch sets the ColumnToMatch field's value.
func (s *CascadingControlSource) SetColumnToMatch(v *ColumnIdentifier) *CascadingControlSource {
	s.ColumnToMatch = v
	return s
}

// SetSourceSheetControlId sets the SourceSheetControlId field's value.
func (s *CascadingControlSource) SetSourceSheetControlId(v string) *CascadingControlSource {
	s.SourceSheetControlId = &v
	return s
}

// A transform operation that casts a column to a different type.
type CastColumnTypeOperation struct {
	_ struct{} `type:"structure"`

	// Column name.
	//
	// ColumnName is a required field
	ColumnName *string `min:"1" type:"string" required:"true"`

	// When casting a column from string to datetime type, you can supply a string
	// in a format supported by Amazon QuickSight to denote the source data format.
	Format *string `type:"string"`

	// New column data type.
	//
	// NewColumnType is a required field
	NewColumnType *string `type:"string" required:"true" enum:"ColumnDataType"`

	// The sub data type of the new column. Sub types are only available for decimal
	// columns that are part of a SPICE dataset.
	SubType *string `type:"string" enum:"ColumnDataSubType"`
}

// 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 CastColumnTypeOperation) 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 CastColumnTypeOperation) GoString() string {
	return s.String()
}

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

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

// SetColumnName sets the ColumnName field's value.
func (s *CastColumnTypeOperation) SetColumnName(v string) *CastColumnTypeOperation {
	s.ColumnName = &v
	return s
}

// SetFormat sets the Format field's value.
func (s *CastColumnTypeOperation) SetFormat(v string) *CastColumnTypeOperation {
	s.Format = &v
	return s
}

// SetNewColumnType sets the NewColumnType field's value.
func (s *CastColumnTypeOperation) SetNewColumnType(v string) *CastColumnTypeOperation {
	s.NewColumnType = &v
	return s
}

// SetSubType sets the SubType field's value.
func (s *CastColumnTypeOperation) SetSubType(v string) *CastColumnTypeOperation {
	s.SubType = &v
	return s
}

// The dimension type field with categorical type columns..
type CategoricalDimensionField struct {
	_ struct{} `type:"structure"`

	// The column that is used in the CategoricalDimensionField.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The custom field ID.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The format configuration of the field.
	FormatConfiguration *StringFormatConfiguration `type:"structure"`

	// The custom hierarchy ID.
	HierarchyId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CategoricalDimensionField) 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 CategoricalDimensionField) GoString() string {
	return s.String()
}

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

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

// SetColumn sets the Column field's value.
func (s *CategoricalDimensionField) SetColumn(v *ColumnIdentifier) *CategoricalDimensionField {
	s.Column = v
	return s
}

// SetFieldId sets the FieldId field's value.
func (s *CategoricalDimensionField) SetFieldId(v string) *CategoricalDimensionField {
	s.FieldId = &v
	return s
}

// SetFormatConfiguration sets the FormatConfiguration field's value.
func (s *CategoricalDimensionField) SetFormatConfiguration(v *StringFormatConfiguration) *CategoricalDimensionField {
	s.FormatConfiguration = v
	return s
}

// SetHierarchyId sets the HierarchyId field's value.
func (s *CategoricalDimensionField) SetHierarchyId(v string) *CategoricalDimensionField {
	s.HierarchyId = &v
	return s
}

// The measure type field with categorical type columns.
type CategoricalMeasureField struct {
	_ struct{} `type:"structure"`

	// The aggregation function of the measure field.
	AggregationFunction *string `type:"string" enum:"CategoricalAggregationFunction"`

	// The column that is used in the CategoricalMeasureField.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The custom field ID.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The format configuration of the field.
	FormatConfiguration *StringFormatConfiguration `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 CategoricalMeasureField) 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 CategoricalMeasureField) GoString() string {
	return s.String()
}

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

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

// SetAggregationFunction sets the AggregationFunction field's value.
func (s *CategoricalMeasureField) SetAggregationFunction(v string) *CategoricalMeasureField {
	s.AggregationFunction = &v
	return s
}

// SetColumn sets the Column field's value.
func (s *CategoricalMeasureField) SetColumn(v *ColumnIdentifier) *CategoricalMeasureField {
	s.Column = v
	return s
}

// SetFieldId sets the FieldId field's value.
func (s *CategoricalMeasureField) SetFieldId(v string) *CategoricalMeasureField {
	s.FieldId = &v
	return s
}

// SetFormatConfiguration sets the FormatConfiguration field's value.
func (s *CategoricalMeasureField) SetFormatConfiguration(v *StringFormatConfiguration) *CategoricalMeasureField {
	s.FormatConfiguration = v
	return s
}

// The category drill down filter.
type CategoryDrillDownFilter struct {
	_ struct{} `type:"structure"`

	// A list of the string inputs that are the values of the category drill down
	// filter.
	//
	// CategoryValues is a required field
	CategoryValues []*string `type:"list" required:"true"`

	// The column that the filter is applied to.
	//
	// Column is a required field
	Column *ColumnIdentifier `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 CategoryDrillDownFilter) 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 CategoryDrillDownFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CategoryDrillDownFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CategoryDrillDownFilter"}
	if s.CategoryValues == nil {
		invalidParams.Add(request.NewErrParamRequired("CategoryValues"))
	}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}

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

// SetCategoryValues sets the CategoryValues field's value.
func (s *CategoryDrillDownFilter) SetCategoryValues(v []*string) *CategoryDrillDownFilter {
	s.CategoryValues = v
	return s
}

// SetColumn sets the Column field's value.
func (s *CategoryDrillDownFilter) SetColumn(v *ColumnIdentifier) *CategoryDrillDownFilter {
	s.Column = v
	return s
}

// A CategoryFilter filters text values.
//
// For more information, see Adding text filters (https://docs.aws.amazon.com/quicksight/latest/user/add-a-text-filter-data-prep.html)
// in the Amazon QuickSight User Guide.
type CategoryFilter struct {
	_ struct{} `type:"structure"`

	// The column that the filter is applied to.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The configuration for a CategoryFilter.
	//
	// Configuration is a required field
	Configuration *CategoryFilterConfiguration `type:"structure" required:"true"`

	// The default configurations for the associated controls. This applies only
	// for filters that are scoped to multiple sheets.
	DefaultFilterControlConfiguration *DefaultFilterControlConfiguration `type:"structure"`

	// An identifier that uniquely identifies a filter within a dashboard, analysis,
	// or template.
	//
	// FilterId is a required field
	FilterId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CategoryFilter) 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 CategoryFilter) GoString() string {
	return s.String()
}

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

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

// SetColumn sets the Column field's value.
func (s *CategoryFilter) SetColumn(v *ColumnIdentifier) *CategoryFilter {
	s.Column = v
	return s
}

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

// SetDefaultFilterControlConfiguration sets the DefaultFilterControlConfiguration field's value.
func (s *CategoryFilter) SetDefaultFilterControlConfiguration(v *DefaultFilterControlConfiguration) *CategoryFilter {
	s.DefaultFilterControlConfiguration = v
	return s
}

// SetFilterId sets the FilterId field's value.
func (s *CategoryFilter) SetFilterId(v string) *CategoryFilter {
	s.FilterId = &v
	return s
}

// The configuration for a CategoryFilter.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type CategoryFilterConfiguration struct {
	_ struct{} `type:"structure"`

	// A custom filter that filters based on a single value. This filter can be
	// partially matched.
	CustomFilterConfiguration *CustomFilterConfiguration `type:"structure"`

	// A list of custom filter values. In the Amazon QuickSight console, this filter
	// type is called a custom filter list.
	CustomFilterListConfiguration *CustomFilterListConfiguration `type:"structure"`

	// A list of filter configurations. In the Amazon QuickSight console, this filter
	// type is called a filter list.
	FilterListConfiguration *FilterListConfiguration `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 CategoryFilterConfiguration) 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 CategoryFilterConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CategoryFilterConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CategoryFilterConfiguration"}
	if s.CustomFilterConfiguration != nil {
		if err := s.CustomFilterConfiguration.Validate(); err != nil {
			invalidParams.AddNested("CustomFilterConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.CustomFilterListConfiguration != nil {
		if err := s.CustomFilterListConfiguration.Validate(); err != nil {
			invalidParams.AddNested("CustomFilterListConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.FilterListConfiguration != nil {
		if err := s.FilterListConfiguration.Validate(); err != nil {
			invalidParams.AddNested("FilterListConfiguration", err.(request.ErrInvalidParams))
		}
	}

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

// SetCustomFilterConfiguration sets the CustomFilterConfiguration field's value.
func (s *CategoryFilterConfiguration) SetCustomFilterConfiguration(v *CustomFilterConfiguration) *CategoryFilterConfiguration {
	s.CustomFilterConfiguration = v
	return s
}

// SetCustomFilterListConfiguration sets the CustomFilterListConfiguration field's value.
func (s *CategoryFilterConfiguration) SetCustomFilterListConfiguration(v *CustomFilterListConfiguration) *CategoryFilterConfiguration {
	s.CustomFilterListConfiguration = v
	return s
}

// SetFilterListConfiguration sets the FilterListConfiguration field's value.
func (s *CategoryFilterConfiguration) SetFilterListConfiguration(v *FilterListConfiguration) *CategoryFilterConfiguration {
	s.FilterListConfiguration = v
	return s
}

// A CategoryInnerFilter filters text values for the NestedFilter.
type CategoryInnerFilter struct {
	_ struct{} `type:"structure"`

	// A column of a data set.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The configuration for a CategoryFilter.
	//
	// This is a union type structure. For this structure to be valid, only one
	// of the attributes can be defined.
	//
	// Configuration is a required field
	Configuration *CategoryFilterConfiguration `type:"structure" required:"true"`

	// The default configuration for all dependent controls of the filter.
	DefaultFilterControlConfiguration *DefaultFilterControlConfiguration `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 CategoryInnerFilter) 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 CategoryInnerFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CategoryInnerFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CategoryInnerFilter"}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.Configuration == nil {
		invalidParams.Add(request.NewErrParamRequired("Configuration"))
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}
	if s.Configuration != nil {
		if err := s.Configuration.Validate(); err != nil {
			invalidParams.AddNested("Configuration", err.(request.ErrInvalidParams))
		}
	}
	if s.DefaultFilterControlConfiguration != nil {
		if err := s.DefaultFilterControlConfiguration.Validate(); err != nil {
			invalidParams.AddNested("DefaultFilterControlConfiguration", err.(request.ErrInvalidParams))
		}
	}

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

// SetColumn sets the Column field's value.
func (s *CategoryInnerFilter) SetColumn(v *ColumnIdentifier) *CategoryInnerFilter {
	s.Column = v
	return s
}

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

// SetDefaultFilterControlConfiguration sets the DefaultFilterControlConfiguration field's value.
func (s *CategoryInnerFilter) SetDefaultFilterControlConfiguration(v *DefaultFilterControlConfiguration) *CategoryInnerFilter {
	s.DefaultFilterControlConfiguration = v
	return s
}

// A structure that represents the cell value synonym.
type CellValueSynonym struct {
	_ struct{} `type:"structure"`

	// The cell value.
	CellValue *string `type:"string"`

	// Other names or aliases for the cell value.
	Synonyms []*string `type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CellValueSynonym) 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 CellValueSynonym) GoString() string {
	return s.String()
}

// SetCellValue sets the CellValue field's value.
func (s *CellValueSynonym) SetCellValue(v string) *CellValueSynonym {
	s.CellValue = &v
	return s
}

// SetSynonyms sets the Synonyms field's value.
func (s *CellValueSynonym) SetSynonyms(v []*string) *CellValueSynonym {
	s.Synonyms = v
	return s
}

// The label options for an axis on a chart.
type ChartAxisLabelOptions struct {
	_ struct{} `type:"structure"`

	// The label options for a chart axis.
	AxisLabelOptions []*AxisLabelOptions `type:"list"`

	// The visibility configuration of the sort icon on a chart's axis label.
	SortIconVisibility *string `type:"string" enum:"Visibility"`

	// The visibility of an axis label on a chart. Choose one of the following options:
	//
	//    * VISIBLE: Shows the axis.
	//
	//    * HIDDEN: Hides the axis.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 ChartAxisLabelOptions) 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 ChartAxisLabelOptions) GoString() string {
	return s.String()
}

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

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

// SetAxisLabelOptions sets the AxisLabelOptions field's value.
func (s *ChartAxisLabelOptions) SetAxisLabelOptions(v []*AxisLabelOptions) *ChartAxisLabelOptions {
	s.AxisLabelOptions = v
	return s
}

// SetSortIconVisibility sets the SortIconVisibility field's value.
func (s *ChartAxisLabelOptions) SetSortIconVisibility(v string) *ChartAxisLabelOptions {
	s.SortIconVisibility = &v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *ChartAxisLabelOptions) SetVisibility(v string) *ChartAxisLabelOptions {
	s.Visibility = &v
	return s
}

// The cluster marker that is a part of the cluster marker configuration.
type ClusterMarker struct {
	_ struct{} `type:"structure"`

	// The simple cluster marker of the cluster marker.
	SimpleClusterMarker *SimpleClusterMarker `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 ClusterMarker) 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 ClusterMarker) GoString() string {
	return s.String()
}

// SetSimpleClusterMarker sets the SimpleClusterMarker field's value.
func (s *ClusterMarker) SetSimpleClusterMarker(v *SimpleClusterMarker) *ClusterMarker {
	s.SimpleClusterMarker = v
	return s
}

// The cluster marker configuration of the geospatial map selected point style.
type ClusterMarkerConfiguration struct {
	_ struct{} `type:"structure"`

	// The cluster marker that is a part of the cluster marker configuration.
	ClusterMarker *ClusterMarker `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 ClusterMarkerConfiguration) 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 ClusterMarkerConfiguration) GoString() string {
	return s.String()
}

// SetClusterMarker sets the ClusterMarker field's value.
func (s *ClusterMarkerConfiguration) SetClusterMarker(v *ClusterMarker) *ClusterMarkerConfiguration {
	s.ClusterMarker = v
	return s
}

// A structure that represents a collective constant.
type CollectiveConstant struct {
	_ struct{} `type:"structure"`

	// A list of values for the collective constant.
	ValueList []*string `type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CollectiveConstant) 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 CollectiveConstant) GoString() string {
	return s.String()
}

// SetValueList sets the ValueList field's value.
func (s *CollectiveConstant) SetValueList(v []*string) *CollectiveConstant {
	s.ValueList = v
	return s
}

// The definition for a CollectiveConstantEntry.
type CollectiveConstantEntry struct {
	_ struct{} `type:"structure"`

	// The ConstantType of a CollectiveConstantEntry.
	ConstantType *string `type:"string" enum:"ConstantType"`

	// The value of a CollectiveConstantEntry.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CollectiveConstantEntry) 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 CollectiveConstantEntry) GoString() string {
	return s.String()
}

// SetConstantType sets the ConstantType field's value.
func (s *CollectiveConstantEntry) SetConstantType(v string) *CollectiveConstantEntry {
	s.ConstantType = &v
	return s
}

// SetValue sets the Value field's value.
func (s *CollectiveConstantEntry) SetValue(v string) *CollectiveConstantEntry {
	s.Value = &v
	return s
}

// Determines the color scale that is applied to the visual.
type ColorScale struct {
	_ struct{} `type:"structure"`

	// Determines the color fill type.
	//
	// ColorFillType is a required field
	ColorFillType *string `type:"string" required:"true" enum:"ColorFillType"`

	// Determines the list of colors that are applied to the visual.
	//
	// Colors is a required field
	Colors []*DataColor `min:"2" type:"list" required:"true"`

	// Determines the color that is applied to null values.
	NullValueColor *DataColor `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 ColorScale) 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 ColorScale) GoString() string {
	return s.String()
}

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

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

// SetColorFillType sets the ColorFillType field's value.
func (s *ColorScale) SetColorFillType(v string) *ColorScale {
	s.ColorFillType = &v
	return s
}

// SetColors sets the Colors field's value.
func (s *ColorScale) SetColors(v []*DataColor) *ColorScale {
	s.Colors = v
	return s
}

// SetNullValueColor sets the NullValueColor field's value.
func (s *ColorScale) SetNullValueColor(v *DataColor) *ColorScale {
	s.NullValueColor = v
	return s
}

// The color configurations for a column.
type ColorsConfiguration struct {
	_ struct{} `type:"structure"`

	// A list of up to 50 custom colors.
	CustomColors []*CustomColor `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 ColorsConfiguration) 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 ColorsConfiguration) GoString() string {
	return s.String()
}

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

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

// SetCustomColors sets the CustomColors field's value.
func (s *ColorsConfiguration) SetCustomColors(v []*CustomColor) *ColorsConfiguration {
	s.CustomColors = v
	return s
}

// The general configuration of a column.
type ColumnConfiguration struct {
	_ struct{} `type:"structure"`

	// The color configurations of the column.
	ColorsConfiguration *ColorsConfiguration `type:"structure"`

	// The column.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The format configuration of a column.
	FormatConfiguration *FormatConfiguration `type:"structure"`

	// The role of the column.
	Role *string `type:"string" enum:"ColumnRole"`
}

// 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 ColumnConfiguration) 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 ColumnConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ColumnConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ColumnConfiguration"}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.ColorsConfiguration != nil {
		if err := s.ColorsConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ColorsConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}
	if s.FormatConfiguration != nil {
		if err := s.FormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("FormatConfiguration", err.(request.ErrInvalidParams))
		}
	}

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

// SetColorsConfiguration sets the ColorsConfiguration field's value.
func (s *ColumnConfiguration) SetColorsConfiguration(v *ColorsConfiguration) *ColumnConfiguration {
	s.ColorsConfiguration = v
	return s
}

// SetColumn sets the Column field's value.
func (s *ColumnConfiguration) SetColumn(v *ColumnIdentifier) *ColumnConfiguration {
	s.Column = v
	return s
}

// SetFormatConfiguration sets the FormatConfiguration field's value.
func (s *ColumnConfiguration) SetFormatConfiguration(v *FormatConfiguration) *ColumnConfiguration {
	s.FormatConfiguration = v
	return s
}

// SetRole sets the Role field's value.
func (s *ColumnConfiguration) SetRole(v string) *ColumnConfiguration {
	s.Role = &v
	return s
}

// Metadata that contains a description for a column.
type ColumnDescription struct {
	_ struct{} `type:"structure"`

	// The text of a description for a column.
	Text *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnDescription) 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 ColumnDescription) GoString() string {
	return s.String()
}

// SetText sets the Text field's value.
func (s *ColumnDescription) SetText(v string) *ColumnDescription {
	s.Text = &v
	return s
}

// Groupings of columns that work together in certain Amazon QuickSight features.
// This is a variant type structure. For this structure to be valid, only one
// of the attributes can be non-null.
type ColumnGroup struct {
	_ struct{} `type:"structure"`

	// Geospatial column group that denotes a hierarchy.
	GeoSpatialColumnGroup *GeoSpatialColumnGroup `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 ColumnGroup) 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 ColumnGroup) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ColumnGroup) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ColumnGroup"}
	if s.GeoSpatialColumnGroup != nil {
		if err := s.GeoSpatialColumnGroup.Validate(); err != nil {
			invalidParams.AddNested("GeoSpatialColumnGroup", err.(request.ErrInvalidParams))
		}
	}

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

// SetGeoSpatialColumnGroup sets the GeoSpatialColumnGroup field's value.
func (s *ColumnGroup) SetGeoSpatialColumnGroup(v *GeoSpatialColumnGroup) *ColumnGroup {
	s.GeoSpatialColumnGroup = v
	return s
}

// A structure describing the name, data type, and geographic role of the columns.
type ColumnGroupColumnSchema struct {
	_ struct{} `type:"structure"`

	// The name of the column group's column schema.
	Name *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnGroupColumnSchema) 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 ColumnGroupColumnSchema) GoString() string {
	return s.String()
}

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

// The column group schema.
type ColumnGroupSchema struct {
	_ struct{} `type:"structure"`

	// A structure containing the list of schemas for column group columns.
	ColumnGroupColumnSchemaList []*ColumnGroupColumnSchema `type:"list"`

	// The name of the column group schema.
	Name *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnGroupSchema) 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 ColumnGroupSchema) GoString() string {
	return s.String()
}

// SetColumnGroupColumnSchemaList sets the ColumnGroupColumnSchemaList field's value.
func (s *ColumnGroupSchema) SetColumnGroupColumnSchemaList(v []*ColumnGroupColumnSchema) *ColumnGroupSchema {
	s.ColumnGroupColumnSchemaList = v
	return s
}

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

// The option that determines the hierarchy of the fields for a visual element.
type ColumnHierarchy struct {
	_ struct{} `type:"structure"`

	// The option that determines the hierarchy of any DateTime fields.
	DateTimeHierarchy *DateTimeHierarchy `type:"structure"`

	// The option that determines the hierarchy of the fields that are built within
	// a visual's field wells. These fields can't be duplicated to other visuals.
	ExplicitHierarchy *ExplicitHierarchy `type:"structure"`

	// The option that determines the hierarchy of the fields that are defined during
	// data preparation. These fields are available to use in any analysis that
	// uses the data source.
	PredefinedHierarchy *PredefinedHierarchy `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 ColumnHierarchy) 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 ColumnHierarchy) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ColumnHierarchy) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ColumnHierarchy"}
	if s.DateTimeHierarchy != nil {
		if err := s.DateTimeHierarchy.Validate(); err != nil {
			invalidParams.AddNested("DateTimeHierarchy", err.(request.ErrInvalidParams))
		}
	}
	if s.ExplicitHierarchy != nil {
		if err := s.ExplicitHierarchy.Validate(); err != nil {
			invalidParams.AddNested("ExplicitHierarchy", err.(request.ErrInvalidParams))
		}
	}
	if s.PredefinedHierarchy != nil {
		if err := s.PredefinedHierarchy.Validate(); err != nil {
			invalidParams.AddNested("PredefinedHierarchy", err.(request.ErrInvalidParams))
		}
	}

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

// SetDateTimeHierarchy sets the DateTimeHierarchy field's value.
func (s *ColumnHierarchy) SetDateTimeHierarchy(v *DateTimeHierarchy) *ColumnHierarchy {
	s.DateTimeHierarchy = v
	return s
}

// SetExplicitHierarchy sets the ExplicitHierarchy field's value.
func (s *ColumnHierarchy) SetExplicitHierarchy(v *ExplicitHierarchy) *ColumnHierarchy {
	s.ExplicitHierarchy = v
	return s
}

// SetPredefinedHierarchy sets the PredefinedHierarchy field's value.
func (s *ColumnHierarchy) SetPredefinedHierarchy(v *PredefinedHierarchy) *ColumnHierarchy {
	s.PredefinedHierarchy = v
	return s
}

// A column of a data set.
type ColumnIdentifier struct {
	_ struct{} `type:"structure"`

	// The name of the column.
	//
	// ColumnName is a required field
	ColumnName *string `min:"1" type:"string" required:"true"`

	// The data set that the column belongs to.
	//
	// DataSetIdentifier is a required field
	DataSetIdentifier *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnIdentifier) 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 ColumnIdentifier) GoString() string {
	return s.String()
}

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

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

// SetColumnName sets the ColumnName field's value.
func (s *ColumnIdentifier) SetColumnName(v string) *ColumnIdentifier {
	s.ColumnName = &v
	return s
}

// SetDataSetIdentifier sets the DataSetIdentifier field's value.
func (s *ColumnIdentifier) SetDataSetIdentifier(v string) *ColumnIdentifier {
	s.DataSetIdentifier = &v
	return s
}

// A rule defined to grant access on one or more restricted columns. Each dataset
// can have multiple rules. To create a restricted column, you add it to one
// or more rules. Each rule must contain at least one column and at least one
// user or group. To be able to see a restricted column, a user or group needs
// to be added to a rule for that column.
type ColumnLevelPermissionRule struct {
	_ struct{} `type:"structure"`

	// An array of column names.
	ColumnNames []*string `min:"1" type:"list"`

	// An array of Amazon Resource Names (ARNs) for Amazon QuickSight users or groups.
	Principals []*string `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnLevelPermissionRule) 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 ColumnLevelPermissionRule) GoString() string {
	return s.String()
}

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

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

// SetColumnNames sets the ColumnNames field's value.
func (s *ColumnLevelPermissionRule) SetColumnNames(v []*string) *ColumnLevelPermissionRule {
	s.ColumnNames = v
	return s
}

// SetPrincipals sets the Principals field's value.
func (s *ColumnLevelPermissionRule) SetPrincipals(v []*string) *ColumnLevelPermissionRule {
	s.Principals = v
	return s
}

// The column schema.
type ColumnSchema struct {
	_ struct{} `type:"structure"`

	// The data type of the column schema.
	DataType *string `type:"string"`

	// The geographic role of the column schema.
	GeographicRole *string `type:"string"`

	// The name of the column schema.
	Name *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnSchema) 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 ColumnSchema) GoString() string {
	return s.String()
}

// SetDataType sets the DataType field's value.
func (s *ColumnSchema) SetDataType(v string) *ColumnSchema {
	s.DataType = &v
	return s
}

// SetGeographicRole sets the GeographicRole field's value.
func (s *ColumnSchema) SetGeographicRole(v string) *ColumnSchema {
	s.GeographicRole = &v
	return s
}

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

// The sort configuration for a column that is not used in a field well.
type ColumnSort struct {
	_ struct{} `type:"structure"`

	// The aggregation function that is defined in the column sort.
	AggregationFunction *AggregationFunction `type:"structure"`

	// The sort direction.
	//
	// Direction is a required field
	Direction *string `type:"string" required:"true" enum:"SortDirection"`

	// A column of a data set.
	//
	// SortBy is a required field
	SortBy *ColumnIdentifier `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 ColumnSort) 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 ColumnSort) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ColumnSort) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ColumnSort"}
	if s.Direction == nil {
		invalidParams.Add(request.NewErrParamRequired("Direction"))
	}
	if s.SortBy == nil {
		invalidParams.Add(request.NewErrParamRequired("SortBy"))
	}
	if s.SortBy != nil {
		if err := s.SortBy.Validate(); err != nil {
			invalidParams.AddNested("SortBy", err.(request.ErrInvalidParams))
		}
	}

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

// SetAggregationFunction sets the AggregationFunction field's value.
func (s *ColumnSort) SetAggregationFunction(v *AggregationFunction) *ColumnSort {
	s.AggregationFunction = v
	return s
}

// SetDirection sets the Direction field's value.
func (s *ColumnSort) SetDirection(v string) *ColumnSort {
	s.Direction = &v
	return s
}

// SetSortBy sets the SortBy field's value.
func (s *ColumnSort) SetSortBy(v *ColumnIdentifier) *ColumnSort {
	s.SortBy = v
	return s
}

// A tag for a column in a TagColumnOperation (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_TagColumnOperation.html)
// structure. This is a variant type structure. For this structure to be valid,
// only one of the attributes can be non-null.
type ColumnTag struct {
	_ struct{} `type:"structure"`

	// A description for a column.
	ColumnDescription *ColumnDescription `type:"structure"`

	// A geospatial role for a column.
	ColumnGeographicRole *string `type:"string" enum:"GeoSpatialDataRole"`
}

// 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 ColumnTag) 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 ColumnTag) GoString() string {
	return s.String()
}

// SetColumnDescription sets the ColumnDescription field's value.
func (s *ColumnTag) SetColumnDescription(v *ColumnDescription) *ColumnTag {
	s.ColumnDescription = v
	return s
}

// SetColumnGeographicRole sets the ColumnGeographicRole field's value.
func (s *ColumnTag) SetColumnGeographicRole(v string) *ColumnTag {
	s.ColumnGeographicRole = &v
	return s
}

// The tooltip item for the columns that are not part of a field well.
type ColumnTooltipItem struct {
	_ struct{} `type:"structure"`

	// The aggregation function of the column tooltip item.
	Aggregation *AggregationFunction `type:"structure"`

	// The target column of the tooltip item.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The label of the tooltip item.
	Label *string `type:"string"`

	// Determines the target of the column tooltip item in a combo chart visual.
	TooltipTarget *string `type:"string" enum:"TooltipTarget"`

	// The visibility of the tooltip item.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 ColumnTooltipItem) 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 ColumnTooltipItem) GoString() string {
	return s.String()
}

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

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

// SetAggregation sets the Aggregation field's value.
func (s *ColumnTooltipItem) SetAggregation(v *AggregationFunction) *ColumnTooltipItem {
	s.Aggregation = v
	return s
}

// SetColumn sets the Column field's value.
func (s *ColumnTooltipItem) SetColumn(v *ColumnIdentifier) *ColumnTooltipItem {
	s.Column = v
	return s
}

// SetLabel sets the Label field's value.
func (s *ColumnTooltipItem) SetLabel(v string) *ColumnTooltipItem {
	s.Label = &v
	return s
}

// SetTooltipTarget sets the TooltipTarget field's value.
func (s *ColumnTooltipItem) SetTooltipTarget(v string) *ColumnTooltipItem {
	s.TooltipTarget = &v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *ColumnTooltipItem) SetVisibility(v string) *ColumnTooltipItem {
	s.Visibility = &v
	return s
}

// The aggregated field wells of a combo chart.
type ComboChartAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The aggregated BarValues field well of a combo chart.
	BarValues []*MeasureField `type:"list"`

	// The aggregated category field wells of a combo chart.
	Category []*DimensionField `type:"list"`

	// The aggregated colors field well of a combo chart.
	Colors []*DimensionField `type:"list"`

	// The aggregated LineValues field well of a combo chart.
	LineValues []*MeasureField `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 ComboChartAggregatedFieldWells) 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 ComboChartAggregatedFieldWells) GoString() string {
	return s.String()
}

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

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

// SetBarValues sets the BarValues field's value.
func (s *ComboChartAggregatedFieldWells) SetBarValues(v []*MeasureField) *ComboChartAggregatedFieldWells {
	s.BarValues = v
	return s
}

// SetCategory sets the Category field's value.
func (s *ComboChartAggregatedFieldWells) SetCategory(v []*DimensionField) *ComboChartAggregatedFieldWells {
	s.Category = v
	return s
}

// SetColors sets the Colors field's value.
func (s *ComboChartAggregatedFieldWells) SetColors(v []*DimensionField) *ComboChartAggregatedFieldWells {
	s.Colors = v
	return s
}

// SetLineValues sets the LineValues field's value.
func (s *ComboChartAggregatedFieldWells) SetLineValues(v []*MeasureField) *ComboChartAggregatedFieldWells {
	s.LineValues = v
	return s
}

// The configuration of a ComboChartVisual.
type ComboChartConfiguration struct {
	_ struct{} `type:"structure"`

	// The options that determine if visual data labels are displayed.
	//
	// The data label options for a bar in a combo chart.
	BarDataLabels *DataLabelOptions `type:"structure"`

	// Determines the bar arrangement in a combo chart. The following are valid
	// values in this structure:
	//
	//    * CLUSTERED: For clustered bar combo charts.
	//
	//    * STACKED: For stacked bar combo charts.
	//
	//    * STACKED_PERCENT: Do not use. If you use this value, the operation returns
	//    a validation error.
	BarsArrangement *string `type:"string" enum:"BarsArrangement"`

	// The category axis of a combo chart.
	CategoryAxis *AxisDisplayOptions `type:"structure"`

	// The label options (label text, label visibility, and sort icon visibility)
	// of a combo chart category (group/color) field well.
	CategoryLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The label options (label text, label visibility, and sort icon visibility)
	// of a combo chart's color field well.
	ColorLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The field wells of the visual.
	FieldWells *ComboChartFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The legend display setup of the visual.
	Legend *LegendOptions `type:"structure"`

	// The options that determine if visual data labels are displayed.
	//
	// The data label options for a line in a combo chart.
	LineDataLabels *DataLabelOptions `type:"structure"`

	// The label display options (grid line, range, scale, and axis step) of a combo
	// chart's primary y-axis (bar) field well.
	PrimaryYAxisDisplayOptions *AxisDisplayOptions `type:"structure"`

	// The label options (label text, label visibility, and sort icon visibility)
	// of a combo chart's primary y-axis (bar) field well.
	PrimaryYAxisLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The reference line setup of the visual.
	ReferenceLines []*ReferenceLine `type:"list"`

	// The label display options (grid line, range, scale, axis step) of a combo
	// chart's secondary y-axis (line) field well.
	SecondaryYAxisDisplayOptions *AxisDisplayOptions `type:"structure"`

	// The label options (label text, label visibility, and sort icon visibility)
	// of a combo chart's secondary y-axis(line) field well.
	SecondaryYAxisLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The settings of a chart's single axis configuration.
	SingleAxisOptions *SingleAxisOptions `type:"structure"`

	// The sort configuration of a ComboChartVisual.
	SortConfiguration *ComboChartSortConfiguration `type:"structure"`

	// The legend display setup of the visual.
	Tooltip *TooltipOptions `type:"structure"`

	// The palette (chart color) display setup of the visual.
	VisualPalette *VisualPalette `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 ComboChartConfiguration) 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 ComboChartConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ComboChartConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ComboChartConfiguration"}
	if s.BarDataLabels != nil {
		if err := s.BarDataLabels.Validate(); err != nil {
			invalidParams.AddNested("BarDataLabels", err.(request.ErrInvalidParams))
		}
	}
	if s.CategoryLabelOptions != nil {
		if err := s.CategoryLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("CategoryLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.ColorLabelOptions != nil {
		if err := s.ColorLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("ColorLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.LineDataLabels != nil {
		if err := s.LineDataLabels.Validate(); err != nil {
			invalidParams.AddNested("LineDataLabels", err.(request.ErrInvalidParams))
		}
	}
	if s.PrimaryYAxisLabelOptions != nil {
		if err := s.PrimaryYAxisLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("PrimaryYAxisLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.ReferenceLines != nil {
		for i, v := range s.ReferenceLines {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReferenceLines", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.SecondaryYAxisLabelOptions != nil {
		if err := s.SecondaryYAxisLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("SecondaryYAxisLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.SingleAxisOptions != nil {
		if err := s.SingleAxisOptions.Validate(); err != nil {
			invalidParams.AddNested("SingleAxisOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.SortConfiguration != nil {
		if err := s.SortConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SortConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Tooltip != nil {
		if err := s.Tooltip.Validate(); err != nil {
			invalidParams.AddNested("Tooltip", err.(request.ErrInvalidParams))
		}
	}
	if s.VisualPalette != nil {
		if err := s.VisualPalette.Validate(); err != nil {
			invalidParams.AddNested("VisualPalette", err.(request.ErrInvalidParams))
		}
	}

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

// SetBarDataLabels sets the BarDataLabels field's value.
func (s *ComboChartConfiguration) SetBarDataLabels(v *DataLabelOptions) *ComboChartConfiguration {
	s.BarDataLabels = v
	return s
}

// SetBarsArrangement sets the BarsArrangement field's value.
func (s *ComboChartConfiguration) SetBarsArrangement(v string) *ComboChartConfiguration {
	s.BarsArrangement = &v
	return s
}

// SetCategoryAxis sets the CategoryAxis field's value.
func (s *ComboChartConfiguration) SetCategoryAxis(v *AxisDisplayOptions) *ComboChartConfiguration {
	s.CategoryAxis = v
	return s
}

// SetCategoryLabelOptions sets the CategoryLabelOptions field's value.
func (s *ComboChartConfiguration) SetCategoryLabelOptions(v *ChartAxisLabelOptions) *ComboChartConfiguration {
	s.CategoryLabelOptions = v
	return s
}

// SetColorLabelOptions sets the ColorLabelOptions field's value.
func (s *ComboChartConfiguration) SetColorLabelOptions(v *ChartAxisLabelOptions) *ComboChartConfiguration {
	s.ColorLabelOptions = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *ComboChartConfiguration) SetFieldWells(v *ComboChartFieldWells) *ComboChartConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *ComboChartConfiguration) SetInteractions(v *VisualInteractionOptions) *ComboChartConfiguration {
	s.Interactions = v
	return s
}

// SetLegend sets the Legend field's value.
func (s *ComboChartConfiguration) SetLegend(v *LegendOptions) *ComboChartConfiguration {
	s.Legend = v
	return s
}

// SetLineDataLabels sets the LineDataLabels field's value.
func (s *ComboChartConfiguration) SetLineDataLabels(v *DataLabelOptions) *ComboChartConfiguration {
	s.LineDataLabels = v
	return s
}

// SetPrimaryYAxisDisplayOptions sets the PrimaryYAxisDisplayOptions field's value.
func (s *ComboChartConfiguration) SetPrimaryYAxisDisplayOptions(v *AxisDisplayOptions) *ComboChartConfiguration {
	s.PrimaryYAxisDisplayOptions = v
	return s
}

// SetPrimaryYAxisLabelOptions sets the PrimaryYAxisLabelOptions field's value.
func (s *ComboChartConfiguration) SetPrimaryYAxisLabelOptions(v *ChartAxisLabelOptions) *ComboChartConfiguration {
	s.PrimaryYAxisLabelOptions = v
	return s
}

// SetReferenceLines sets the ReferenceLines field's value.
func (s *ComboChartConfiguration) SetReferenceLines(v []*ReferenceLine) *ComboChartConfiguration {
	s.ReferenceLines = v
	return s
}

// SetSecondaryYAxisDisplayOptions sets the SecondaryYAxisDisplayOptions field's value.
func (s *ComboChartConfiguration) SetSecondaryYAxisDisplayOptions(v *AxisDisplayOptions) *ComboChartConfiguration {
	s.SecondaryYAxisDisplayOptions = v
	return s
}

// SetSecondaryYAxisLabelOptions sets the SecondaryYAxisLabelOptions field's value.
func (s *ComboChartConfiguration) SetSecondaryYAxisLabelOptions(v *ChartAxisLabelOptions) *ComboChartConfiguration {
	s.SecondaryYAxisLabelOptions = v
	return s
}

// SetSingleAxisOptions sets the SingleAxisOptions field's value.
func (s *ComboChartConfiguration) SetSingleAxisOptions(v *SingleAxisOptions) *ComboChartConfiguration {
	s.SingleAxisOptions = v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *ComboChartConfiguration) SetSortConfiguration(v *ComboChartSortConfiguration) *ComboChartConfiguration {
	s.SortConfiguration = v
	return s
}

// SetTooltip sets the Tooltip field's value.
func (s *ComboChartConfiguration) SetTooltip(v *TooltipOptions) *ComboChartConfiguration {
	s.Tooltip = v
	return s
}

// SetVisualPalette sets the VisualPalette field's value.
func (s *ComboChartConfiguration) SetVisualPalette(v *VisualPalette) *ComboChartConfiguration {
	s.VisualPalette = v
	return s
}

// The field wells of the visual.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type ComboChartFieldWells struct {
	_ struct{} `type:"structure"`

	// The aggregated field wells of a combo chart. Combo charts only have aggregated
	// field wells. Columns in a combo chart are aggregated by category.
	ComboChartAggregatedFieldWells *ComboChartAggregatedFieldWells `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 ComboChartFieldWells) 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 ComboChartFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ComboChartFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ComboChartFieldWells"}
	if s.ComboChartAggregatedFieldWells != nil {
		if err := s.ComboChartAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("ComboChartAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

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

// SetComboChartAggregatedFieldWells sets the ComboChartAggregatedFieldWells field's value.
func (s *ComboChartFieldWells) SetComboChartAggregatedFieldWells(v *ComboChartAggregatedFieldWells) *ComboChartFieldWells {
	s.ComboChartAggregatedFieldWells = v
	return s
}

// The sort configuration of a ComboChartVisual.
type ComboChartSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The item limit configuration for the category field well of a combo chart.
	CategoryItemsLimit *ItemsLimitConfiguration `type:"structure"`

	// The sort configuration of the category field well in a combo chart.
	CategorySort []*FieldSortOptions `type:"list"`

	// The item limit configuration of the color field well in a combo chart.
	ColorItemsLimit *ItemsLimitConfiguration `type:"structure"`

	// The sort configuration of the color field well in a combo chart.
	ColorSort []*FieldSortOptions `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 ComboChartSortConfiguration) 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 ComboChartSortConfiguration) GoString() string {
	return s.String()
}

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

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

// SetCategoryItemsLimit sets the CategoryItemsLimit field's value.
func (s *ComboChartSortConfiguration) SetCategoryItemsLimit(v *ItemsLimitConfiguration) *ComboChartSortConfiguration {
	s.CategoryItemsLimit = v
	return s
}

// SetCategorySort sets the CategorySort field's value.
func (s *ComboChartSortConfiguration) SetCategorySort(v []*FieldSortOptions) *ComboChartSortConfiguration {
	s.CategorySort = v
	return s
}

// SetColorItemsLimit sets the ColorItemsLimit field's value.
func (s *ComboChartSortConfiguration) SetColorItemsLimit(v *ItemsLimitConfiguration) *ComboChartSortConfiguration {
	s.ColorItemsLimit = v
	return s
}

// SetColorSort sets the ColorSort field's value.
func (s *ComboChartSortConfiguration) SetColorSort(v []*FieldSortOptions) *ComboChartSortConfiguration {
	s.ColorSort = v
	return s
}

// A combo chart.
//
// The ComboChartVisual includes stacked bar combo charts and clustered bar
// combo charts
//
// For more information, see Using combo charts (https://docs.aws.amazon.com/quicksight/latest/user/combo-charts.html)
// in the Amazon QuickSight User Guide.
type ComboChartVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration settings of the visual.
	ChartConfiguration *ComboChartConfiguration `type:"structure"`

	// The column hierarchy that is used during drill-downs and drill-ups.
	ColumnHierarchies []*ColumnHierarchy `type:"list"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers.
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ComboChartVisual) 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 ComboChartVisual) GoString() string {
	return s.String()
}

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

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

// SetActions sets the Actions field's value.
func (s *ComboChartVisual) SetActions(v []*VisualCustomAction) *ComboChartVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *ComboChartVisual) SetChartConfiguration(v *ComboChartConfiguration) *ComboChartVisual {
	s.ChartConfiguration = v
	return s
}

// SetColumnHierarchies sets the ColumnHierarchies field's value.
func (s *ComboChartVisual) SetColumnHierarchies(v []*ColumnHierarchy) *ComboChartVisual {
	s.ColumnHierarchies = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *ComboChartVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *ComboChartVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *ComboChartVisual) SetTitle(v *VisualTitleLabelOptions) *ComboChartVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *ComboChartVisual) SetVisualId(v string) *ComboChartVisual {
	s.VisualId = &v
	return s
}

// A structure that represents a comparative order.
type ComparativeOrder struct {
	_ struct{} `type:"structure"`

	// The list of columns to be used in the ordering.
	SpecifedOrder []*string `type:"list"`

	// The treat of undefined specified values. Valid values for this structure
	// are LEAST and MOST.
	TreatUndefinedSpecifiedValues *string `type:"string" enum:"UndefinedSpecifiedValueType"`

	// The ordering type for a column. Valid values for this structure are GREATER_IS_BETTER,
	// LESSER_IS_BETTER and SPECIFIED.
	UseOrdering *string `type:"string" enum:"ColumnOrderingType"`
}

// 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 ComparativeOrder) 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 ComparativeOrder) GoString() string {
	return s.String()
}

// SetSpecifedOrder sets the SpecifedOrder field's value.
func (s *ComparativeOrder) SetSpecifedOrder(v []*string) *ComparativeOrder {
	s.SpecifedOrder = v
	return s
}

// SetTreatUndefinedSpecifiedValues sets the TreatUndefinedSpecifiedValues field's value.
func (s *ComparativeOrder) SetTreatUndefinedSpecifiedValues(v string) *ComparativeOrder {
	s.TreatUndefinedSpecifiedValues = &v
	return s
}

// SetUseOrdering sets the UseOrdering field's value.
func (s *ComparativeOrder) SetUseOrdering(v string) *ComparativeOrder {
	s.UseOrdering = &v
	return s
}

// The comparison display configuration of a KPI or gauge chart.
type ComparisonConfiguration struct {
	_ struct{} `type:"structure"`

	// The format of the comparison.
	ComparisonFormat *ComparisonFormatConfiguration `type:"structure"`

	// The method of the comparison. Choose from the following options:
	//
	//    * DIFFERENCE
	//
	//    * PERCENT_DIFFERENCE
	//
	//    * PERCENT
	ComparisonMethod *string `type:"string" enum:"ComparisonMethod"`
}

// 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 ComparisonConfiguration) 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 ComparisonConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ComparisonConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ComparisonConfiguration"}
	if s.ComparisonFormat != nil {
		if err := s.ComparisonFormat.Validate(); err != nil {
			invalidParams.AddNested("ComparisonFormat", err.(request.ErrInvalidParams))
		}
	}

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

// SetComparisonFormat sets the ComparisonFormat field's value.
func (s *ComparisonConfiguration) SetComparisonFormat(v *ComparisonFormatConfiguration) *ComparisonConfiguration {
	s.ComparisonFormat = v
	return s
}

// SetComparisonMethod sets the ComparisonMethod field's value.
func (s *ComparisonConfiguration) SetComparisonMethod(v string) *ComparisonConfiguration {
	s.ComparisonMethod = &v
	return s
}

// The format of the comparison.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type ComparisonFormatConfiguration struct {
	_ struct{} `type:"structure"`

	// The number display format.
	NumberDisplayFormatConfiguration *NumberDisplayFormatConfiguration `type:"structure"`

	// The percentage display format.
	PercentageDisplayFormatConfiguration *PercentageDisplayFormatConfiguration `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 ComparisonFormatConfiguration) 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 ComparisonFormatConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ComparisonFormatConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ComparisonFormatConfiguration"}
	if s.NumberDisplayFormatConfiguration != nil {
		if err := s.NumberDisplayFormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("NumberDisplayFormatConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.PercentageDisplayFormatConfiguration != nil {
		if err := s.PercentageDisplayFormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("PercentageDisplayFormatConfiguration", err.(request.ErrInvalidParams))
		}
	}

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

// SetNumberDisplayFormatConfiguration sets the NumberDisplayFormatConfiguration field's value.
func (s *ComparisonFormatConfiguration) SetNumberDisplayFormatConfiguration(v *NumberDisplayFormatConfiguration) *ComparisonFormatConfiguration {
	s.NumberDisplayFormatConfiguration = v
	return s
}

// SetPercentageDisplayFormatConfiguration sets the PercentageDisplayFormatConfiguration field's value.
func (s *ComparisonFormatConfiguration) SetPercentageDisplayFormatConfiguration(v *PercentageDisplayFormatConfiguration) *ComparisonFormatConfiguration {
	s.PercentageDisplayFormatConfiguration = v
	return s
}

// The computation union that is used in an insight visual.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type Computation struct {
	_ struct{} `type:"structure"`

	// The forecast computation configuration.
	Forecast *ForecastComputation `type:"structure"`

	// The growth rate computation configuration.
	GrowthRate *GrowthRateComputation `type:"structure"`

	// The maximum and minimum computation configuration.
	MaximumMinimum *MaximumMinimumComputation `type:"structure"`

	// The metric comparison computation configuration.
	MetricComparison *MetricComparisonComputation `type:"structure"`

	// The period over period computation configuration.
	PeriodOverPeriod *PeriodOverPeriodComputation `type:"structure"`

	// The period to DataSetIdentifier computation configuration.
	PeriodToDate *PeriodToDateComputation `type:"structure"`

	// The top movers and bottom movers computation configuration.
	TopBottomMovers *TopBottomMoversComputation `type:"structure"`

	// The top ranked and bottom ranked computation configuration.
	TopBottomRanked *TopBottomRankedComputation `type:"structure"`

	// The total aggregation computation configuration.
	TotalAggregation *TotalAggregationComputation `type:"structure"`

	// The unique values computation configuration.
	UniqueValues *UniqueValuesComputation `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 Computation) 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 Computation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Computation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Computation"}
	if s.Forecast != nil {
		if err := s.Forecast.Validate(); err != nil {
			invalidParams.AddNested("Forecast", err.(request.ErrInvalidParams))
		}
	}
	if s.GrowthRate != nil {
		if err := s.GrowthRate.Validate(); err != nil {
			invalidParams.AddNested("GrowthRate", err.(request.ErrInvalidParams))
		}
	}
	if s.MaximumMinimum != nil {
		if err := s.MaximumMinimum.Validate(); err != nil {
			invalidParams.AddNested("MaximumMinimum", err.(request.ErrInvalidParams))
		}
	}
	if s.MetricComparison != nil {
		if err := s.MetricComparison.Validate(); err != nil {
			invalidParams.AddNested("MetricComparison", err.(request.ErrInvalidParams))
		}
	}
	if s.PeriodOverPeriod != nil {
		if err := s.PeriodOverPeriod.Validate(); err != nil {
			invalidParams.AddNested("PeriodOverPeriod", err.(request.ErrInvalidParams))
		}
	}
	if s.PeriodToDate != nil {
		if err := s.PeriodToDate.Validate(); err != nil {
			invalidParams.AddNested("PeriodToDate", err.(request.ErrInvalidParams))
		}
	}
	if s.TopBottomMovers != nil {
		if err := s.TopBottomMovers.Validate(); err != nil {
			invalidParams.AddNested("TopBottomMovers", err.(request.ErrInvalidParams))
		}
	}
	if s.TopBottomRanked != nil {
		if err := s.TopBottomRanked.Validate(); err != nil {
			invalidParams.AddNested("TopBottomRanked", err.(request.ErrInvalidParams))
		}
	}
	if s.TotalAggregation != nil {
		if err := s.TotalAggregation.Validate(); err != nil {
			invalidParams.AddNested("TotalAggregation", err.(request.ErrInvalidParams))
		}
	}
	if s.UniqueValues != nil {
		if err := s.UniqueValues.Validate(); err != nil {
			invalidParams.AddNested("UniqueValues", err.(request.ErrInvalidParams))
		}
	}

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

// SetForecast sets the Forecast field's value.
func (s *Computation) SetForecast(v *ForecastComputation) *Computation {
	s.Forecast = v
	return s
}

// SetGrowthRate sets the GrowthRate field's value.
func (s *Computation) SetGrowthRate(v *GrowthRateComputation) *Computation {
	s.GrowthRate = v
	return s
}

// SetMaximumMinimum sets the MaximumMinimum field's value.
func (s *Computation) SetMaximumMinimum(v *MaximumMinimumComputation) *Computation {
	s.MaximumMinimum = v
	return s
}

// SetMetricComparison sets the MetricComparison field's value.
func (s *Computation) SetMetricComparison(v *MetricComparisonComputation) *Computation {
	s.MetricComparison = v
	return s
}

// SetPeriodOverPeriod sets the PeriodOverPeriod field's value.
func (s *Computation) SetPeriodOverPeriod(v *PeriodOverPeriodComputation) *Computation {
	s.PeriodOverPeriod = v
	return s
}

// SetPeriodToDate sets the PeriodToDate field's value.
func (s *Computation) SetPeriodToDate(v *PeriodToDateComputation) *Computation {
	s.PeriodToDate = v
	return s
}

// SetTopBottomMovers sets the TopBottomMovers field's value.
func (s *Computation) SetTopBottomMovers(v *TopBottomMoversComputation) *Computation {
	s.TopBottomMovers = v
	return s
}

// SetTopBottomRanked sets the TopBottomRanked field's value.
func (s *Computation) SetTopBottomRanked(v *TopBottomRankedComputation) *Computation {
	s.TopBottomRanked = v
	return s
}

// SetTotalAggregation sets the TotalAggregation field's value.
func (s *Computation) SetTotalAggregation(v *TotalAggregationComputation) *Computation {
	s.TotalAggregation = v
	return s
}

// SetUniqueValues sets the UniqueValues field's value.
func (s *Computation) SetUniqueValues(v *UniqueValuesComputation) *Computation {
	s.UniqueValues = v
	return s
}

// A resource is already in a state that indicates an operation is happening
// that must complete before a new update can be applied.
type ConcurrentUpdatingException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	RequestId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConcurrentUpdatingException) 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 ConcurrentUpdatingException) GoString() string {
	return s.String()
}

func newErrorConcurrentUpdatingException(v protocol.ResponseMetadata) error {
	return &ConcurrentUpdatingException{
		RespMetadata: v,
	}
}

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

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

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

func (s *ConcurrentUpdatingException) 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 *ConcurrentUpdatingException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

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

// The formatting configuration for the color.
type ConditionalFormattingColor struct {
	_ struct{} `type:"structure"`

	// Formatting configuration for gradient color.
	Gradient *ConditionalFormattingGradientColor `type:"structure"`

	// Formatting configuration for solid color.
	Solid *ConditionalFormattingSolidColor `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 ConditionalFormattingColor) 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 ConditionalFormattingColor) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ConditionalFormattingColor) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ConditionalFormattingColor"}
	if s.Gradient != nil {
		if err := s.Gradient.Validate(); err != nil {
			invalidParams.AddNested("Gradient", err.(request.ErrInvalidParams))
		}
	}
	if s.Solid != nil {
		if err := s.Solid.Validate(); err != nil {
			invalidParams.AddNested("Solid", err.(request.ErrInvalidParams))
		}
	}

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

// SetGradient sets the Gradient field's value.
func (s *ConditionalFormattingColor) SetGradient(v *ConditionalFormattingGradientColor) *ConditionalFormattingColor {
	s.Gradient = v
	return s
}

// SetSolid sets the Solid field's value.
func (s *ConditionalFormattingColor) SetSolid(v *ConditionalFormattingSolidColor) *ConditionalFormattingColor {
	s.Solid = v
	return s
}

// Determines the custom condition for an icon set.
type ConditionalFormattingCustomIconCondition struct {
	_ struct{} `type:"structure"`

	// Determines the color of the icon.
	Color *string `type:"string"`

	// Determines the icon display configuration.
	DisplayConfiguration *ConditionalFormattingIconDisplayConfiguration `type:"structure"`

	// The expression that determines the condition of the icon set.
	//
	// Expression is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ConditionalFormattingCustomIconCondition's
	// String and GoString methods.
	//
	// Expression is a required field
	Expression *string `min:"1" type:"string" required:"true" sensitive:"true"`

	// Custom icon options for an icon set.
	//
	// IconOptions is a required field
	IconOptions *ConditionalFormattingCustomIconOptions `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 ConditionalFormattingCustomIconCondition) 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 ConditionalFormattingCustomIconCondition) GoString() string {
	return s.String()
}

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

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

// SetColor sets the Color field's value.
func (s *ConditionalFormattingCustomIconCondition) SetColor(v string) *ConditionalFormattingCustomIconCondition {
	s.Color = &v
	return s
}

// SetDisplayConfiguration sets the DisplayConfiguration field's value.
func (s *ConditionalFormattingCustomIconCondition) SetDisplayConfiguration(v *ConditionalFormattingIconDisplayConfiguration) *ConditionalFormattingCustomIconCondition {
	s.DisplayConfiguration = v
	return s
}

// SetExpression sets the Expression field's value.
func (s *ConditionalFormattingCustomIconCondition) SetExpression(v string) *ConditionalFormattingCustomIconCondition {
	s.Expression = &v
	return s
}

// SetIconOptions sets the IconOptions field's value.
func (s *ConditionalFormattingCustomIconCondition) SetIconOptions(v *ConditionalFormattingCustomIconOptions) *ConditionalFormattingCustomIconCondition {
	s.IconOptions = v
	return s
}

// Custom icon options for an icon set.
type ConditionalFormattingCustomIconOptions struct {
	_ struct{} `type:"structure"`

	// Determines the type of icon.
	Icon *string `type:"string" enum:"Icon"`

	// Determines the Unicode icon type.
	UnicodeIcon *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConditionalFormattingCustomIconOptions) 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 ConditionalFormattingCustomIconOptions) GoString() string {
	return s.String()
}

// SetIcon sets the Icon field's value.
func (s *ConditionalFormattingCustomIconOptions) SetIcon(v string) *ConditionalFormattingCustomIconOptions {
	s.Icon = &v
	return s
}

// SetUnicodeIcon sets the UnicodeIcon field's value.
func (s *ConditionalFormattingCustomIconOptions) SetUnicodeIcon(v string) *ConditionalFormattingCustomIconOptions {
	s.UnicodeIcon = &v
	return s
}

// Formatting configuration for gradient color.
type ConditionalFormattingGradientColor struct {
	_ struct{} `type:"structure"`

	// Determines the color.
	//
	// Color is a required field
	Color *GradientColor `type:"structure" required:"true"`

	// The expression that determines the formatting configuration for gradient
	// color.
	//
	// Expression is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ConditionalFormattingGradientColor's
	// String and GoString methods.
	//
	// Expression is a required field
	Expression *string `min:"1" type:"string" required:"true" sensitive:"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 ConditionalFormattingGradientColor) 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 ConditionalFormattingGradientColor) GoString() string {
	return s.String()
}

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

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

// SetColor sets the Color field's value.
func (s *ConditionalFormattingGradientColor) SetColor(v *GradientColor) *ConditionalFormattingGradientColor {
	s.Color = v
	return s
}

// SetExpression sets the Expression field's value.
func (s *ConditionalFormattingGradientColor) SetExpression(v string) *ConditionalFormattingGradientColor {
	s.Expression = &v
	return s
}

// The formatting configuration for the icon.
type ConditionalFormattingIcon struct {
	_ struct{} `type:"structure"`

	// Determines the custom condition for an icon set.
	CustomCondition *ConditionalFormattingCustomIconCondition `type:"structure"`

	// Formatting configuration for icon set.
	IconSet *ConditionalFormattingIconSet `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 ConditionalFormattingIcon) 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 ConditionalFormattingIcon) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ConditionalFormattingIcon) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ConditionalFormattingIcon"}
	if s.CustomCondition != nil {
		if err := s.CustomCondition.Validate(); err != nil {
			invalidParams.AddNested("CustomCondition", err.(request.ErrInvalidParams))
		}
	}
	if s.IconSet != nil {
		if err := s.IconSet.Validate(); err != nil {
			invalidParams.AddNested("IconSet", err.(request.ErrInvalidParams))
		}
	}

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

// SetCustomCondition sets the CustomCondition field's value.
func (s *ConditionalFormattingIcon) SetCustomCondition(v *ConditionalFormattingCustomIconCondition) *ConditionalFormattingIcon {
	s.CustomCondition = v
	return s
}

// SetIconSet sets the IconSet field's value.
func (s *ConditionalFormattingIcon) SetIconSet(v *ConditionalFormattingIconSet) *ConditionalFormattingIcon {
	s.IconSet = v
	return s
}

// Determines the icon display configuration.
type ConditionalFormattingIconDisplayConfiguration struct {
	_ struct{} `type:"structure"`

	// Determines the icon display configuration.
	IconDisplayOption *string `type:"string" enum:"ConditionalFormattingIconDisplayOption"`
}

// 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 ConditionalFormattingIconDisplayConfiguration) 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 ConditionalFormattingIconDisplayConfiguration) GoString() string {
	return s.String()
}

// SetIconDisplayOption sets the IconDisplayOption field's value.
func (s *ConditionalFormattingIconDisplayConfiguration) SetIconDisplayOption(v string) *ConditionalFormattingIconDisplayConfiguration {
	s.IconDisplayOption = &v
	return s
}

// Formatting configuration for icon set.
type ConditionalFormattingIconSet struct {
	_ struct{} `type:"structure"`

	// The expression that determines the formatting configuration for the icon
	// set.
	//
	// Expression is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ConditionalFormattingIconSet's
	// String and GoString methods.
	//
	// Expression is a required field
	Expression *string `min:"1" type:"string" required:"true" sensitive:"true"`

	// Determines the icon set type.
	IconSetType *string `type:"string" enum:"ConditionalFormattingIconSetType"`
}

// 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 ConditionalFormattingIconSet) 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 ConditionalFormattingIconSet) GoString() string {
	return s.String()
}

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

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

// SetExpression sets the Expression field's value.
func (s *ConditionalFormattingIconSet) SetExpression(v string) *ConditionalFormattingIconSet {
	s.Expression = &v
	return s
}

// SetIconSetType sets the IconSetType field's value.
func (s *ConditionalFormattingIconSet) SetIconSetType(v string) *ConditionalFormattingIconSet {
	s.IconSetType = &v
	return s
}

// Formatting configuration for solid color.
type ConditionalFormattingSolidColor struct {
	_ struct{} `type:"structure"`

	// Determines the color.
	Color *string `type:"string"`

	// The expression that determines the formatting configuration for solid color.
	//
	// Expression is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ConditionalFormattingSolidColor's
	// String and GoString methods.
	//
	// Expression is a required field
	Expression *string `min:"1" type:"string" required:"true" sensitive:"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 ConditionalFormattingSolidColor) 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 ConditionalFormattingSolidColor) GoString() string {
	return s.String()
}

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

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

// SetColor sets the Color field's value.
func (s *ConditionalFormattingSolidColor) SetColor(v string) *ConditionalFormattingSolidColor {
	s.Color = &v
	return s
}

// SetExpression sets the Expression field's value.
func (s *ConditionalFormattingSolidColor) SetExpression(v string) *ConditionalFormattingSolidColor {
	s.Expression = &v
	return s
}

// Updating or deleting a resource can cause an inconsistent state.
type ConflictException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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\n%s", s.Code(), s.Message(), s.String())
}

// 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
}

// The context menu options for a visual's interactions.
type ContextMenuOption struct {
	_ struct{} `type:"structure"`

	// The availability status of the context menu options. If the value of this
	// property is set to ENABLED, dashboard readers can interact with the context
	// menu.
	AvailabilityStatus *string `type:"string" enum:"DashboardBehavior"`
}

// 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 ContextMenuOption) 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 ContextMenuOption) GoString() string {
	return s.String()
}

// SetAvailabilityStatus sets the AvailabilityStatus field's value.
func (s *ContextMenuOption) SetAvailabilityStatus(v string) *ContextMenuOption {
	s.AvailabilityStatus = &v
	return s
}

// The contribution analysis visual display for a line, pie, or bar chart.
type ContributionAnalysisDefault struct {
	_ struct{} `type:"structure"`

	// The dimensions columns that are used in the contribution analysis, usually
	// a list of ColumnIdentifiers.
	//
	// ContributorDimensions is a required field
	ContributorDimensions []*ColumnIdentifier `min:"1" type:"list" required:"true"`

	// The measure field that is used in the contribution analysis.
	//
	// MeasureFieldId is a required field
	MeasureFieldId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContributionAnalysisDefault) 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 ContributionAnalysisDefault) GoString() string {
	return s.String()
}

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

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

// SetContributorDimensions sets the ContributorDimensions field's value.
func (s *ContributionAnalysisDefault) SetContributorDimensions(v []*ColumnIdentifier) *ContributionAnalysisDefault {
	s.ContributorDimensions = v
	return s
}

// SetMeasureFieldId sets the MeasureFieldId field's value.
func (s *ContributionAnalysisDefault) SetMeasureFieldId(v string) *ContributionAnalysisDefault {
	s.MeasureFieldId = &v
	return s
}

// The definition for the ContributionAnalysisFactor.
type ContributionAnalysisFactor struct {
	_ struct{} `type:"structure"`

	// The field name of the ContributionAnalysisFactor.
	FieldName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ContributionAnalysisFactor) 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 ContributionAnalysisFactor) GoString() string {
	return s.String()
}

// SetFieldName sets the FieldName field's value.
func (s *ContributionAnalysisFactor) SetFieldName(v string) *ContributionAnalysisFactor {
	s.FieldName = &v
	return s
}

// The definition for the ContributionAnalysisTimeRanges.
type ContributionAnalysisTimeRanges struct {
	_ struct{} `type:"structure"`

	// The end range for the ContributionAnalysisTimeRanges.
	EndRange *TopicIRFilterOption `type:"structure"`

	// The start range for the ContributionAnalysisTimeRanges.
	StartRange *TopicIRFilterOption `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 ContributionAnalysisTimeRanges) 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 ContributionAnalysisTimeRanges) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ContributionAnalysisTimeRanges) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ContributionAnalysisTimeRanges"}
	if s.EndRange != nil {
		if err := s.EndRange.Validate(); err != nil {
			invalidParams.AddNested("EndRange", err.(request.ErrInvalidParams))
		}
	}
	if s.StartRange != nil {
		if err := s.StartRange.Validate(); err != nil {
			invalidParams.AddNested("StartRange", err.(request.ErrInvalidParams))
		}
	}

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

// SetEndRange sets the EndRange field's value.
func (s *ContributionAnalysisTimeRanges) SetEndRange(v *TopicIRFilterOption) *ContributionAnalysisTimeRanges {
	s.EndRange = v
	return s
}

// SetStartRange sets the StartRange field's value.
func (s *ContributionAnalysisTimeRanges) SetStartRange(v *TopicIRFilterOption) *ContributionAnalysisTimeRanges {
	s.StartRange = v
	return s
}

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

	// The Amazon QuickSight customizations you're adding in the current Amazon
	// Web Services Region. You can add these to an Amazon Web Services account
	// and a QuickSight namespace.
	//
	// For example, you can add a default theme by setting AccountCustomization
	// to the midnight theme: "AccountCustomization": { "DefaultTheme": "arn:aws:quicksight::aws:theme/MIDNIGHT"
	// }. Or, you can add a custom theme by specifying "AccountCustomization": {
	// "DefaultTheme": "arn:aws:quicksight:us-west-2:111122223333:theme/bdb844d0-0fe9-4d9d-b520-0fe602d93639"
	// }.
	//
	// AccountCustomization is a required field
	AccountCustomization *AccountCustomization `type:"structure" required:"true"`

	// The ID for the Amazon Web Services account that you want to customize Amazon
	// QuickSight for.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The Amazon QuickSight namespace that you want to add customizations to.
	Namespace *string `location:"querystring" locationName:"namespace" type:"string"`

	// A list of the tags that you want to attach to this resource.
	Tags []*Tag `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateAccountCustomizationInput) 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 CreateAccountCustomizationInput) GoString() string {
	return s.String()
}

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

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

// SetAccountCustomization sets the AccountCustomization field's value.
func (s *CreateAccountCustomizationInput) SetAccountCustomization(v *AccountCustomization) *CreateAccountCustomizationInput {
	s.AccountCustomization = v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateAccountCustomizationInput) SetAwsAccountId(v string) *CreateAccountCustomizationInput {
	s.AwsAccountId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *CreateAccountCustomizationInput) SetNamespace(v string) *CreateAccountCustomizationInput {
	s.Namespace = &v
	return s
}

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

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

	// The Amazon QuickSight customizations you're adding in the current Amazon
	// Web Services Region.
	AccountCustomization *AccountCustomization `type:"structure"`

	// The Amazon Resource Name (ARN) for the customization that you created for
	// this Amazon Web Services account.
	Arn *string `type:"string"`

	// The ID for the Amazon Web Services account that you want to customize Amazon
	// QuickSight for.
	AwsAccountId *string `min:"12" type:"string"`

	// The namespace associated with the customization you're creating.
	Namespace *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 CreateAccountCustomizationOutput) 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 CreateAccountCustomizationOutput) GoString() string {
	return s.String()
}

// SetAccountCustomization sets the AccountCustomization field's value.
func (s *CreateAccountCustomizationOutput) SetAccountCustomization(v *AccountCustomization) *CreateAccountCustomizationOutput {
	s.AccountCustomization = v
	return s
}

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateAccountCustomizationOutput) SetAwsAccountId(v string) *CreateAccountCustomizationOutput {
	s.AwsAccountId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *CreateAccountCustomizationOutput) SetNamespace(v string) *CreateAccountCustomizationOutput {
	s.Namespace = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateAccountCustomizationOutput) SetRequestId(v string) *CreateAccountCustomizationOutput {
	s.RequestId = &v
	return s
}

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

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

	// The name of your Amazon QuickSight account. This name is unique over all
	// of Amazon Web Services, and it appears only when users sign in. You can't
	// change AccountName value after the Amazon QuickSight account is created.
	//
	// AccountName is a required field
	AccountName *string `min:"1" type:"string" required:"true"`

	// The name of your Active Directory. This field is required if ACTIVE_DIRECTORY
	// is the selected authentication method of the new Amazon QuickSight account.
	ActiveDirectoryName *string `type:"string"`

	// The admin group associated with your Active Directory or IAM Identity Center
	// account. Either this field or the AdminProGroup field is required if ACTIVE_DIRECTORY
	// or IAM_IDENTITY_CENTER is the selected authentication method of the new Amazon
	// QuickSight account.
	//
	// For more information about using IAM Identity Center in Amazon QuickSight,
	// see Using IAM Identity Center with Amazon QuickSight Enterprise Edition (https://docs.aws.amazon.com/quicksight/latest/user/sec-identity-management-identity-center.html)
	// in the Amazon QuickSight User Guide. For more information about using Active
	// Directory in Amazon QuickSight, see Using Active Directory with Amazon QuickSight
	// Enterprise Edition (https://docs.aws.amazon.com/quicksight/latest/user/aws-directory-service.html)
	// in the Amazon QuickSight User Guide.
	AdminGroup []*string `type:"list"`

	// The admin pro group associated with your Active Directory or IAM Identity
	// Center account. Either this field or the AdminGroup field is required if
	// ACTIVE_DIRECTORY or IAM_IDENTITY_CENTER is the selected authentication method
	// of the new Amazon QuickSight account.
	//
	// For more information about using IAM Identity Center in Amazon QuickSight,
	// see Using IAM Identity Center with Amazon QuickSight Enterprise Edition (https://docs.aws.amazon.com/quicksight/latest/user/sec-identity-management-identity-center.html)
	// in the Amazon QuickSight User Guide. For more information about using Active
	// Directory in Amazon QuickSight, see Using Active Directory with Amazon QuickSight
	// Enterprise Edition (https://docs.aws.amazon.com/quicksight/latest/user/aws-directory-service.html)
	// in the Amazon QuickSight User Guide.
	AdminProGroup []*string `type:"list"`

	// The method that you want to use to authenticate your Amazon QuickSight account.
	//
	// If you choose ACTIVE_DIRECTORY, provide an ActiveDirectoryName and an AdminGroup
	// associated with your Active Directory.
	//
	// If you choose IAM_IDENTITY_CENTER, provide an AdminGroup associated with
	// your IAM Identity Center account.
	//
	// AuthenticationMethod is a required field
	AuthenticationMethod *string `type:"string" required:"true" enum:"AuthenticationMethodOption"`

	// The author group associated with your Active Directory or IAM Identity Center
	// account.
	//
	// For more information about using IAM Identity Center in Amazon QuickSight,
	// see Using IAM Identity Center with Amazon QuickSight Enterprise Edition (https://docs.aws.amazon.com/quicksight/latest/user/sec-identity-management-identity-center.html)
	// in the Amazon QuickSight User Guide. For more information about using Active
	// Directory in Amazon QuickSight, see Using Active Directory with Amazon QuickSight
	// Enterprise Edition (https://docs.aws.amazon.com/quicksight/latest/user/aws-directory-service.html)
	// in the Amazon QuickSight User Guide.
	AuthorGroup []*string `type:"list"`

	// The author pro group associated with your Active Directory or IAM Identity
	// Center account.
	//
	// For more information about using IAM Identity Center in Amazon QuickSight,
	// see Using IAM Identity Center with Amazon QuickSight Enterprise Edition (https://docs.aws.amazon.com/quicksight/latest/user/sec-identity-management-identity-center.html)
	// in the Amazon QuickSight User Guide. For more information about using Active
	// Directory in Amazon QuickSight, see Using Active Directory with Amazon QuickSight
	// Enterprise Edition (https://docs.aws.amazon.com/quicksight/latest/user/aws-directory-service.html)
	// in the Amazon QuickSight User Guide.
	AuthorProGroup []*string `type:"list"`

	// The Amazon Web Services account ID of the account that you're using to create
	// your Amazon QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// A 10-digit phone number for the author of the Amazon QuickSight account to
	// use for future communications. This field is required if ENTERPPRISE_AND_Q
	// is the selected edition of the new Amazon QuickSight account.
	ContactNumber *string `type:"string"`

	// The ID of the Active Directory that is associated with your Amazon QuickSight
	// account.
	DirectoryId *string `type:"string"`

	// The edition of Amazon QuickSight that you want your account to have. Currently,
	// you can choose from ENTERPRISE or ENTERPRISE_AND_Q.
	//
	// If you choose ENTERPRISE_AND_Q, the following parameters are required:
	//
	//    * FirstName
	//
	//    * LastName
	//
	//    * EmailAddress
	//
	//    * ContactNumber
	Edition *string `type:"string" enum:"Edition"`

	// The email address of the author of the Amazon QuickSight account to use for
	// future communications. This field is required if ENTERPPRISE_AND_Q is the
	// selected edition of the new Amazon QuickSight account.
	EmailAddress *string `type:"string"`

	// The first name of the author of the Amazon QuickSight account to use for
	// future communications. This field is required if ENTERPPRISE_AND_Q is the
	// selected edition of the new Amazon QuickSight account.
	FirstName *string `type:"string"`

	// The Amazon Resource Name (ARN) for the IAM Identity Center instance.
	IAMIdentityCenterInstanceArn *string `type:"string"`

	// The last name of the author of the Amazon QuickSight account to use for future
	// communications. This field is required if ENTERPPRISE_AND_Q is the selected
	// edition of the new Amazon QuickSight account.
	LastName *string `type:"string"`

	// The email address that you want Amazon QuickSight to send notifications to
	// regarding your Amazon QuickSight account or Amazon QuickSight subscription.
	//
	// NotificationEmail is a required field
	NotificationEmail *string `type:"string" required:"true"`

	// The reader group associated with your Active Directory or IAM Identity Center
	// account.
	//
	// For more information about using IAM Identity Center in Amazon QuickSight,
	// see Using IAM Identity Center with Amazon QuickSight Enterprise Edition (https://docs.aws.amazon.com/quicksight/latest/user/sec-identity-management-identity-center.html)
	// in the Amazon QuickSight User Guide. For more information about using Active
	// Directory in Amazon QuickSight, see Using Active Directory with Amazon QuickSight
	// Enterprise Edition (https://docs.aws.amazon.com/quicksight/latest/user/aws-directory-service.html)
	// in the Amazon QuickSight User Guide.
	ReaderGroup []*string `type:"list"`

	// The reader pro group associated with your Active Directory or IAM Identity
	// Center account.
	//
	// For more information about using IAM Identity Center in Amazon QuickSight,
	// see Using IAM Identity Center with Amazon QuickSight Enterprise Edition (https://docs.aws.amazon.com/quicksight/latest/user/sec-identity-management-identity-center.html)
	// in the Amazon QuickSight User Guide. For more information about using Active
	// Directory in Amazon QuickSight, see Using Active Directory with Amazon QuickSight
	// Enterprise Edition (https://docs.aws.amazon.com/quicksight/latest/user/aws-directory-service.html)
	// in the Amazon QuickSight User Guide.
	ReaderProGroup []*string `type:"list"`

	// The realm of the Active Directory that is associated with your Amazon QuickSight
	// account. This field is required if ACTIVE_DIRECTORY is the selected authentication
	// method of the new Amazon QuickSight account.
	Realm *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateAccountSubscriptionInput) 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 CreateAccountSubscriptionInput) GoString() string {
	return s.String()
}

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

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

// SetAccountName sets the AccountName field's value.
func (s *CreateAccountSubscriptionInput) SetAccountName(v string) *CreateAccountSubscriptionInput {
	s.AccountName = &v
	return s
}

// SetActiveDirectoryName sets the ActiveDirectoryName field's value.
func (s *CreateAccountSubscriptionInput) SetActiveDirectoryName(v string) *CreateAccountSubscriptionInput {
	s.ActiveDirectoryName = &v
	return s
}

// SetAdminGroup sets the AdminGroup field's value.
func (s *CreateAccountSubscriptionInput) SetAdminGroup(v []*string) *CreateAccountSubscriptionInput {
	s.AdminGroup = v
	return s
}

// SetAdminProGroup sets the AdminProGroup field's value.
func (s *CreateAccountSubscriptionInput) SetAdminProGroup(v []*string) *CreateAccountSubscriptionInput {
	s.AdminProGroup = v
	return s
}

// SetAuthenticationMethod sets the AuthenticationMethod field's value.
func (s *CreateAccountSubscriptionInput) SetAuthenticationMethod(v string) *CreateAccountSubscriptionInput {
	s.AuthenticationMethod = &v
	return s
}

// SetAuthorGroup sets the AuthorGroup field's value.
func (s *CreateAccountSubscriptionInput) SetAuthorGroup(v []*string) *CreateAccountSubscriptionInput {
	s.AuthorGroup = v
	return s
}

// SetAuthorProGroup sets the AuthorProGroup field's value.
func (s *CreateAccountSubscriptionInput) SetAuthorProGroup(v []*string) *CreateAccountSubscriptionInput {
	s.AuthorProGroup = v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateAccountSubscriptionInput) SetAwsAccountId(v string) *CreateAccountSubscriptionInput {
	s.AwsAccountId = &v
	return s
}

// SetContactNumber sets the ContactNumber field's value.
func (s *CreateAccountSubscriptionInput) SetContactNumber(v string) *CreateAccountSubscriptionInput {
	s.ContactNumber = &v
	return s
}

// SetDirectoryId sets the DirectoryId field's value.
func (s *CreateAccountSubscriptionInput) SetDirectoryId(v string) *CreateAccountSubscriptionInput {
	s.DirectoryId = &v
	return s
}

// SetEdition sets the Edition field's value.
func (s *CreateAccountSubscriptionInput) SetEdition(v string) *CreateAccountSubscriptionInput {
	s.Edition = &v
	return s
}

// SetEmailAddress sets the EmailAddress field's value.
func (s *CreateAccountSubscriptionInput) SetEmailAddress(v string) *CreateAccountSubscriptionInput {
	s.EmailAddress = &v
	return s
}

// SetFirstName sets the FirstName field's value.
func (s *CreateAccountSubscriptionInput) SetFirstName(v string) *CreateAccountSubscriptionInput {
	s.FirstName = &v
	return s
}

// SetIAMIdentityCenterInstanceArn sets the IAMIdentityCenterInstanceArn field's value.
func (s *CreateAccountSubscriptionInput) SetIAMIdentityCenterInstanceArn(v string) *CreateAccountSubscriptionInput {
	s.IAMIdentityCenterInstanceArn = &v
	return s
}

// SetLastName sets the LastName field's value.
func (s *CreateAccountSubscriptionInput) SetLastName(v string) *CreateAccountSubscriptionInput {
	s.LastName = &v
	return s
}

// SetNotificationEmail sets the NotificationEmail field's value.
func (s *CreateAccountSubscriptionInput) SetNotificationEmail(v string) *CreateAccountSubscriptionInput {
	s.NotificationEmail = &v
	return s
}

// SetReaderGroup sets the ReaderGroup field's value.
func (s *CreateAccountSubscriptionInput) SetReaderGroup(v []*string) *CreateAccountSubscriptionInput {
	s.ReaderGroup = v
	return s
}

// SetReaderProGroup sets the ReaderProGroup field's value.
func (s *CreateAccountSubscriptionInput) SetReaderProGroup(v []*string) *CreateAccountSubscriptionInput {
	s.ReaderProGroup = v
	return s
}

// SetRealm sets the Realm field's value.
func (s *CreateAccountSubscriptionInput) SetRealm(v string) *CreateAccountSubscriptionInput {
	s.Realm = &v
	return s
}

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

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// A SignupResponse object that returns information about a newly created Amazon
	// QuickSight account.
	SignupResponse *SignupResponse `type:"structure"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 CreateAccountSubscriptionOutput) 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 CreateAccountSubscriptionOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *CreateAccountSubscriptionOutput) SetRequestId(v string) *CreateAccountSubscriptionOutput {
	s.RequestId = &v
	return s
}

// SetSignupResponse sets the SignupResponse field's value.
func (s *CreateAccountSubscriptionOutput) SetSignupResponse(v *SignupResponse) *CreateAccountSubscriptionOutput {
	s.SignupResponse = v
	return s
}

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

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

	// The ID for the analysis that you're creating. This ID displays in the URL
	// of the analysis.
	//
	// AnalysisId is a required field
	AnalysisId *string `location:"uri" locationName:"AnalysisId" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account where you are creating an analysis.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The definition of an analysis.
	//
	// A definition is the data model of all features in a Dashboard, Template,
	// or Analysis.
	//
	// Either a SourceEntity or a Definition must be provided in order for the request
	// to be valid.
	Definition *AnalysisDefinition `type:"structure"`

	// When you create the analysis, Amazon QuickSight adds the analysis to these
	// folders.
	FolderArns []*string `type:"list"`

	// A descriptive name for the analysis that you're creating. This name displays
	// for the analysis in the Amazon QuickSight console.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The parameter names and override values that you want to use. An analysis
	// can have any parameter type, and some parameters might accept multiple values.
	Parameters *Parameters `type:"structure"`

	// A structure that describes the principals and the resource-level permissions
	// on an analysis. You can use the Permissions structure to grant permissions
	// by providing a list of Identity and Access Management (IAM) action information
	// for each principal listed by Amazon Resource Name (ARN).
	//
	// To specify no permissions, omit Permissions.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// A source entity to use for the analysis that you're creating. This metadata
	// structure contains details that describe a source template and one or more
	// datasets.
	//
	// Either a SourceEntity or a Definition must be provided in order for the request
	// to be valid.
	SourceEntity *AnalysisSourceEntity `type:"structure"`

	// Contains a map of the key-value pairs for the resource tag or tags assigned
	// to the analysis.
	Tags []*Tag `min:"1" type:"list"`

	// The ARN for the theme to apply to the analysis that you're creating. To see
	// the theme in the Amazon QuickSight console, make sure that you have access
	// to it.
	ThemeArn *string `type:"string"`

	// The option to relax the validation needed to create an analysis with definition
	// objects. This skips the validation step for specific errors.
	ValidationStrategy *ValidationStrategy `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 CreateAnalysisInput) 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 CreateAnalysisInput) GoString() string {
	return s.String()
}

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

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

// SetAnalysisId sets the AnalysisId field's value.
func (s *CreateAnalysisInput) SetAnalysisId(v string) *CreateAnalysisInput {
	s.AnalysisId = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateAnalysisInput) SetAwsAccountId(v string) *CreateAnalysisInput {
	s.AwsAccountId = &v
	return s
}

// SetDefinition sets the Definition field's value.
func (s *CreateAnalysisInput) SetDefinition(v *AnalysisDefinition) *CreateAnalysisInput {
	s.Definition = v
	return s
}

// SetFolderArns sets the FolderArns field's value.
func (s *CreateAnalysisInput) SetFolderArns(v []*string) *CreateAnalysisInput {
	s.FolderArns = v
	return s
}

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

// SetParameters sets the Parameters field's value.
func (s *CreateAnalysisInput) SetParameters(v *Parameters) *CreateAnalysisInput {
	s.Parameters = v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *CreateAnalysisInput) SetPermissions(v []*ResourcePermission) *CreateAnalysisInput {
	s.Permissions = v
	return s
}

// SetSourceEntity sets the SourceEntity field's value.
func (s *CreateAnalysisInput) SetSourceEntity(v *AnalysisSourceEntity) *CreateAnalysisInput {
	s.SourceEntity = v
	return s
}

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

// SetThemeArn sets the ThemeArn field's value.
func (s *CreateAnalysisInput) SetThemeArn(v string) *CreateAnalysisInput {
	s.ThemeArn = &v
	return s
}

// SetValidationStrategy sets the ValidationStrategy field's value.
func (s *CreateAnalysisInput) SetValidationStrategy(v *ValidationStrategy) *CreateAnalysisInput {
	s.ValidationStrategy = v
	return s
}

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

	// The ID of the analysis.
	AnalysisId *string `min:"1" type:"string"`

	// The ARN for the analysis.
	Arn *string `type:"string"`

	// The status of the creation of the analysis.
	CreationStatus *string `type:"string" enum:"ResourceStatus"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 CreateAnalysisOutput) 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 CreateAnalysisOutput) GoString() string {
	return s.String()
}

// SetAnalysisId sets the AnalysisId field's value.
func (s *CreateAnalysisOutput) SetAnalysisId(v string) *CreateAnalysisOutput {
	s.AnalysisId = &v
	return s
}

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

// SetCreationStatus sets the CreationStatus field's value.
func (s *CreateAnalysisOutput) SetCreationStatus(v string) *CreateAnalysisOutput {
	s.CreationStatus = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateAnalysisOutput) SetRequestId(v string) *CreateAnalysisOutput {
	s.RequestId = &v
	return s
}

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

// A transform operation that creates calculated columns. Columns created in
// one such operation form a lexical closure.
type CreateColumnsOperation struct {
	_ struct{} `type:"structure"`

	// Calculated columns to create.
	//
	// Columns is a required field
	Columns []*CalculatedColumn `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateColumnsOperation) 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 CreateColumnsOperation) GoString() string {
	return s.String()
}

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

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

// SetColumns sets the Columns field's value.
func (s *CreateColumnsOperation) SetColumns(v []*CalculatedColumn) *CreateColumnsOperation {
	s.Columns = v
	return s
}

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

	// The ID of the Amazon Web Services account where you want to create the dashboard.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the dashboard, also added to the IAM policy.
	//
	// DashboardId is a required field
	DashboardId *string `location:"uri" locationName:"DashboardId" min:"1" type:"string" required:"true"`

	// Options for publishing the dashboard when you create it:
	//
	//    * AvailabilityStatus for AdHocFilteringOption - This status can be either
	//    ENABLED or DISABLED. When this is set to DISABLED, Amazon QuickSight disables
	//    the left filter pane on the published dashboard, which can be used for
	//    ad hoc (one-time) filtering. This option is ENABLED by default.
	//
	//    * AvailabilityStatus for ExportToCSVOption - This status can be either
	//    ENABLED or DISABLED. The visual option to export data to .CSV format isn't
	//    enabled when this is set to DISABLED. This option is ENABLED by default.
	//
	//    * VisibilityState for SheetControlsOption - This visibility state can
	//    be either COLLAPSED or EXPANDED. This option is COLLAPSED by default.
	DashboardPublishOptions *DashboardPublishOptions `type:"structure"`

	// The definition of a dashboard.
	//
	// A definition is the data model of all features in a Dashboard, Template,
	// or Analysis.
	//
	// Either a SourceEntity or a Definition must be provided in order for the request
	// to be valid.
	Definition *DashboardVersionDefinition `type:"structure"`

	// When you create the dashboard, Amazon QuickSight adds the dashboard to these
	// folders.
	FolderArns []*string `type:"list"`

	// A list of analysis Amazon Resource Names (ARNs) to be linked to the dashboard.
	LinkEntities []*string `type:"list"`

	// A structure that contains the permissions of a shareable link to the dashboard.
	LinkSharingConfiguration *LinkSharingConfiguration `type:"structure"`

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

	// The parameters for the creation of the dashboard, which you want to use to
	// override the default settings. A dashboard can have any type of parameters,
	// and some parameters might accept multiple values.
	Parameters *Parameters `type:"structure"`

	// A structure that contains the permissions of the dashboard. You can use this
	// structure for granting permissions by providing a list of IAM action information
	// for each principal ARN.
	//
	// To specify no permissions, omit the permissions list.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The entity that you are using as a source when you create the dashboard.
	// In SourceEntity, you specify the type of object you're using as source. You
	// can only create a dashboard from a template, so you use a SourceTemplate
	// entity. If you need to create a dashboard from an analysis, first convert
	// the analysis to a template by using the CreateTemplate (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateTemplate.html)
	// API operation. For SourceTemplate, specify the Amazon Resource Name (ARN)
	// of the source template. The SourceTemplateARN can contain any Amazon Web
	// Services account and any Amazon QuickSight-supported Amazon Web Services
	// Region.
	//
	// Use the DataSetReferences entity within SourceTemplate to list the replacement
	// datasets for the placeholders listed in the original. The schema in each
	// dataset must match its placeholder.
	//
	// Either a SourceEntity or a Definition must be provided in order for the request
	// to be valid.
	SourceEntity *DashboardSourceEntity `type:"structure"`

	// Contains a map of the key-value pairs for the resource tag or tags assigned
	// to the dashboard.
	Tags []*Tag `min:"1" type:"list"`

	// The Amazon Resource Name (ARN) of the theme that is being used for this dashboard.
	// If you add a value for this field, it overrides the value that is used in
	// the source entity. The theme ARN must exist in the same Amazon Web Services
	// account where you create the dashboard.
	ThemeArn *string `type:"string"`

	// The option to relax the validation needed to create a dashboard with definition
	// objects. This option skips the validation step for specific errors.
	ValidationStrategy *ValidationStrategy `type:"structure"`

	// A description for the first version of the dashboard being created.
	VersionDescription *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateDashboardInput) 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 CreateDashboardInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateDashboardInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateDashboardInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DashboardId == nil {
		invalidParams.Add(request.NewErrParamRequired("DashboardId"))
	}
	if s.DashboardId != nil && len(*s.DashboardId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DashboardId", 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 s.Permissions != nil && len(s.Permissions) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Permissions", 1))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.VersionDescription != nil && len(*s.VersionDescription) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VersionDescription", 1))
	}
	if s.Definition != nil {
		if err := s.Definition.Validate(); err != nil {
			invalidParams.AddNested("Definition", err.(request.ErrInvalidParams))
		}
	}
	if s.LinkSharingConfiguration != nil {
		if err := s.LinkSharingConfiguration.Validate(); err != nil {
			invalidParams.AddNested("LinkSharingConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Parameters != nil {
		if err := s.Parameters.Validate(); err != nil {
			invalidParams.AddNested("Parameters", err.(request.ErrInvalidParams))
		}
	}
	if s.Permissions != nil {
		for i, v := range s.Permissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Permissions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.SourceEntity != nil {
		if err := s.SourceEntity.Validate(); err != nil {
			invalidParams.AddNested("SourceEntity", err.(request.ErrInvalidParams))
		}
	}
	if s.Tags != nil {
		for i, v := range s.Tags {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ValidationStrategy != nil {
		if err := s.ValidationStrategy.Validate(); err != nil {
			invalidParams.AddNested("ValidationStrategy", err.(request.ErrInvalidParams))
		}
	}

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateDashboardInput) SetAwsAccountId(v string) *CreateDashboardInput {
	s.AwsAccountId = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *CreateDashboardInput) SetDashboardId(v string) *CreateDashboardInput {
	s.DashboardId = &v
	return s
}

// SetDashboardPublishOptions sets the DashboardPublishOptions field's value.
func (s *CreateDashboardInput) SetDashboardPublishOptions(v *DashboardPublishOptions) *CreateDashboardInput {
	s.DashboardPublishOptions = v
	return s
}

// SetDefinition sets the Definition field's value.
func (s *CreateDashboardInput) SetDefinition(v *DashboardVersionDefinition) *CreateDashboardInput {
	s.Definition = v
	return s
}

// SetFolderArns sets the FolderArns field's value.
func (s *CreateDashboardInput) SetFolderArns(v []*string) *CreateDashboardInput {
	s.FolderArns = v
	return s
}

// SetLinkEntities sets the LinkEntities field's value.
func (s *CreateDashboardInput) SetLinkEntities(v []*string) *CreateDashboardInput {
	s.LinkEntities = v
	return s
}

// SetLinkSharingConfiguration sets the LinkSharingConfiguration field's value.
func (s *CreateDashboardInput) SetLinkSharingConfiguration(v *LinkSharingConfiguration) *CreateDashboardInput {
	s.LinkSharingConfiguration = v
	return s
}

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

// SetParameters sets the Parameters field's value.
func (s *CreateDashboardInput) SetParameters(v *Parameters) *CreateDashboardInput {
	s.Parameters = v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *CreateDashboardInput) SetPermissions(v []*ResourcePermission) *CreateDashboardInput {
	s.Permissions = v
	return s
}

// SetSourceEntity sets the SourceEntity field's value.
func (s *CreateDashboardInput) SetSourceEntity(v *DashboardSourceEntity) *CreateDashboardInput {
	s.SourceEntity = v
	return s
}

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

// SetThemeArn sets the ThemeArn field's value.
func (s *CreateDashboardInput) SetThemeArn(v string) *CreateDashboardInput {
	s.ThemeArn = &v
	return s
}

// SetValidationStrategy sets the ValidationStrategy field's value.
func (s *CreateDashboardInput) SetValidationStrategy(v *ValidationStrategy) *CreateDashboardInput {
	s.ValidationStrategy = v
	return s
}

// SetVersionDescription sets the VersionDescription field's value.
func (s *CreateDashboardInput) SetVersionDescription(v string) *CreateDashboardInput {
	s.VersionDescription = &v
	return s
}

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

	// The ARN of the dashboard.
	Arn *string `type:"string"`

	// The status of the dashboard creation request.
	CreationStatus *string `type:"string" enum:"ResourceStatus"`

	// The ID for the dashboard.
	DashboardId *string `min:"1" type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The ARN of the dashboard, including the version number of the first version
	// that is created.
	VersionArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateDashboardOutput) 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 CreateDashboardOutput) GoString() string {
	return s.String()
}

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

// SetCreationStatus sets the CreationStatus field's value.
func (s *CreateDashboardOutput) SetCreationStatus(v string) *CreateDashboardOutput {
	s.CreationStatus = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *CreateDashboardOutput) SetDashboardId(v string) *CreateDashboardOutput {
	s.DashboardId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateDashboardOutput) SetRequestId(v string) *CreateDashboardOutput {
	s.RequestId = &v
	return s
}

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

// SetVersionArn sets the VersionArn field's value.
func (s *CreateDashboardOutput) SetVersionArn(v string) *CreateDashboardOutput {
	s.VersionArn = &v
	return s
}

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

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// Groupings of columns that work together in certain Amazon QuickSight features.
	// Currently, only geospatial hierarchy is supported.
	ColumnGroups []*ColumnGroup `min:"1" type:"list"`

	// A set of one or more definitions of a ColumnLevelPermissionRule (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnLevelPermissionRule.html) .
	ColumnLevelPermissionRules []*ColumnLevelPermissionRule `min:"1" type:"list"`

	// An ID for the dataset that you want to create. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	//
	// DataSetId is a required field
	DataSetId *string `type:"string" required:"true"`

	// The usage configuration to apply to child datasets that reference this dataset
	// as a source.
	DataSetUsageConfiguration *DataSetUsageConfiguration `type:"structure"`

	// The parameter declarations of the dataset.
	DatasetParameters []*DatasetParameter `min:"1" type:"list"`

	// The folder that contains fields and nested subfolders for your dataset.
	FieldFolders map[string]*FieldFolder `type:"map"`

	// When you create the dataset, Amazon QuickSight adds the dataset to these
	// folders.
	FolderArns []*string `type:"list"`

	// Indicates whether you want to import the data into SPICE.
	//
	// ImportMode is a required field
	ImportMode *string `type:"string" required:"true" enum:"DataSetImportMode"`

	// Configures the combination and transformation of the data from the physical
	// tables.
	LogicalTableMap map[string]*LogicalTable `min:"1" type:"map"`

	// The display name for the dataset.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A list of resource permissions on the dataset.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// Declares the physical tables that are available in the underlying data sources.
	//
	// PhysicalTableMap is a required field
	PhysicalTableMap map[string]*PhysicalTable `type:"map" required:"true"`

	// The row-level security configuration for the data that you want to create.
	RowLevelPermissionDataSet *RowLevelPermissionDataSet `type:"structure"`

	// The configuration of tags on a dataset to set row-level security. Row-level
	// security tags are currently supported for anonymous embedding only.
	RowLevelPermissionTagConfiguration *RowLevelPermissionTagConfiguration `type:"structure"`

	// Contains a map of the key-value pairs for the resource tag or tags assigned
	// to the dataset.
	Tags []*Tag `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateDataSetInput) 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 CreateDataSetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateDataSetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateDataSetInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.ColumnGroups != nil && len(s.ColumnGroups) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ColumnGroups", 1))
	}
	if s.ColumnLevelPermissionRules != nil && len(s.ColumnLevelPermissionRules) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ColumnLevelPermissionRules", 1))
	}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DatasetParameters != nil && len(s.DatasetParameters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatasetParameters", 1))
	}
	if s.ImportMode == nil {
		invalidParams.Add(request.NewErrParamRequired("ImportMode"))
	}
	if s.LogicalTableMap != nil && len(s.LogicalTableMap) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("LogicalTableMap", 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 s.Permissions != nil && len(s.Permissions) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Permissions", 1))
	}
	if s.PhysicalTableMap == nil {
		invalidParams.Add(request.NewErrParamRequired("PhysicalTableMap"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.ColumnGroups != nil {
		for i, v := range s.ColumnGroups {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnGroups", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ColumnLevelPermissionRules != nil {
		for i, v := range s.ColumnLevelPermissionRules {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnLevelPermissionRules", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.DatasetParameters != nil {
		for i, v := range s.DatasetParameters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DatasetParameters", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.LogicalTableMap != nil {
		for i, v := range s.LogicalTableMap {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LogicalTableMap", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Permissions != nil {
		for i, v := range s.Permissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Permissions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.PhysicalTableMap != nil {
		for i, v := range s.PhysicalTableMap {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PhysicalTableMap", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.RowLevelPermissionDataSet != nil {
		if err := s.RowLevelPermissionDataSet.Validate(); err != nil {
			invalidParams.AddNested("RowLevelPermissionDataSet", err.(request.ErrInvalidParams))
		}
	}
	if s.RowLevelPermissionTagConfiguration != nil {
		if err := s.RowLevelPermissionTagConfiguration.Validate(); err != nil {
			invalidParams.AddNested("RowLevelPermissionTagConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Tags != nil {
		for i, v := range s.Tags {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateDataSetInput) SetAwsAccountId(v string) *CreateDataSetInput {
	s.AwsAccountId = &v
	return s
}

// SetColumnGroups sets the ColumnGroups field's value.
func (s *CreateDataSetInput) SetColumnGroups(v []*ColumnGroup) *CreateDataSetInput {
	s.ColumnGroups = v
	return s
}

// SetColumnLevelPermissionRules sets the ColumnLevelPermissionRules field's value.
func (s *CreateDataSetInput) SetColumnLevelPermissionRules(v []*ColumnLevelPermissionRule) *CreateDataSetInput {
	s.ColumnLevelPermissionRules = v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *CreateDataSetInput) SetDataSetId(v string) *CreateDataSetInput {
	s.DataSetId = &v
	return s
}

// SetDataSetUsageConfiguration sets the DataSetUsageConfiguration field's value.
func (s *CreateDataSetInput) SetDataSetUsageConfiguration(v *DataSetUsageConfiguration) *CreateDataSetInput {
	s.DataSetUsageConfiguration = v
	return s
}

// SetDatasetParameters sets the DatasetParameters field's value.
func (s *CreateDataSetInput) SetDatasetParameters(v []*DatasetParameter) *CreateDataSetInput {
	s.DatasetParameters = v
	return s
}

// SetFieldFolders sets the FieldFolders field's value.
func (s *CreateDataSetInput) SetFieldFolders(v map[string]*FieldFolder) *CreateDataSetInput {
	s.FieldFolders = v
	return s
}

// SetFolderArns sets the FolderArns field's value.
func (s *CreateDataSetInput) SetFolderArns(v []*string) *CreateDataSetInput {
	s.FolderArns = v
	return s
}

// SetImportMode sets the ImportMode field's value.
func (s *CreateDataSetInput) SetImportMode(v string) *CreateDataSetInput {
	s.ImportMode = &v
	return s
}

// SetLogicalTableMap sets the LogicalTableMap field's value.
func (s *CreateDataSetInput) SetLogicalTableMap(v map[string]*LogicalTable) *CreateDataSetInput {
	s.LogicalTableMap = v
	return s
}

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

// SetPermissions sets the Permissions field's value.
func (s *CreateDataSetInput) SetPermissions(v []*ResourcePermission) *CreateDataSetInput {
	s.Permissions = v
	return s
}

// SetPhysicalTableMap sets the PhysicalTableMap field's value.
func (s *CreateDataSetInput) SetPhysicalTableMap(v map[string]*PhysicalTable) *CreateDataSetInput {
	s.PhysicalTableMap = v
	return s
}

// SetRowLevelPermissionDataSet sets the RowLevelPermissionDataSet field's value.
func (s *CreateDataSetInput) SetRowLevelPermissionDataSet(v *RowLevelPermissionDataSet) *CreateDataSetInput {
	s.RowLevelPermissionDataSet = v
	return s
}

// SetRowLevelPermissionTagConfiguration sets the RowLevelPermissionTagConfiguration field's value.
func (s *CreateDataSetInput) SetRowLevelPermissionTagConfiguration(v *RowLevelPermissionTagConfiguration) *CreateDataSetInput {
	s.RowLevelPermissionTagConfiguration = v
	return s
}

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

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

	// The Amazon Resource Name (ARN) of the dataset.
	Arn *string `type:"string"`

	// The ID for the dataset that you want to create. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	DataSetId *string `type:"string"`

	// The ARN for the ingestion, which is triggered as a result of dataset creation
	// if the import mode is SPICE.
	IngestionArn *string `type:"string"`

	// The ID of the ingestion, which is triggered as a result of dataset creation
	// if the import mode is SPICE.
	IngestionId *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 CreateDataSetOutput) 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 CreateDataSetOutput) GoString() string {
	return s.String()
}

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

// SetDataSetId sets the DataSetId field's value.
func (s *CreateDataSetOutput) SetDataSetId(v string) *CreateDataSetOutput {
	s.DataSetId = &v
	return s
}

// SetIngestionArn sets the IngestionArn field's value.
func (s *CreateDataSetOutput) SetIngestionArn(v string) *CreateDataSetOutput {
	s.IngestionArn = &v
	return s
}

// SetIngestionId sets the IngestionId field's value.
func (s *CreateDataSetOutput) SetIngestionId(v string) *CreateDataSetOutput {
	s.IngestionId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateDataSetOutput) SetRequestId(v string) *CreateDataSetOutput {
	s.RequestId = &v
	return s
}

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

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

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The credentials Amazon QuickSight that uses to connect to your underlying
	// source. Currently, only credentials based on user name and password are supported.
	//
	// Credentials is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateDataSourceInput's
	// String and GoString methods.
	Credentials *DataSourceCredentials `type:"structure" sensitive:"true"`

	// An ID for the data source. This ID is unique per Amazon Web Services Region
	// for each Amazon Web Services account.
	//
	// DataSourceId is a required field
	DataSourceId *string `type:"string" required:"true"`

	// The parameters that Amazon QuickSight uses to connect to your underlying
	// source.
	DataSourceParameters *DataSourceParameters `type:"structure"`

	// When you create the data source, Amazon QuickSight adds the data source to
	// these folders.
	FolderArns []*string `type:"list"`

	// A display name for the data source.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A list of resource permissions on the data source.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// Secure Socket Layer (SSL) properties that apply when Amazon QuickSight connects
	// to your underlying source.
	SslProperties *SslProperties `type:"structure"`

	// Contains a map of the key-value pairs for the resource tag or tags assigned
	// to the data source.
	Tags []*Tag `min:"1" type:"list"`

	// The type of the data source. To return a list of all data sources, use ListDataSources.
	//
	// Use AMAZON_ELASTICSEARCH for Amazon OpenSearch Service.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"DataSourceType"`

	// Use this parameter only when you want Amazon QuickSight to use a VPC connection
	// when connecting to your underlying source.
	VpcConnectionProperties *VpcConnectionProperties `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 CreateDataSourceInput) 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 CreateDataSourceInput) GoString() string {
	return s.String()
}

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

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateDataSourceInput) SetAwsAccountId(v string) *CreateDataSourceInput {
	s.AwsAccountId = &v
	return s
}

// SetCredentials sets the Credentials field's value.
func (s *CreateDataSourceInput) SetCredentials(v *DataSourceCredentials) *CreateDataSourceInput {
	s.Credentials = v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *CreateDataSourceInput) SetDataSourceId(v string) *CreateDataSourceInput {
	s.DataSourceId = &v
	return s
}

// SetDataSourceParameters sets the DataSourceParameters field's value.
func (s *CreateDataSourceInput) SetDataSourceParameters(v *DataSourceParameters) *CreateDataSourceInput {
	s.DataSourceParameters = v
	return s
}

// SetFolderArns sets the FolderArns field's value.
func (s *CreateDataSourceInput) SetFolderArns(v []*string) *CreateDataSourceInput {
	s.FolderArns = v
	return s
}

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

// SetPermissions sets the Permissions field's value.
func (s *CreateDataSourceInput) SetPermissions(v []*ResourcePermission) *CreateDataSourceInput {
	s.Permissions = v
	return s
}

// SetSslProperties sets the SslProperties field's value.
func (s *CreateDataSourceInput) SetSslProperties(v *SslProperties) *CreateDataSourceInput {
	s.SslProperties = v
	return s
}

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

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

// SetVpcConnectionProperties sets the VpcConnectionProperties field's value.
func (s *CreateDataSourceInput) SetVpcConnectionProperties(v *VpcConnectionProperties) *CreateDataSourceInput {
	s.VpcConnectionProperties = v
	return s
}

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

	// The Amazon Resource Name (ARN) of the data source.
	Arn *string `type:"string"`

	// The status of creating the data source.
	CreationStatus *string `type:"string" enum:"ResourceStatus"`

	// The ID of the data source. This ID is unique per Amazon Web Services Region
	// for each Amazon Web Services account.
	DataSourceId *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 CreateDataSourceOutput) 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 CreateDataSourceOutput) GoString() string {
	return s.String()
}

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

// SetCreationStatus sets the CreationStatus field's value.
func (s *CreateDataSourceOutput) SetCreationStatus(v string) *CreateDataSourceOutput {
	s.CreationStatus = &v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *CreateDataSourceOutput) SetDataSourceId(v string) *CreateDataSourceOutput {
	s.DataSourceId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateDataSourceOutput) SetRequestId(v string) *CreateDataSourceOutput {
	s.RequestId = &v
	return s
}

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

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

	// The ID for the Amazon Web Services account where you want to create the folder.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the folder.
	//
	// FolderId is a required field
	FolderId *string `location:"uri" locationName:"FolderId" min:"1" type:"string" required:"true"`

	// The type of folder. By default, folderType is SHARED.
	FolderType *string `type:"string" enum:"FolderType"`

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

	// The Amazon Resource Name (ARN) for the parent folder.
	//
	// ParentFolderArn can be null. An empty parentFolderArn creates a root-level
	// folder.
	ParentFolderArn *string `type:"string"`

	// A structure that describes the principals and the resource-level permissions
	// of a folder.
	//
	// To specify no permissions, omit Permissions.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// An optional parameter that determines the sharing scope of the folder. The
	// default value for this parameter is ACCOUNT.
	SharingModel *string `type:"string" enum:"SharingModel"`

	// Tags for the folder.
	Tags []*Tag `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateFolderInput) 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 CreateFolderInput) GoString() string {
	return s.String()
}

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

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateFolderInput) SetAwsAccountId(v string) *CreateFolderInput {
	s.AwsAccountId = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *CreateFolderInput) SetFolderId(v string) *CreateFolderInput {
	s.FolderId = &v
	return s
}

// SetFolderType sets the FolderType field's value.
func (s *CreateFolderInput) SetFolderType(v string) *CreateFolderInput {
	s.FolderType = &v
	return s
}

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

// SetParentFolderArn sets the ParentFolderArn field's value.
func (s *CreateFolderInput) SetParentFolderArn(v string) *CreateFolderInput {
	s.ParentFolderArn = &v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *CreateFolderInput) SetPermissions(v []*ResourcePermission) *CreateFolderInput {
	s.Permissions = v
	return s
}

// SetSharingModel sets the SharingModel field's value.
func (s *CreateFolderInput) SetSharingModel(v string) *CreateFolderInput {
	s.SharingModel = &v
	return s
}

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

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

	// The ID for the Amazon Web Services account that contains the folder.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the folder.
	//
	// FolderId is a required field
	FolderId *string `location:"uri" locationName:"FolderId" min:"1" type:"string" required:"true"`

	// The ID of the asset that you want to add to the folder.
	//
	// MemberId is a required field
	MemberId *string `location:"uri" locationName:"MemberId" min:"1" type:"string" required:"true"`

	// The member type of the asset that you want to add to a folder.
	//
	// MemberType is a required field
	MemberType *string `location:"uri" locationName:"MemberType" type:"string" required:"true" enum:"MemberType"`
}

// 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 CreateFolderMembershipInput) 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 CreateFolderMembershipInput) GoString() string {
	return s.String()
}

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

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateFolderMembershipInput) SetAwsAccountId(v string) *CreateFolderMembershipInput {
	s.AwsAccountId = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *CreateFolderMembershipInput) SetFolderId(v string) *CreateFolderMembershipInput {
	s.FolderId = &v
	return s
}

// SetMemberId sets the MemberId field's value.
func (s *CreateFolderMembershipInput) SetMemberId(v string) *CreateFolderMembershipInput {
	s.MemberId = &v
	return s
}

// SetMemberType sets the MemberType field's value.
func (s *CreateFolderMembershipInput) SetMemberType(v string) *CreateFolderMembershipInput {
	s.MemberType = &v
	return s
}

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

	// Information about the member in the folder.
	FolderMember *FolderMember `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `type:"integer"`
}

// 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 CreateFolderMembershipOutput) 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 CreateFolderMembershipOutput) GoString() string {
	return s.String()
}

// SetFolderMember sets the FolderMember field's value.
func (s *CreateFolderMembershipOutput) SetFolderMember(v *FolderMember) *CreateFolderMembershipOutput {
	s.FolderMember = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateFolderMembershipOutput) SetRequestId(v string) *CreateFolderMembershipOutput {
	s.RequestId = &v
	return s
}

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

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

	// The Amazon Resource Name (ARN) for the newly created folder.
	Arn *string `type:"string"`

	// The folder ID for the newly created folder.
	FolderId *string `min:"1" type:"string"`

	// The request ID for the newly created folder.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 CreateFolderOutput) 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 CreateFolderOutput) GoString() string {
	return s.String()
}

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

// SetFolderId sets the FolderId field's value.
func (s *CreateFolderOutput) SetFolderId(v string) *CreateFolderOutput {
	s.FolderId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateFolderOutput) SetRequestId(v string) *CreateFolderOutput {
	s.RequestId = &v
	return s
}

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

// The request object for this operation.
type CreateGroupInput struct {
	_ struct{} `type:"structure"`

	// The ID for the Amazon Web Services account that the group is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// A description for the group that you want to create.
	Description *string `min:"1" type:"string"`

	// A name for the group that you want to create.
	//
	// GroupName is a required field
	GroupName *string `min:"1" type:"string" required:"true"`

	// The namespace that you want the group to be a part of.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" 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 CreateGroupInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

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

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

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

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

	// The ID for the Amazon Web Services account that the group is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The name of the group that you want to add the user to.
	//
	// GroupName is a required field
	GroupName *string `location:"uri" locationName:"GroupName" min:"1" type:"string" required:"true"`

	// The name of the user that you want to add to the group membership.
	//
	// MemberName is a required field
	MemberName *string `location:"uri" locationName:"MemberName" min:"1" type:"string" required:"true"`

	// The namespace that you want the user to be a part of.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" 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 CreateGroupMembershipInput) 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 CreateGroupMembershipInput) GoString() string {
	return s.String()
}

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

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateGroupMembershipInput) SetAwsAccountId(v string) *CreateGroupMembershipInput {
	s.AwsAccountId = &v
	return s
}

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

// SetMemberName sets the MemberName field's value.
func (s *CreateGroupMembershipInput) SetMemberName(v string) *CreateGroupMembershipInput {
	s.MemberName = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *CreateGroupMembershipInput) SetNamespace(v string) *CreateGroupMembershipInput {
	s.Namespace = &v
	return s
}

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

	// The group member.
	GroupMember *GroupMember `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 CreateGroupMembershipOutput) 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 CreateGroupMembershipOutput) GoString() string {
	return s.String()
}

// SetGroupMember sets the GroupMember field's value.
func (s *CreateGroupMembershipOutput) SetGroupMember(v *GroupMember) *CreateGroupMembershipOutput {
	s.GroupMember = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateGroupMembershipOutput) SetRequestId(v string) *CreateGroupMembershipOutput {
	s.RequestId = &v
	return s
}

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

// The response object for this operation.
type CreateGroupOutput struct {
	_ struct{} `type:"structure"`

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

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

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

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

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

// SetRequestId sets the RequestId field's value.
func (s *CreateGroupOutput) SetRequestId(v string) *CreateGroupOutput {
	s.RequestId = &v
	return s
}

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

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

	// The name of the assignment, also called a rule. The name must be unique within
	// the Amazon Web Services account.
	//
	// AssignmentName is a required field
	AssignmentName *string `min:"1" type:"string" required:"true"`

	// The status of the assignment. Possible values are as follows:
	//
	//    * ENABLED - Anything specified in this assignment is used when creating
	//    the data source.
	//
	//    * DISABLED - This assignment isn't used when creating the data source.
	//
	//    * DRAFT - This assignment is an unfinished draft and isn't used when creating
	//    the data source.
	//
	// AssignmentStatus is a required field
	AssignmentStatus *string `type:"string" required:"true" enum:"AssignmentStatus"`

	// The ID of the Amazon Web Services account where you want to assign an IAM
	// policy to Amazon QuickSight users or groups.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The Amazon QuickSight users, groups, or both that you want to assign the
	// policy to.
	Identities map[string][]*string `type:"map"`

	// The namespace that contains the assignment.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// The ARN for the IAM policy to apply to the Amazon QuickSight users and groups
	// specified in this assignment.
	PolicyArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateIAMPolicyAssignmentInput) 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 CreateIAMPolicyAssignmentInput) GoString() string {
	return s.String()
}

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

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

// SetAssignmentName sets the AssignmentName field's value.
func (s *CreateIAMPolicyAssignmentInput) SetAssignmentName(v string) *CreateIAMPolicyAssignmentInput {
	s.AssignmentName = &v
	return s
}

// SetAssignmentStatus sets the AssignmentStatus field's value.
func (s *CreateIAMPolicyAssignmentInput) SetAssignmentStatus(v string) *CreateIAMPolicyAssignmentInput {
	s.AssignmentStatus = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateIAMPolicyAssignmentInput) SetAwsAccountId(v string) *CreateIAMPolicyAssignmentInput {
	s.AwsAccountId = &v
	return s
}

// SetIdentities sets the Identities field's value.
func (s *CreateIAMPolicyAssignmentInput) SetIdentities(v map[string][]*string) *CreateIAMPolicyAssignmentInput {
	s.Identities = v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *CreateIAMPolicyAssignmentInput) SetNamespace(v string) *CreateIAMPolicyAssignmentInput {
	s.Namespace = &v
	return s
}

// SetPolicyArn sets the PolicyArn field's value.
func (s *CreateIAMPolicyAssignmentInput) SetPolicyArn(v string) *CreateIAMPolicyAssignmentInput {
	s.PolicyArn = &v
	return s
}

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

	// The ID for the assignment.
	AssignmentId *string `type:"string"`

	// The name of the assignment. The name must be unique within the Amazon Web
	// Services account.
	AssignmentName *string `min:"1" type:"string"`

	// The status of the assignment. Possible values are as follows:
	//
	//    * ENABLED - Anything specified in this assignment is used when creating
	//    the data source.
	//
	//    * DISABLED - This assignment isn't used when creating the data source.
	//
	//    * DRAFT - This assignment is an unfinished draft and isn't used when creating
	//    the data source.
	AssignmentStatus *string `type:"string" enum:"AssignmentStatus"`

	// The Amazon QuickSight users, groups, or both that the IAM policy is assigned
	// to.
	Identities map[string][]*string `type:"map"`

	// The ARN for the IAM policy that is applied to the Amazon QuickSight users
	// and groups specified in this assignment.
	PolicyArn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 CreateIAMPolicyAssignmentOutput) 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 CreateIAMPolicyAssignmentOutput) GoString() string {
	return s.String()
}

// SetAssignmentId sets the AssignmentId field's value.
func (s *CreateIAMPolicyAssignmentOutput) SetAssignmentId(v string) *CreateIAMPolicyAssignmentOutput {
	s.AssignmentId = &v
	return s
}

// SetAssignmentName sets the AssignmentName field's value.
func (s *CreateIAMPolicyAssignmentOutput) SetAssignmentName(v string) *CreateIAMPolicyAssignmentOutput {
	s.AssignmentName = &v
	return s
}

// SetAssignmentStatus sets the AssignmentStatus field's value.
func (s *CreateIAMPolicyAssignmentOutput) SetAssignmentStatus(v string) *CreateIAMPolicyAssignmentOutput {
	s.AssignmentStatus = &v
	return s
}

// SetIdentities sets the Identities field's value.
func (s *CreateIAMPolicyAssignmentOutput) SetIdentities(v map[string][]*string) *CreateIAMPolicyAssignmentOutput {
	s.Identities = v
	return s
}

// SetPolicyArn sets the PolicyArn field's value.
func (s *CreateIAMPolicyAssignmentOutput) SetPolicyArn(v string) *CreateIAMPolicyAssignmentOutput {
	s.PolicyArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateIAMPolicyAssignmentOutput) SetRequestId(v string) *CreateIAMPolicyAssignmentOutput {
	s.RequestId = &v
	return s
}

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

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

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dataset used in the ingestion.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" type:"string" required:"true"`

	// An ID for the ingestion.
	//
	// IngestionId is a required field
	IngestionId *string `location:"uri" locationName:"IngestionId" min:"1" type:"string" required:"true"`

	// The type of ingestion that you want to create.
	IngestionType *string `type:"string" enum:"IngestionType"`
}

// 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 CreateIngestionInput) 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 CreateIngestionInput) GoString() string {
	return s.String()
}

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

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateIngestionInput) SetAwsAccountId(v string) *CreateIngestionInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *CreateIngestionInput) SetDataSetId(v string) *CreateIngestionInput {
	s.DataSetId = &v
	return s
}

// SetIngestionId sets the IngestionId field's value.
func (s *CreateIngestionInput) SetIngestionId(v string) *CreateIngestionInput {
	s.IngestionId = &v
	return s
}

// SetIngestionType sets the IngestionType field's value.
func (s *CreateIngestionInput) SetIngestionType(v string) *CreateIngestionInput {
	s.IngestionType = &v
	return s
}

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

	// The Amazon Resource Name (ARN) for the data ingestion.
	Arn *string `type:"string"`

	// An ID for the ingestion.
	IngestionId *string `min:"1" type:"string"`

	// The ingestion status.
	IngestionStatus *string `type:"string" enum:"IngestionStatus"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 CreateIngestionOutput) 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 CreateIngestionOutput) GoString() string {
	return s.String()
}

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

// SetIngestionId sets the IngestionId field's value.
func (s *CreateIngestionOutput) SetIngestionId(v string) *CreateIngestionOutput {
	s.IngestionId = &v
	return s
}

// SetIngestionStatus sets the IngestionStatus field's value.
func (s *CreateIngestionOutput) SetIngestionStatus(v string) *CreateIngestionOutput {
	s.IngestionStatus = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateIngestionOutput) SetRequestId(v string) *CreateIngestionOutput {
	s.RequestId = &v
	return s
}

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

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

	// The ID for the Amazon Web Services account that you want to create the Amazon
	// QuickSight namespace in.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// Specifies the type of your user identity directory. Currently, this supports
	// users with an identity type of QUICKSIGHT.
	//
	// IdentityStore is a required field
	IdentityStore *string `type:"string" required:"true" enum:"IdentityStore"`

	// The name that you want to use to describe the new namespace.
	//
	// Namespace is a required field
	Namespace *string `type:"string" required:"true"`

	// The tags that you want to associate with the namespace that you're creating.
	Tags []*Tag `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateNamespaceInput) 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 CreateNamespaceInput) GoString() string {
	return s.String()
}

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

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateNamespaceInput) SetAwsAccountId(v string) *CreateNamespaceInput {
	s.AwsAccountId = &v
	return s
}

// SetIdentityStore sets the IdentityStore field's value.
func (s *CreateNamespaceInput) SetIdentityStore(v string) *CreateNamespaceInput {
	s.IdentityStore = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *CreateNamespaceInput) SetNamespace(v string) *CreateNamespaceInput {
	s.Namespace = &v
	return s
}

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

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

	// The ARN of the Amazon QuickSight namespace you created.
	Arn *string `type:"string"`

	// The Amazon Web Services Region; that you want to use for the free SPICE capacity
	// for the new namespace. This is set to the region that you run CreateNamespace
	// in.
	CapacityRegion *string `type:"string"`

	// The status of the creation of the namespace. This is an asynchronous process.
	// A status of CREATED means that your namespace is ready to use. If an error
	// occurs, it indicates if the process is retryable or non-retryable. In the
	// case of a non-retryable error, refer to the error message for follow-up tasks.
	CreationStatus *string `type:"string" enum:"NamespaceStatus"`

	// Specifies the type of your user identity directory. Currently, this supports
	// users with an identity type of QUICKSIGHT.
	IdentityStore *string `type:"string" enum:"IdentityStore"`

	// The name of the new namespace that you created.
	Name *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 CreateNamespaceOutput) 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 CreateNamespaceOutput) GoString() string {
	return s.String()
}

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

// SetCapacityRegion sets the CapacityRegion field's value.
func (s *CreateNamespaceOutput) SetCapacityRegion(v string) *CreateNamespaceOutput {
	s.CapacityRegion = &v
	return s
}

// SetCreationStatus sets the CreationStatus field's value.
func (s *CreateNamespaceOutput) SetCreationStatus(v string) *CreateNamespaceOutput {
	s.CreationStatus = &v
	return s
}

// SetIdentityStore sets the IdentityStore field's value.
func (s *CreateNamespaceOutput) SetIdentityStore(v string) *CreateNamespaceOutput {
	s.IdentityStore = &v
	return s
}

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

// SetRequestId sets the RequestId field's value.
func (s *CreateNamespaceOutput) SetRequestId(v string) *CreateNamespaceOutput {
	s.RequestId = &v
	return s
}

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

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

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dataset.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" type:"string" required:"true"`

	// The refresh schedule.
	//
	// Schedule is a required field
	Schedule *RefreshSchedule `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 CreateRefreshScheduleInput) 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 CreateRefreshScheduleInput) GoString() string {
	return s.String()
}

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

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateRefreshScheduleInput) SetAwsAccountId(v string) *CreateRefreshScheduleInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *CreateRefreshScheduleInput) SetDataSetId(v string) *CreateRefreshScheduleInput {
	s.DataSetId = &v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *CreateRefreshScheduleInput) SetSchedule(v *RefreshSchedule) *CreateRefreshScheduleInput {
	s.Schedule = v
	return s
}

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

	// The Amazon Resource Name (ARN) for the refresh schedule.
	Arn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The ID of the refresh schedule.
	ScheduleId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 CreateRefreshScheduleOutput) 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 CreateRefreshScheduleOutput) GoString() string {
	return s.String()
}

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

// SetRequestId sets the RequestId field's value.
func (s *CreateRefreshScheduleOutput) SetRequestId(v string) *CreateRefreshScheduleOutput {
	s.RequestId = &v
	return s
}

// SetScheduleId sets the ScheduleId field's value.
func (s *CreateRefreshScheduleOutput) SetScheduleId(v string) *CreateRefreshScheduleOutput {
	s.ScheduleId = &v
	return s
}

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

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

	// The ID for the Amazon Web Services account that you want to create a group
	// in. The Amazon Web Services account ID that you provide must be the same
	// Amazon Web Services account that contains your Amazon QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The name of the group that you want to add to the role.
	//
	// MemberName is a required field
	MemberName *string `location:"uri" locationName:"MemberName" min:"1" type:"string" required:"true"`

	// The namespace that the role belongs to.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// The role that you want to add a group to.
	//
	// Role is a required field
	Role *string `location:"uri" locationName:"Role" type:"string" required:"true" enum:"Role"`
}

// 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 CreateRoleMembershipInput) 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 CreateRoleMembershipInput) GoString() string {
	return s.String()
}

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

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateRoleMembershipInput) SetAwsAccountId(v string) *CreateRoleMembershipInput {
	s.AwsAccountId = &v
	return s
}

// SetMemberName sets the MemberName field's value.
func (s *CreateRoleMembershipInput) SetMemberName(v string) *CreateRoleMembershipInput {
	s.MemberName = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *CreateRoleMembershipInput) SetNamespace(v string) *CreateRoleMembershipInput {
	s.Namespace = &v
	return s
}

// SetRole sets the Role field's value.
func (s *CreateRoleMembershipInput) SetRole(v string) *CreateRoleMembershipInput {
	s.Role = &v
	return s
}

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

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 CreateRoleMembershipOutput) 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 CreateRoleMembershipOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *CreateRoleMembershipOutput) SetRequestId(v string) *CreateRoleMembershipOutput {
	s.RequestId = &v
	return s
}

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

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

	// The name that you want to give to the template alias that you're creating.
	// Don't start the alias name with the $ character. Alias names that start with
	// $ are reserved by Amazon QuickSight.
	//
	// AliasName is a required field
	AliasName *string `location:"uri" locationName:"AliasName" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account that contains the template that
	// you creating an alias for.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// An ID for the template.
	//
	// TemplateId is a required field
	TemplateId *string `location:"uri" locationName:"TemplateId" min:"1" type:"string" required:"true"`

	// The version number of the template.
	//
	// TemplateVersionNumber is a required field
	TemplateVersionNumber *int64 `min:"1" type:"long" 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 CreateTemplateAliasInput) 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 CreateTemplateAliasInput) GoString() string {
	return s.String()
}

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

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

// SetAliasName sets the AliasName field's value.
func (s *CreateTemplateAliasInput) SetAliasName(v string) *CreateTemplateAliasInput {
	s.AliasName = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateTemplateAliasInput) SetAwsAccountId(v string) *CreateTemplateAliasInput {
	s.AwsAccountId = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *CreateTemplateAliasInput) SetTemplateId(v string) *CreateTemplateAliasInput {
	s.TemplateId = &v
	return s
}

// SetTemplateVersionNumber sets the TemplateVersionNumber field's value.
func (s *CreateTemplateAliasInput) SetTemplateVersionNumber(v int64) *CreateTemplateAliasInput {
	s.TemplateVersionNumber = &v
	return s
}

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

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// Information about the template alias.
	TemplateAlias *TemplateAlias `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 CreateTemplateAliasOutput) 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 CreateTemplateAliasOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *CreateTemplateAliasOutput) SetRequestId(v string) *CreateTemplateAliasOutput {
	s.RequestId = &v
	return s
}

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

// SetTemplateAlias sets the TemplateAlias field's value.
func (s *CreateTemplateAliasOutput) SetTemplateAlias(v *TemplateAlias) *CreateTemplateAliasOutput {
	s.TemplateAlias = v
	return s
}

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

	// The ID for the Amazon Web Services account that the group is in. You use
	// the ID for the Amazon Web Services account that contains your Amazon QuickSight
	// account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The definition of a template.
	//
	// A definition is the data model of all features in a Dashboard, Template,
	// or Analysis.
	//
	// Either a SourceEntity or a Definition must be provided in order for the request
	// to be valid.
	Definition *TemplateVersionDefinition `type:"structure"`

	// A display name for the template.
	Name *string `min:"1" type:"string"`

	// A list of resource permissions to be set on the template.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The entity that you are using as a source when you create the template. In
	// SourceEntity, you specify the type of object you're using as source: SourceTemplate
	// for a template or SourceAnalysis for an analysis. Both of these require an
	// Amazon Resource Name (ARN). For SourceTemplate, specify the ARN of the source
	// template. For SourceAnalysis, specify the ARN of the source analysis. The
	// SourceTemplate ARN can contain any Amazon Web Services account and any Amazon
	// QuickSight-supported Amazon Web Services Region.
	//
	// Use the DataSetReferences entity within SourceTemplate or SourceAnalysis
	// to list the replacement datasets for the placeholders listed in the original.
	// The schema in each dataset must match its placeholder.
	//
	// Either a SourceEntity or a Definition must be provided in order for the request
	// to be valid.
	SourceEntity *TemplateSourceEntity `type:"structure"`

	// Contains a map of the key-value pairs for the resource tag or tags assigned
	// to the resource.
	Tags []*Tag `min:"1" type:"list"`

	// An ID for the template that you want to create. This template is unique per
	// Amazon Web Services Region; in each Amazon Web Services account.
	//
	// TemplateId is a required field
	TemplateId *string `location:"uri" locationName:"TemplateId" min:"1" type:"string" required:"true"`

	// TThe option to relax the validation needed to create a template with definition
	// objects. This skips the validation step for specific errors.
	ValidationStrategy *ValidationStrategy `type:"structure"`

	// A description of the current template version being created. This API operation
	// creates the first version of the template. Every time UpdateTemplate is called,
	// a new version is created. Each version of the template maintains a description
	// of the version in the VersionDescription field.
	VersionDescription *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTemplateInput) 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 CreateTemplateInput) GoString() string {
	return s.String()
}

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

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateTemplateInput) SetAwsAccountId(v string) *CreateTemplateInput {
	s.AwsAccountId = &v
	return s
}

// SetDefinition sets the Definition field's value.
func (s *CreateTemplateInput) SetDefinition(v *TemplateVersionDefinition) *CreateTemplateInput {
	s.Definition = v
	return s
}

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

// SetPermissions sets the Permissions field's value.
func (s *CreateTemplateInput) SetPermissions(v []*ResourcePermission) *CreateTemplateInput {
	s.Permissions = v
	return s
}

// SetSourceEntity sets the SourceEntity field's value.
func (s *CreateTemplateInput) SetSourceEntity(v *TemplateSourceEntity) *CreateTemplateInput {
	s.SourceEntity = v
	return s
}

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

// SetTemplateId sets the TemplateId field's value.
func (s *CreateTemplateInput) SetTemplateId(v string) *CreateTemplateInput {
	s.TemplateId = &v
	return s
}

// SetValidationStrategy sets the ValidationStrategy field's value.
func (s *CreateTemplateInput) SetValidationStrategy(v *ValidationStrategy) *CreateTemplateInput {
	s.ValidationStrategy = v
	return s
}

// SetVersionDescription sets the VersionDescription field's value.
func (s *CreateTemplateInput) SetVersionDescription(v string) *CreateTemplateInput {
	s.VersionDescription = &v
	return s
}

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

	// The ARN for the template.
	Arn *string `type:"string"`

	// The template creation status.
	CreationStatus *string `type:"string" enum:"ResourceStatus"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The ID of the template.
	TemplateId *string `min:"1" type:"string"`

	// The ARN for the template, including the version information of the first
	// version.
	VersionArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTemplateOutput) 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 CreateTemplateOutput) GoString() string {
	return s.String()
}

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

// SetCreationStatus sets the CreationStatus field's value.
func (s *CreateTemplateOutput) SetCreationStatus(v string) *CreateTemplateOutput {
	s.CreationStatus = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateTemplateOutput) SetRequestId(v string) *CreateTemplateOutput {
	s.RequestId = &v
	return s
}

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

// SetTemplateId sets the TemplateId field's value.
func (s *CreateTemplateOutput) SetTemplateId(v string) *CreateTemplateOutput {
	s.TemplateId = &v
	return s
}

// SetVersionArn sets the VersionArn field's value.
func (s *CreateTemplateOutput) SetVersionArn(v string) *CreateTemplateOutput {
	s.VersionArn = &v
	return s
}

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

	// The name that you want to give to the theme alias that you are creating.
	// The alias name can't begin with a $. Alias names that start with $ are reserved
	// by Amazon QuickSight.
	//
	// AliasName is a required field
	AliasName *string `location:"uri" locationName:"AliasName" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account that contains the theme for the
	// new theme alias.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// An ID for the theme alias.
	//
	// ThemeId is a required field
	ThemeId *string `location:"uri" locationName:"ThemeId" min:"1" type:"string" required:"true"`

	// The version number of the theme.
	//
	// ThemeVersionNumber is a required field
	ThemeVersionNumber *int64 `min:"1" type:"long" 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 CreateThemeAliasInput) 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 CreateThemeAliasInput) GoString() string {
	return s.String()
}

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

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

// SetAliasName sets the AliasName field's value.
func (s *CreateThemeAliasInput) SetAliasName(v string) *CreateThemeAliasInput {
	s.AliasName = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateThemeAliasInput) SetAwsAccountId(v string) *CreateThemeAliasInput {
	s.AwsAccountId = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *CreateThemeAliasInput) SetThemeId(v string) *CreateThemeAliasInput {
	s.ThemeId = &v
	return s
}

// SetThemeVersionNumber sets the ThemeVersionNumber field's value.
func (s *CreateThemeAliasInput) SetThemeVersionNumber(v int64) *CreateThemeAliasInput {
	s.ThemeVersionNumber = &v
	return s
}

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

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// Information about the theme alias.
	ThemeAlias *ThemeAlias `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 CreateThemeAliasOutput) 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 CreateThemeAliasOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *CreateThemeAliasOutput) SetRequestId(v string) *CreateThemeAliasOutput {
	s.RequestId = &v
	return s
}

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

// SetThemeAlias sets the ThemeAlias field's value.
func (s *CreateThemeAliasOutput) SetThemeAlias(v *ThemeAlias) *CreateThemeAliasOutput {
	s.ThemeAlias = v
	return s
}

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

	// The ID of the Amazon Web Services account where you want to store the new
	// theme.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the theme that a custom theme will inherit from. All themes inherit
	// from one of the starting themes defined by Amazon QuickSight. For a list
	// of the starting themes, use ListThemes or choose Themes from within an analysis.
	//
	// BaseThemeId is a required field
	BaseThemeId *string `min:"1" type:"string" required:"true"`

	// The theme configuration, which contains the theme display properties.
	//
	// Configuration is a required field
	Configuration *ThemeConfiguration `type:"structure" required:"true"`

	// A display name for the theme.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A valid grouping of resource permissions to apply to the new theme.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// A map of the key-value pairs for the resource tag or tags that you want to
	// add to the resource.
	Tags []*Tag `min:"1" type:"list"`

	// An ID for the theme that you want to create. The theme ID is unique per Amazon
	// Web Services Region in each Amazon Web Services account.
	//
	// ThemeId is a required field
	ThemeId *string `location:"uri" locationName:"ThemeId" min:"1" type:"string" required:"true"`

	// A description of the first version of the theme that you're creating. Every
	// time UpdateTheme is called, a new version is created. Each version of the
	// theme has a description of the version in the VersionDescription field.
	VersionDescription *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateThemeInput) 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 CreateThemeInput) GoString() string {
	return s.String()
}

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

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateThemeInput) SetAwsAccountId(v string) *CreateThemeInput {
	s.AwsAccountId = &v
	return s
}

// SetBaseThemeId sets the BaseThemeId field's value.
func (s *CreateThemeInput) SetBaseThemeId(v string) *CreateThemeInput {
	s.BaseThemeId = &v
	return s
}

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

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

// SetPermissions sets the Permissions field's value.
func (s *CreateThemeInput) SetPermissions(v []*ResourcePermission) *CreateThemeInput {
	s.Permissions = v
	return s
}

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

// SetThemeId sets the ThemeId field's value.
func (s *CreateThemeInput) SetThemeId(v string) *CreateThemeInput {
	s.ThemeId = &v
	return s
}

// SetVersionDescription sets the VersionDescription field's value.
func (s *CreateThemeInput) SetVersionDescription(v string) *CreateThemeInput {
	s.VersionDescription = &v
	return s
}

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

	// The Amazon Resource Name (ARN) for the theme.
	Arn *string `type:"string"`

	// The theme creation status.
	CreationStatus *string `type:"string" enum:"ResourceStatus"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The ID of the theme.
	ThemeId *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) for the new theme.
	VersionArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateThemeOutput) 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 CreateThemeOutput) GoString() string {
	return s.String()
}

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

// SetCreationStatus sets the CreationStatus field's value.
func (s *CreateThemeOutput) SetCreationStatus(v string) *CreateThemeOutput {
	s.CreationStatus = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateThemeOutput) SetRequestId(v string) *CreateThemeOutput {
	s.RequestId = &v
	return s
}

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

// SetThemeId sets the ThemeId field's value.
func (s *CreateThemeOutput) SetThemeId(v string) *CreateThemeOutput {
	s.ThemeId = &v
	return s
}

// SetVersionArn sets the VersionArn field's value.
func (s *CreateThemeOutput) SetVersionArn(v string) *CreateThemeOutput {
	s.VersionArn = &v
	return s
}

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

	// The ID of the Amazon Web Services account that you want to create a topic
	// in.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// Contains a map of the key-value pairs for the resource tag or tags that are
	// assigned to the dataset.
	Tags []*Tag `min:"1" type:"list"`

	// The definition of a topic to create.
	//
	// Topic is a required field
	Topic *TopicDetails `type:"structure" required:"true"`

	// The ID for the topic that you want to create. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	//
	// TopicId is a required field
	TopicId *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTopicInput) 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 CreateTopicInput) GoString() string {
	return s.String()
}

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

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateTopicInput) SetAwsAccountId(v string) *CreateTopicInput {
	s.AwsAccountId = &v
	return s
}

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

// SetTopic sets the Topic field's value.
func (s *CreateTopicInput) SetTopic(v *TopicDetails) *CreateTopicInput {
	s.Topic = v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *CreateTopicInput) SetTopicId(v string) *CreateTopicInput {
	s.TopicId = &v
	return s
}

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

	// The Amazon Resource Name (ARN) of the topic.
	Arn *string `type:"string"`

	// The Amazon Resource Name (ARN) of the topic refresh.
	RefreshArn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The ID for the topic that you want to create. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	TopicId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTopicOutput) 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 CreateTopicOutput) GoString() string {
	return s.String()
}

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

// SetRefreshArn sets the RefreshArn field's value.
func (s *CreateTopicOutput) SetRefreshArn(v string) *CreateTopicOutput {
	s.RefreshArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateTopicOutput) SetRequestId(v string) *CreateTopicOutput {
	s.RequestId = &v
	return s
}

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

// SetTopicId sets the TopicId field's value.
func (s *CreateTopicOutput) SetTopicId(v string) *CreateTopicOutput {
	s.TopicId = &v
	return s
}

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

	// The ID of the Amazon Web Services account that contains the topic you're
	// creating a refresh schedule for.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the dataset.
	//
	// DatasetArn is a required field
	DatasetArn *string `type:"string" required:"true"`

	// The name of the dataset.
	DatasetName *string `type:"string"`

	// The definition of a refresh schedule.
	//
	// RefreshSchedule is a required field
	RefreshSchedule *TopicRefreshSchedule `type:"structure" required:"true"`

	// The ID of the topic that you want to modify. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	//
	// TopicId is a required field
	TopicId *string `location:"uri" locationName:"TopicId" 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 CreateTopicRefreshScheduleInput) 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 CreateTopicRefreshScheduleInput) GoString() string {
	return s.String()
}

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

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateTopicRefreshScheduleInput) SetAwsAccountId(v string) *CreateTopicRefreshScheduleInput {
	s.AwsAccountId = &v
	return s
}

// SetDatasetArn sets the DatasetArn field's value.
func (s *CreateTopicRefreshScheduleInput) SetDatasetArn(v string) *CreateTopicRefreshScheduleInput {
	s.DatasetArn = &v
	return s
}

// SetDatasetName sets the DatasetName field's value.
func (s *CreateTopicRefreshScheduleInput) SetDatasetName(v string) *CreateTopicRefreshScheduleInput {
	s.DatasetName = &v
	return s
}

// SetRefreshSchedule sets the RefreshSchedule field's value.
func (s *CreateTopicRefreshScheduleInput) SetRefreshSchedule(v *TopicRefreshSchedule) *CreateTopicRefreshScheduleInput {
	s.RefreshSchedule = v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *CreateTopicRefreshScheduleInput) SetTopicId(v string) *CreateTopicRefreshScheduleInput {
	s.TopicId = &v
	return s
}

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

	// The Amazon Resource Name (ARN) of the dataset.
	DatasetArn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The Amazon Resource Name (ARN) of the topic.
	TopicArn *string `type:"string"`

	// The ID of the topic that you want to modify. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	TopicId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTopicRefreshScheduleOutput) 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 CreateTopicRefreshScheduleOutput) GoString() string {
	return s.String()
}

// SetDatasetArn sets the DatasetArn field's value.
func (s *CreateTopicRefreshScheduleOutput) SetDatasetArn(v string) *CreateTopicRefreshScheduleOutput {
	s.DatasetArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateTopicRefreshScheduleOutput) SetRequestId(v string) *CreateTopicRefreshScheduleOutput {
	s.RequestId = &v
	return s
}

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

// SetTopicArn sets the TopicArn field's value.
func (s *CreateTopicRefreshScheduleOutput) SetTopicArn(v string) *CreateTopicRefreshScheduleOutput {
	s.TopicArn = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *CreateTopicRefreshScheduleOutput) SetTopicId(v string) *CreateTopicRefreshScheduleOutput {
	s.TopicId = &v
	return s
}

// The definition for a CreateTopicReviewedAnswer.
type CreateTopicReviewedAnswer struct {
	_ struct{} `type:"structure"`

	// The answer ID for the CreateTopicReviewedAnswer.
	//
	// AnswerId is a required field
	AnswerId *string `type:"string" required:"true"`

	// The Dataset arn for the CreateTopicReviewedAnswer.
	//
	// DatasetArn is a required field
	DatasetArn *string `type:"string" required:"true"`

	// The Mir for the CreateTopicReviewedAnswer.
	Mir *TopicIR `type:"structure"`

	// The PrimaryVisual for the CreateTopicReviewedAnswer.
	PrimaryVisual *TopicVisual `type:"structure"`

	// The Question to be created.
	//
	// Question is a required field
	Question *string `type:"string" required:"true"`

	// The template for the CreateTopicReviewedAnswer.
	Template *TopicTemplate `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 CreateTopicReviewedAnswer) 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 CreateTopicReviewedAnswer) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateTopicReviewedAnswer) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateTopicReviewedAnswer"}
	if s.AnswerId == nil {
		invalidParams.Add(request.NewErrParamRequired("AnswerId"))
	}
	if s.DatasetArn == nil {
		invalidParams.Add(request.NewErrParamRequired("DatasetArn"))
	}
	if s.Question == nil {
		invalidParams.Add(request.NewErrParamRequired("Question"))
	}
	if s.Mir != nil {
		if err := s.Mir.Validate(); err != nil {
			invalidParams.AddNested("Mir", err.(request.ErrInvalidParams))
		}
	}
	if s.PrimaryVisual != nil {
		if err := s.PrimaryVisual.Validate(); err != nil {
			invalidParams.AddNested("PrimaryVisual", err.(request.ErrInvalidParams))
		}
	}

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

// SetAnswerId sets the AnswerId field's value.
func (s *CreateTopicReviewedAnswer) SetAnswerId(v string) *CreateTopicReviewedAnswer {
	s.AnswerId = &v
	return s
}

// SetDatasetArn sets the DatasetArn field's value.
func (s *CreateTopicReviewedAnswer) SetDatasetArn(v string) *CreateTopicReviewedAnswer {
	s.DatasetArn = &v
	return s
}

// SetMir sets the Mir field's value.
func (s *CreateTopicReviewedAnswer) SetMir(v *TopicIR) *CreateTopicReviewedAnswer {
	s.Mir = v
	return s
}

// SetPrimaryVisual sets the PrimaryVisual field's value.
func (s *CreateTopicReviewedAnswer) SetPrimaryVisual(v *TopicVisual) *CreateTopicReviewedAnswer {
	s.PrimaryVisual = v
	return s
}

// SetQuestion sets the Question field's value.
func (s *CreateTopicReviewedAnswer) SetQuestion(v string) *CreateTopicReviewedAnswer {
	s.Question = &v
	return s
}

// SetTemplate sets the Template field's value.
func (s *CreateTopicReviewedAnswer) SetTemplate(v *TopicTemplate) *CreateTopicReviewedAnswer {
	s.Template = v
	return s
}

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

	// The Amazon Web Services account ID of the account where you want to create
	// a new VPC connection.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// A list of IP addresses of DNS resolver endpoints for the VPC connection.
	DnsResolvers []*string `type:"list"`

	// The display name for the VPC connection.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The IAM role to associate with the VPC connection.
	//
	// RoleArn is a required field
	RoleArn *string `min:"20" type:"string" required:"true"`

	// A list of security group IDs for the VPC connection.
	//
	// SecurityGroupIds is a required field
	SecurityGroupIds []*string `min:"1" type:"list" required:"true"`

	// A list of subnet IDs for the VPC connection.
	//
	// SubnetIds is a required field
	SubnetIds []*string `min:"2" type:"list" required:"true"`

	// A map of the key-value pairs for the resource tag or tags assigned to the
	// VPC connection.
	Tags []*Tag `min:"1" type:"list"`

	// The ID of the VPC connection that you're creating. This ID is a unique identifier
	// for each Amazon Web Services Region in an Amazon Web Services account.
	//
	// VPCConnectionId is a required field
	VPCConnectionId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateVPCConnectionInput) 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 CreateVPCConnectionInput) GoString() string {
	return s.String()
}

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

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateVPCConnectionInput) SetAwsAccountId(v string) *CreateVPCConnectionInput {
	s.AwsAccountId = &v
	return s
}

// SetDnsResolvers sets the DnsResolvers field's value.
func (s *CreateVPCConnectionInput) SetDnsResolvers(v []*string) *CreateVPCConnectionInput {
	s.DnsResolvers = v
	return s
}

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

// SetRoleArn sets the RoleArn field's value.
func (s *CreateVPCConnectionInput) SetRoleArn(v string) *CreateVPCConnectionInput {
	s.RoleArn = &v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *CreateVPCConnectionInput) SetSecurityGroupIds(v []*string) *CreateVPCConnectionInput {
	s.SecurityGroupIds = v
	return s
}

// SetSubnetIds sets the SubnetIds field's value.
func (s *CreateVPCConnectionInput) SetSubnetIds(v []*string) *CreateVPCConnectionInput {
	s.SubnetIds = v
	return s
}

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

// SetVPCConnectionId sets the VPCConnectionId field's value.
func (s *CreateVPCConnectionInput) SetVPCConnectionId(v string) *CreateVPCConnectionInput {
	s.VPCConnectionId = &v
	return s
}

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

	// The Amazon Resource Name (ARN) of the VPC connection.
	Arn *string `type:"string"`

	// The availability status of the VPC connection.
	AvailabilityStatus *string `type:"string" enum:"VPCConnectionAvailabilityStatus"`

	// The status of the creation of the VPC connection.
	CreationStatus *string `type:"string" enum:"VPCConnectionResourceStatus"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The ID for the VPC connection that you're creating. This ID is unique per
	// Amazon Web Services Region for each Amazon Web Services account.
	VPCConnectionId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateVPCConnectionOutput) 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 CreateVPCConnectionOutput) GoString() string {
	return s.String()
}

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

// SetAvailabilityStatus sets the AvailabilityStatus field's value.
func (s *CreateVPCConnectionOutput) SetAvailabilityStatus(v string) *CreateVPCConnectionOutput {
	s.AvailabilityStatus = &v
	return s
}

// SetCreationStatus sets the CreationStatus field's value.
func (s *CreateVPCConnectionOutput) SetCreationStatus(v string) *CreateVPCConnectionOutput {
	s.CreationStatus = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *CreateVPCConnectionOutput) SetRequestId(v string) *CreateVPCConnectionOutput {
	s.RequestId = &v
	return s
}

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

// SetVPCConnectionId sets the VPCConnectionId field's value.
func (s *CreateVPCConnectionOutput) SetVPCConnectionId(v string) *CreateVPCConnectionOutput {
	s.VPCConnectionId = &v
	return s
}

// The combination of user name and password that are used as credentials.
type CredentialPair struct {
	_ struct{} `type:"structure"`

	// A set of alternate data source parameters that you want to share for these
	// credentials. The credentials are applied in tandem with the data source parameters
	// when you copy a data source by using a create or update request. The API
	// operation compares the DataSourceParameters structure that's in the request
	// with the structures in the AlternateDataSourceParameters allow list. If the
	// structures are an exact match, the request is allowed to use the new data
	// source with the existing credentials. If the AlternateDataSourceParameters
	// list is null, the DataSourceParameters originally used with these Credentials
	// is automatically allowed.
	AlternateDataSourceParameters []*DataSourceParameters `min:"1" type:"list"`

	// Password.
	//
	// Password is a required field
	Password *string `min:"1" type:"string" required:"true"`

	// User name.
	//
	// Username is a required field
	Username *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CredentialPair) 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 CredentialPair) GoString() string {
	return s.String()
}

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

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

// SetAlternateDataSourceParameters sets the AlternateDataSourceParameters field's value.
func (s *CredentialPair) SetAlternateDataSourceParameters(v []*DataSourceParameters) *CredentialPair {
	s.AlternateDataSourceParameters = v
	return s
}

// SetPassword sets the Password field's value.
func (s *CredentialPair) SetPassword(v string) *CredentialPair {
	s.Password = &v
	return s
}

// SetUsername sets the Username field's value.
func (s *CredentialPair) SetUsername(v string) *CredentialPair {
	s.Username = &v
	return s
}

// The options that determine the currency display format configuration.
type CurrencyDisplayFormatConfiguration struct {
	_ struct{} `type:"structure"`

	// The option that determines the decimal places configuration.
	DecimalPlacesConfiguration *DecimalPlacesConfiguration `type:"structure"`

	// The options that determine the negative value configuration.
	NegativeValueConfiguration *NegativeValueConfiguration `type:"structure"`

	// The options that determine the null value format configuration.
	NullValueFormatConfiguration *NullValueFormatConfiguration `type:"structure"`

	// Determines the number scale value for the currency format.
	NumberScale *string `type:"string" enum:"NumberScale"`

	// Determines the prefix value of the currency format.
	//
	// Prefix is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CurrencyDisplayFormatConfiguration's
	// String and GoString methods.
	Prefix *string `min:"1" type:"string" sensitive:"true"`

	// The options that determine the numeric separator configuration.
	SeparatorConfiguration *NumericSeparatorConfiguration `type:"structure"`

	// Determines the suffix value of the currency format.
	//
	// Suffix is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CurrencyDisplayFormatConfiguration's
	// String and GoString methods.
	Suffix *string `min:"1" type:"string" sensitive:"true"`

	// Determines the symbol for the currency format.
	Symbol *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CurrencyDisplayFormatConfiguration) 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 CurrencyDisplayFormatConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CurrencyDisplayFormatConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CurrencyDisplayFormatConfiguration"}
	if s.Prefix != nil && len(*s.Prefix) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Prefix", 1))
	}
	if s.Suffix != nil && len(*s.Suffix) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Suffix", 1))
	}
	if s.DecimalPlacesConfiguration != nil {
		if err := s.DecimalPlacesConfiguration.Validate(); err != nil {
			invalidParams.AddNested("DecimalPlacesConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.NegativeValueConfiguration != nil {
		if err := s.NegativeValueConfiguration.Validate(); err != nil {
			invalidParams.AddNested("NegativeValueConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.NullValueFormatConfiguration != nil {
		if err := s.NullValueFormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("NullValueFormatConfiguration", err.(request.ErrInvalidParams))
		}
	}

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

// SetDecimalPlacesConfiguration sets the DecimalPlacesConfiguration field's value.
func (s *CurrencyDisplayFormatConfiguration) SetDecimalPlacesConfiguration(v *DecimalPlacesConfiguration) *CurrencyDisplayFormatConfiguration {
	s.DecimalPlacesConfiguration = v
	return s
}

// SetNegativeValueConfiguration sets the NegativeValueConfiguration field's value.
func (s *CurrencyDisplayFormatConfiguration) SetNegativeValueConfiguration(v *NegativeValueConfiguration) *CurrencyDisplayFormatConfiguration {
	s.NegativeValueConfiguration = v
	return s
}

// SetNullValueFormatConfiguration sets the NullValueFormatConfiguration field's value.
func (s *CurrencyDisplayFormatConfiguration) SetNullValueFormatConfiguration(v *NullValueFormatConfiguration) *CurrencyDisplayFormatConfiguration {
	s.NullValueFormatConfiguration = v
	return s
}

// SetNumberScale sets the NumberScale field's value.
func (s *CurrencyDisplayFormatConfiguration) SetNumberScale(v string) *CurrencyDisplayFormatConfiguration {
	s.NumberScale = &v
	return s
}

// SetPrefix sets the Prefix field's value.
func (s *CurrencyDisplayFormatConfiguration) SetPrefix(v string) *CurrencyDisplayFormatConfiguration {
	s.Prefix = &v
	return s
}

// SetSeparatorConfiguration sets the SeparatorConfiguration field's value.
func (s *CurrencyDisplayFormatConfiguration) SetSeparatorConfiguration(v *NumericSeparatorConfiguration) *CurrencyDisplayFormatConfiguration {
	s.SeparatorConfiguration = v
	return s
}

// SetSuffix sets the Suffix field's value.
func (s *CurrencyDisplayFormatConfiguration) SetSuffix(v string) *CurrencyDisplayFormatConfiguration {
	s.Suffix = &v
	return s
}

// SetSymbol sets the Symbol field's value.
func (s *CurrencyDisplayFormatConfiguration) SetSymbol(v string) *CurrencyDisplayFormatConfiguration {
	s.Symbol = &v
	return s
}

// The filter operation that filters data included in a visual or in an entire
// sheet.
type CustomActionFilterOperation struct {
	_ struct{} `type:"structure"`

	// The configuration that chooses the fields to be filtered.
	//
	// SelectedFieldsConfiguration is a required field
	SelectedFieldsConfiguration *FilterOperationSelectedFieldsConfiguration `type:"structure" required:"true"`

	// The configuration that chooses the target visuals to be filtered.
	//
	// TargetVisualsConfiguration is a required field
	TargetVisualsConfiguration *FilterOperationTargetVisualsConfiguration `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 CustomActionFilterOperation) 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 CustomActionFilterOperation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CustomActionFilterOperation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CustomActionFilterOperation"}
	if s.SelectedFieldsConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("SelectedFieldsConfiguration"))
	}
	if s.TargetVisualsConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("TargetVisualsConfiguration"))
	}
	if s.SelectedFieldsConfiguration != nil {
		if err := s.SelectedFieldsConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SelectedFieldsConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.TargetVisualsConfiguration != nil {
		if err := s.TargetVisualsConfiguration.Validate(); err != nil {
			invalidParams.AddNested("TargetVisualsConfiguration", err.(request.ErrInvalidParams))
		}
	}

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

// SetSelectedFieldsConfiguration sets the SelectedFieldsConfiguration field's value.
func (s *CustomActionFilterOperation) SetSelectedFieldsConfiguration(v *FilterOperationSelectedFieldsConfiguration) *CustomActionFilterOperation {
	s.SelectedFieldsConfiguration = v
	return s
}

// SetTargetVisualsConfiguration sets the TargetVisualsConfiguration field's value.
func (s *CustomActionFilterOperation) SetTargetVisualsConfiguration(v *FilterOperationTargetVisualsConfiguration) *CustomActionFilterOperation {
	s.TargetVisualsConfiguration = v
	return s
}

// The navigation operation that navigates between different sheets in the same
// analysis.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type CustomActionNavigationOperation struct {
	_ struct{} `type:"structure"`

	// The configuration that chooses the navigation target.
	LocalNavigationConfiguration *LocalNavigationConfiguration `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 CustomActionNavigationOperation) 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 CustomActionNavigationOperation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CustomActionNavigationOperation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CustomActionNavigationOperation"}
	if s.LocalNavigationConfiguration != nil {
		if err := s.LocalNavigationConfiguration.Validate(); err != nil {
			invalidParams.AddNested("LocalNavigationConfiguration", err.(request.ErrInvalidParams))
		}
	}

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

// SetLocalNavigationConfiguration sets the LocalNavigationConfiguration field's value.
func (s *CustomActionNavigationOperation) SetLocalNavigationConfiguration(v *LocalNavigationConfiguration) *CustomActionNavigationOperation {
	s.LocalNavigationConfiguration = v
	return s
}

// The set parameter operation that sets parameters in custom action.
type CustomActionSetParametersOperation struct {
	_ struct{} `type:"structure"`

	// The parameter that determines the value configuration.
	//
	// ParameterValueConfigurations is a required field
	ParameterValueConfigurations []*SetParameterValueConfiguration `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomActionSetParametersOperation) 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 CustomActionSetParametersOperation) GoString() string {
	return s.String()
}

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

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

// SetParameterValueConfigurations sets the ParameterValueConfigurations field's value.
func (s *CustomActionSetParametersOperation) SetParameterValueConfigurations(v []*SetParameterValueConfiguration) *CustomActionSetParametersOperation {
	s.ParameterValueConfigurations = v
	return s
}

// The URL operation that opens a link to another webpage.
type CustomActionURLOperation struct {
	_ struct{} `type:"structure"`

	// The target of the CustomActionURLOperation.
	//
	// Valid values are defined as follows:
	//
	//    * NEW_TAB: Opens the target URL in a new browser tab.
	//
	//    * NEW_WINDOW: Opens the target URL in a new browser window.
	//
	//    * SAME_TAB: Opens the target URL in the same browser tab.
	//
	// URLTarget is a required field
	URLTarget *string `type:"string" required:"true" enum:"URLTargetConfiguration"`

	// THe URL link of the CustomActionURLOperation.
	//
	// URLTemplate is a required field
	URLTemplate *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomActionURLOperation) 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 CustomActionURLOperation) GoString() string {
	return s.String()
}

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

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

// SetURLTarget sets the URLTarget field's value.
func (s *CustomActionURLOperation) SetURLTarget(v string) *CustomActionURLOperation {
	s.URLTarget = &v
	return s
}

// SetURLTemplate sets the URLTemplate field's value.
func (s *CustomActionURLOperation) SetURLTemplate(v string) *CustomActionURLOperation {
	s.URLTemplate = &v
	return s
}

// Determines the color that's applied to a particular data value in a column.
type CustomColor struct {
	_ struct{} `type:"structure"`

	// The color that is applied to the data value.
	//
	// Color is a required field
	Color *string `type:"string" required:"true"`

	// The data value that the color is applied to.
	//
	// FieldValue is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CustomColor's
	// String and GoString methods.
	FieldValue *string `type:"string" sensitive:"true"`

	// The value of a special data value.
	SpecialValue *string `type:"string" enum:"SpecialValue"`
}

// 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 CustomColor) 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 CustomColor) GoString() string {
	return s.String()
}

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

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

// SetColor sets the Color field's value.
func (s *CustomColor) SetColor(v string) *CustomColor {
	s.Color = &v
	return s
}

// SetFieldValue sets the FieldValue field's value.
func (s *CustomColor) SetFieldValue(v string) *CustomColor {
	s.FieldValue = &v
	return s
}

// SetSpecialValue sets the SpecialValue field's value.
func (s *CustomColor) SetSpecialValue(v string) *CustomColor {
	s.SpecialValue = &v
	return s
}

// The configuration of a CustomContentVisual.
type CustomContentConfiguration struct {
	_ struct{} `type:"structure"`

	// The content type of the custom content visual. You can use this to have the
	// visual render as an image.
	ContentType *string `type:"string" enum:"CustomContentType"`

	// The input URL that links to the custom content that you want in the custom
	// visual.
	ContentUrl *string `min:"1" type:"string"`

	// The sizing options for the size of the custom content visual. This structure
	// is required when the ContentType of the visual is 'IMAGE'.
	ImageScaling *string `type:"string" enum:"CustomContentImageScalingConfiguration"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `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 CustomContentConfiguration) 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 CustomContentConfiguration) GoString() string {
	return s.String()
}

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

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

// SetContentType sets the ContentType field's value.
func (s *CustomContentConfiguration) SetContentType(v string) *CustomContentConfiguration {
	s.ContentType = &v
	return s
}

// SetContentUrl sets the ContentUrl field's value.
func (s *CustomContentConfiguration) SetContentUrl(v string) *CustomContentConfiguration {
	s.ContentUrl = &v
	return s
}

// SetImageScaling sets the ImageScaling field's value.
func (s *CustomContentConfiguration) SetImageScaling(v string) *CustomContentConfiguration {
	s.ImageScaling = &v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *CustomContentConfiguration) SetInteractions(v *VisualInteractionOptions) *CustomContentConfiguration {
	s.Interactions = v
	return s
}

// A visual that contains custom content.
//
// For more information, see Using custom visual content (https://docs.aws.amazon.com/quicksight/latest/user/custom-visual-content.html)
// in the Amazon QuickSight User Guide.
type CustomContentVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration of a CustomContentVisual.
	ChartConfiguration *CustomContentConfiguration `type:"structure"`

	// The dataset that is used to create the custom content visual. You can't create
	// a visual without a dataset.
	//
	// DataSetIdentifier is a required field
	DataSetIdentifier *string `min:"1" type:"string" required:"true"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers.
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomContentVisual) 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 CustomContentVisual) GoString() string {
	return s.String()
}

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

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

// SetActions sets the Actions field's value.
func (s *CustomContentVisual) SetActions(v []*VisualCustomAction) *CustomContentVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *CustomContentVisual) SetChartConfiguration(v *CustomContentConfiguration) *CustomContentVisual {
	s.ChartConfiguration = v
	return s
}

// SetDataSetIdentifier sets the DataSetIdentifier field's value.
func (s *CustomContentVisual) SetDataSetIdentifier(v string) *CustomContentVisual {
	s.DataSetIdentifier = &v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *CustomContentVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *CustomContentVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *CustomContentVisual) SetTitle(v *VisualTitleLabelOptions) *CustomContentVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *CustomContentVisual) SetVisualId(v string) *CustomContentVisual {
	s.VisualId = &v
	return s
}

// A custom filter that filters based on a single value. This filter can be
// partially matched.
type CustomFilterConfiguration struct {
	_ struct{} `type:"structure"`

	// The category value for the filter.
	//
	// This field is mutually exclusive to ParameterName.
	CategoryValue *string `type:"string"`

	// The match operator that is used to determine if a filter should be applied.
	//
	// MatchOperator is a required field
	MatchOperator *string `type:"string" required:"true" enum:"CategoryFilterMatchOperator"`

	// This option determines how null values should be treated when filtering data.
	//
	//    * ALL_VALUES: Include null values in filtered results.
	//
	//    * NULLS_ONLY: Only include null values in filtered results.
	//
	//    * NON_NULLS_ONLY: Exclude null values from filtered results.
	//
	// NullOption is a required field
	NullOption *string `type:"string" required:"true" enum:"FilterNullOption"`

	// The parameter whose value should be used for the filter value.
	//
	// This field is mutually exclusive to CategoryValue.
	ParameterName *string `min:"1" type:"string"`

	// Select all of the values. Null is not the assigned value of select all.
	//
	//    * FILTER_ALL_VALUES
	SelectAllOptions *string `type:"string" enum:"CategoryFilterSelectAllOptions"`
}

// 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 CustomFilterConfiguration) 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 CustomFilterConfiguration) GoString() string {
	return s.String()
}

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

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

// SetCategoryValue sets the CategoryValue field's value.
func (s *CustomFilterConfiguration) SetCategoryValue(v string) *CustomFilterConfiguration {
	s.CategoryValue = &v
	return s
}

// SetMatchOperator sets the MatchOperator field's value.
func (s *CustomFilterConfiguration) SetMatchOperator(v string) *CustomFilterConfiguration {
	s.MatchOperator = &v
	return s
}

// SetNullOption sets the NullOption field's value.
func (s *CustomFilterConfiguration) SetNullOption(v string) *CustomFilterConfiguration {
	s.NullOption = &v
	return s
}

// SetParameterName sets the ParameterName field's value.
func (s *CustomFilterConfiguration) SetParameterName(v string) *CustomFilterConfiguration {
	s.ParameterName = &v
	return s
}

// SetSelectAllOptions sets the SelectAllOptions field's value.
func (s *CustomFilterConfiguration) SetSelectAllOptions(v string) *CustomFilterConfiguration {
	s.SelectAllOptions = &v
	return s
}

// A list of custom filter values.
type CustomFilterListConfiguration struct {
	_ struct{} `type:"structure"`

	// The list of category values for the filter.
	CategoryValues []*string `type:"list"`

	// The match operator that is used to determine if a filter should be applied.
	//
	// MatchOperator is a required field
	MatchOperator *string `type:"string" required:"true" enum:"CategoryFilterMatchOperator"`

	// This option determines how null values should be treated when filtering data.
	//
	//    * ALL_VALUES: Include null values in filtered results.
	//
	//    * NULLS_ONLY: Only include null values in filtered results.
	//
	//    * NON_NULLS_ONLY: Exclude null values from filtered results.
	//
	// NullOption is a required field
	NullOption *string `type:"string" required:"true" enum:"FilterNullOption"`

	// Select all of the values. Null is not the assigned value of select all.
	//
	//    * FILTER_ALL_VALUES
	SelectAllOptions *string `type:"string" enum:"CategoryFilterSelectAllOptions"`
}

// 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 CustomFilterListConfiguration) 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 CustomFilterListConfiguration) GoString() string {
	return s.String()
}

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

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

// SetCategoryValues sets the CategoryValues field's value.
func (s *CustomFilterListConfiguration) SetCategoryValues(v []*string) *CustomFilterListConfiguration {
	s.CategoryValues = v
	return s
}

// SetMatchOperator sets the MatchOperator field's value.
func (s *CustomFilterListConfiguration) SetMatchOperator(v string) *CustomFilterListConfiguration {
	s.MatchOperator = &v
	return s
}

// SetNullOption sets the NullOption field's value.
func (s *CustomFilterListConfiguration) SetNullOption(v string) *CustomFilterListConfiguration {
	s.NullOption = &v
	return s
}

// SetSelectAllOptions sets the SelectAllOptions field's value.
func (s *CustomFilterListConfiguration) SetSelectAllOptions(v string) *CustomFilterListConfiguration {
	s.SelectAllOptions = &v
	return s
}

// The custom narrative options.
type CustomNarrativeOptions struct {
	_ struct{} `type:"structure"`

	// The string input of custom narrative.
	//
	// Narrative is a required field
	Narrative *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomNarrativeOptions) 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 CustomNarrativeOptions) GoString() string {
	return s.String()
}

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

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

// SetNarrative sets the Narrative field's value.
func (s *CustomNarrativeOptions) SetNarrative(v string) *CustomNarrativeOptions {
	s.Narrative = &v
	return s
}

// The customized parameter values.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type CustomParameterValues struct {
	_ struct{} `type:"structure"`

	// A list of datetime-type parameter values.
	DateTimeValues []*time.Time `type:"list" sensitive:"true"`

	// A list of decimal-type parameter values.
	DecimalValues []*float64 `type:"list" sensitive:"true"`

	// A list of integer-type parameter values.
	IntegerValues []*int64 `type:"list" sensitive:"true"`

	// A list of string-type parameter values.
	StringValues []*string `type:"list" sensitive:"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 CustomParameterValues) 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 CustomParameterValues) GoString() string {
	return s.String()
}

// SetDateTimeValues sets the DateTimeValues field's value.
func (s *CustomParameterValues) SetDateTimeValues(v []*time.Time) *CustomParameterValues {
	s.DateTimeValues = v
	return s
}

// SetDecimalValues sets the DecimalValues field's value.
func (s *CustomParameterValues) SetDecimalValues(v []*float64) *CustomParameterValues {
	s.DecimalValues = v
	return s
}

// SetIntegerValues sets the IntegerValues field's value.
func (s *CustomParameterValues) SetIntegerValues(v []*int64) *CustomParameterValues {
	s.IntegerValues = v
	return s
}

// SetStringValues sets the StringValues field's value.
func (s *CustomParameterValues) SetStringValues(v []*string) *CustomParameterValues {
	s.StringValues = v
	return s
}

// A physical table type built from the results of the custom SQL query.
type CustomSql struct {
	_ struct{} `type:"structure"`

	// The column schema from the SQL query result set.
	Columns []*InputColumn `min:"1" type:"list"`

	// The Amazon Resource Name (ARN) of the data source.
	//
	// DataSourceArn is a required field
	DataSourceArn *string `type:"string" required:"true"`

	// A display name for the SQL query result.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The SQL query.
	//
	// SqlQuery is a required field
	SqlQuery *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomSql) 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 CustomSql) GoString() string {
	return s.String()
}

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

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

// SetColumns sets the Columns field's value.
func (s *CustomSql) SetColumns(v []*InputColumn) *CustomSql {
	s.Columns = v
	return s
}

// SetDataSourceArn sets the DataSourceArn field's value.
func (s *CustomSql) SetDataSourceArn(v string) *CustomSql {
	s.DataSourceArn = &v
	return s
}

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

// SetSqlQuery sets the SqlQuery field's value.
func (s *CustomSql) SetSqlQuery(v string) *CustomSql {
	s.SqlQuery = &v
	return s
}

// The configuration of custom values for the destination parameter in DestinationParameterValueConfiguration.
type CustomValuesConfiguration struct {
	_ struct{} `type:"structure"`

	// The customized parameter values.
	//
	// This is a union type structure. For this structure to be valid, only one
	// of the attributes can be defined.
	//
	// CustomValues is a required field
	CustomValues *CustomParameterValues `type:"structure" required:"true"`

	// Includes the null value in custom action parameter values.
	IncludeNullValue *bool `type:"boolean"`
}

// 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 CustomValuesConfiguration) 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 CustomValuesConfiguration) GoString() string {
	return s.String()
}

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

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

// SetCustomValues sets the CustomValues field's value.
func (s *CustomValuesConfiguration) SetCustomValues(v *CustomParameterValues) *CustomValuesConfiguration {
	s.CustomValues = v
	return s
}

// SetIncludeNullValue sets the IncludeNullValue field's value.
func (s *CustomValuesConfiguration) SetIncludeNullValue(v bool) *CustomValuesConfiguration {
	s.IncludeNullValue = &v
	return s
}

// Dashboard.
type Dashboard struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	Arn *string `type:"string"`

	// The time that this dashboard was created.
	CreatedTime *time.Time `type:"timestamp"`

	// Dashboard ID.
	DashboardId *string `min:"1" type:"string"`

	// The last time that this dashboard was published.
	LastPublishedTime *time.Time `type:"timestamp"`

	// The last time that this dashboard was updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// A list of analysis Amazon Resource Names (ARNs) to be linked to the dashboard.
	LinkEntities []*string `type:"list"`

	// A display name for the dashboard.
	Name *string `min:"1" type:"string"`

	// Version.
	Version *DashboardVersion `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 Dashboard) 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 Dashboard) GoString() string {
	return s.String()
}

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

// SetCreatedTime sets the CreatedTime field's value.
func (s *Dashboard) SetCreatedTime(v time.Time) *Dashboard {
	s.CreatedTime = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *Dashboard) SetDashboardId(v string) *Dashboard {
	s.DashboardId = &v
	return s
}

// SetLastPublishedTime sets the LastPublishedTime field's value.
func (s *Dashboard) SetLastPublishedTime(v time.Time) *Dashboard {
	s.LastPublishedTime = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *Dashboard) SetLastUpdatedTime(v time.Time) *Dashboard {
	s.LastUpdatedTime = &v
	return s
}

// SetLinkEntities sets the LinkEntities field's value.
func (s *Dashboard) SetLinkEntities(v []*string) *Dashboard {
	s.LinkEntities = v
	return s
}

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

// SetVersion sets the Version field's value.
func (s *Dashboard) SetVersion(v *DashboardVersion) *Dashboard {
	s.Version = v
	return s
}

// Dashboard error.
type DashboardError struct {
	_ struct{} `type:"structure"`

	// Message.
	Message *string `type:"string"`

	// Type.
	Type *string `type:"string" enum:"DashboardErrorType"`

	// Lists the violated entities that caused the dashboard error.
	ViolatedEntities []*Entity `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 DashboardError) 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 DashboardError) GoString() string {
	return s.String()
}

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

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

// SetViolatedEntities sets the ViolatedEntities field's value.
func (s *DashboardError) SetViolatedEntities(v []*Entity) *DashboardError {
	s.ViolatedEntities = v
	return s
}

// Dashboard publish options.
type DashboardPublishOptions struct {
	_ struct{} `type:"structure"`

	// Ad hoc (one-time) filtering option.
	AdHocFilteringOption *AdHocFilteringOption `type:"structure"`

	// The drill-down options of data points in a dashboard.
	DataPointDrillUpDownOption *DataPointDrillUpDownOption `type:"structure"`

	// The data point menu label options of a dashboard.
	DataPointMenuLabelOption *DataPointMenuLabelOption `type:"structure"`

	// The data point tool tip options of a dashboard.
	DataPointTooltipOption *DataPointTooltipOption `type:"structure"`

	// Export to .csv option.
	ExportToCSVOption *ExportToCSVOption `type:"structure"`

	// Determines if hidden fields are exported with a dashboard.
	ExportWithHiddenFieldsOption *ExportWithHiddenFieldsOption `type:"structure"`

	// Sheet controls option.
	SheetControlsOption *SheetControlsOption `type:"structure"`

	// The sheet layout maximization options of a dashbaord.
	SheetLayoutElementMaximizationOption *SheetLayoutElementMaximizationOption `type:"structure"`

	// The axis sort options of a dashboard.
	VisualAxisSortOption *VisualAxisSortOption `type:"structure"`

	// The menu options of a visual in a dashboard.
	VisualMenuOption *VisualMenuOption `type:"structure"`

	// The visual publish options of a visual in a dashboard.
	//
	// Deprecated: VisualPublishOptions property will reach its end of standard support in a future release. To perform this action, use ExportWithHiddenFields.
	VisualPublishOptions *DashboardVisualPublishOptions `deprecated:"true" 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 DashboardPublishOptions) 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 DashboardPublishOptions) GoString() string {
	return s.String()
}

// SetAdHocFilteringOption sets the AdHocFilteringOption field's value.
func (s *DashboardPublishOptions) SetAdHocFilteringOption(v *AdHocFilteringOption) *DashboardPublishOptions {
	s.AdHocFilteringOption = v
	return s
}

// SetDataPointDrillUpDownOption sets the DataPointDrillUpDownOption field's value.
func (s *DashboardPublishOptions) SetDataPointDrillUpDownOption(v *DataPointDrillUpDownOption) *DashboardPublishOptions {
	s.DataPointDrillUpDownOption = v
	return s
}

// SetDataPointMenuLabelOption sets the DataPointMenuLabelOption field's value.
func (s *DashboardPublishOptions) SetDataPointMenuLabelOption(v *DataPointMenuLabelOption) *DashboardPublishOptions {
	s.DataPointMenuLabelOption = v
	return s
}

// SetDataPointTooltipOption sets the DataPointTooltipOption field's value.
func (s *DashboardPublishOptions) SetDataPointTooltipOption(v *DataPointTooltipOption) *DashboardPublishOptions {
	s.DataPointTooltipOption = v
	return s
}

// SetExportToCSVOption sets the ExportToCSVOption field's value.
func (s *DashboardPublishOptions) SetExportToCSVOption(v *ExportToCSVOption) *DashboardPublishOptions {
	s.ExportToCSVOption = v
	return s
}

// SetExportWithHiddenFieldsOption sets the ExportWithHiddenFieldsOption field's value.
func (s *DashboardPublishOptions) SetExportWithHiddenFieldsOption(v *ExportWithHiddenFieldsOption) *DashboardPublishOptions {
	s.ExportWithHiddenFieldsOption = v
	return s
}

// SetSheetControlsOption sets the SheetControlsOption field's value.
func (s *DashboardPublishOptions) SetSheetControlsOption(v *SheetControlsOption) *DashboardPublishOptions {
	s.SheetControlsOption = v
	return s
}

// SetSheetLayoutElementMaximizationOption sets the SheetLayoutElementMaximizationOption field's value.
func (s *DashboardPublishOptions) SetSheetLayoutElementMaximizationOption(v *SheetLayoutElementMaximizationOption) *DashboardPublishOptions {
	s.SheetLayoutElementMaximizationOption = v
	return s
}

// SetVisualAxisSortOption sets the VisualAxisSortOption field's value.
func (s *DashboardPublishOptions) SetVisualAxisSortOption(v *VisualAxisSortOption) *DashboardPublishOptions {
	s.VisualAxisSortOption = v
	return s
}

// SetVisualMenuOption sets the VisualMenuOption field's value.
func (s *DashboardPublishOptions) SetVisualMenuOption(v *VisualMenuOption) *DashboardPublishOptions {
	s.VisualMenuOption = v
	return s
}

// SetVisualPublishOptions sets the VisualPublishOptions field's value.
func (s *DashboardPublishOptions) SetVisualPublishOptions(v *DashboardVisualPublishOptions) *DashboardPublishOptions {
	s.VisualPublishOptions = v
	return s
}

// A filter that you apply when searching for dashboards.
type DashboardSearchFilter struct {
	_ struct{} `type:"structure"`

	// The name of the value that you want to use as a filter, for example, "Name":
	// "QUICKSIGHT_OWNER".
	//
	// Valid values are defined as follows:
	//
	//    * QUICKSIGHT_VIEWER_OR_OWNER: Provide an ARN of a user or group, and any
	//    dashboards with that ARN listed as one of the dashboards's owners or viewers
	//    are returned. Implicit permissions from folders or groups are considered.
	//
	//    * QUICKSIGHT_OWNER: Provide an ARN of a user or group, and any dashboards
	//    with that ARN listed as one of the owners of the dashboards are returned.
	//    Implicit permissions from folders or groups are considered.
	//
	//    * DIRECT_QUICKSIGHT_SOLE_OWNER: Provide an ARN of a user or group, and
	//    any dashboards with that ARN listed as the only owner of the dashboard
	//    are returned. Implicit permissions from folders or groups are not considered.
	//
	//    * DIRECT_QUICKSIGHT_OWNER: Provide an ARN of a user or group, and any
	//    dashboards with that ARN listed as one of the owners of the dashboards
	//    are returned. Implicit permissions from folders or groups are not considered.
	//
	//    * DIRECT_QUICKSIGHT_VIEWER_OR_OWNER: Provide an ARN of a user or group,
	//    and any dashboards with that ARN listed as one of the owners or viewers
	//    of the dashboards are returned. Implicit permissions from folders or groups
	//    are not considered.
	//
	//    * DASHBOARD_NAME: Any dashboards whose names have a substring match to
	//    this value will be returned.
	Name *string `type:"string" enum:"DashboardFilterAttribute"`

	// The comparison operator that you want to use as a filter, for example "Operator":
	// "StringEquals". Valid values are "StringEquals" and "StringLike".
	//
	// If you set the operator value to "StringEquals", you need to provide an ownership
	// related filter in the "NAME" field and the arn of the user or group whose
	// folders you want to search in the "Value" field. For example, "Name":"DIRECT_QUICKSIGHT_OWNER",
	// "Operator": "StringEquals", "Value": "arn:aws:quicksight:us-east-1:1:user/default/UserName1".
	//
	// If you set the value to "StringLike", you need to provide the name of the
	// folders you are searching for. For example, "Name":"DASHBOARD_NAME", "Operator":
	// "StringLike", "Value": "Test". The "StringLike" operator only supports the
	// NAME value DASHBOARD_NAME.
	//
	// Operator is a required field
	Operator *string `type:"string" required:"true" enum:"FilterOperator"`

	// The value of the named item, in this case QUICKSIGHT_USER, that you want
	// to use as a filter, for example, "Value": "arn:aws:quicksight:us-east-1:1:user/default/UserName1".
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DashboardSearchFilter) 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 DashboardSearchFilter) GoString() string {
	return s.String()
}

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

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

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

// SetOperator sets the Operator field's value.
func (s *DashboardSearchFilter) SetOperator(v string) *DashboardSearchFilter {
	s.Operator = &v
	return s
}

// SetValue sets the Value field's value.
func (s *DashboardSearchFilter) SetValue(v string) *DashboardSearchFilter {
	s.Value = &v
	return s
}

// Dashboard source entity.
type DashboardSourceEntity struct {
	_ struct{} `type:"structure"`

	// Source template.
	SourceTemplate *DashboardSourceTemplate `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 DashboardSourceEntity) 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 DashboardSourceEntity) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DashboardSourceEntity) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DashboardSourceEntity"}
	if s.SourceTemplate != nil {
		if err := s.SourceTemplate.Validate(); err != nil {
			invalidParams.AddNested("SourceTemplate", err.(request.ErrInvalidParams))
		}
	}

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

// SetSourceTemplate sets the SourceTemplate field's value.
func (s *DashboardSourceEntity) SetSourceTemplate(v *DashboardSourceTemplate) *DashboardSourceEntity {
	s.SourceTemplate = v
	return s
}

// Dashboard source template.
type DashboardSourceTemplate struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// Dataset references.
	//
	// DataSetReferences is a required field
	DataSetReferences []*DataSetReference `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DashboardSourceTemplate) 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 DashboardSourceTemplate) GoString() string {
	return s.String()
}

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

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

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

// SetDataSetReferences sets the DataSetReferences field's value.
func (s *DashboardSourceTemplate) SetDataSetReferences(v []*DataSetReference) *DashboardSourceTemplate {
	s.DataSetReferences = v
	return s
}

// Dashboard summary.
type DashboardSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	Arn *string `type:"string"`

	// The time that this dashboard was created.
	CreatedTime *time.Time `type:"timestamp"`

	// Dashboard ID.
	DashboardId *string `min:"1" type:"string"`

	// The last time that this dashboard was published.
	LastPublishedTime *time.Time `type:"timestamp"`

	// The last time that this dashboard was updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// A display name for the dashboard.
	Name *string `min:"1" type:"string"`

	// Published version number.
	PublishedVersionNumber *int64 `min:"1" type:"long"`
}

// 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 DashboardSummary) 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 DashboardSummary) GoString() string {
	return s.String()
}

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

// SetCreatedTime sets the CreatedTime field's value.
func (s *DashboardSummary) SetCreatedTime(v time.Time) *DashboardSummary {
	s.CreatedTime = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *DashboardSummary) SetDashboardId(v string) *DashboardSummary {
	s.DashboardId = &v
	return s
}

// SetLastPublishedTime sets the LastPublishedTime field's value.
func (s *DashboardSummary) SetLastPublishedTime(v time.Time) *DashboardSummary {
	s.LastPublishedTime = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *DashboardSummary) SetLastUpdatedTime(v time.Time) *DashboardSummary {
	s.LastUpdatedTime = &v
	return s
}

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

// SetPublishedVersionNumber sets the PublishedVersionNumber field's value.
func (s *DashboardSummary) SetPublishedVersionNumber(v int64) *DashboardSummary {
	s.PublishedVersionNumber = &v
	return s
}

// Dashboard version.
type DashboardVersion struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	Arn *string `type:"string"`

	// The time that this dashboard version was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The Amazon Resource Numbers (ARNs) for the datasets that are associated with
	// this version of the dashboard.
	DataSetArns []*string `type:"list"`

	// Description.
	Description *string `min:"1" type:"string"`

	// Errors associated with this dashboard version.
	Errors []*DashboardError `min:"1" type:"list"`

	// A list of the associated sheets with the unique identifier and name of each
	// sheet.
	Sheets []*Sheet `type:"list"`

	// Source entity ARN.
	SourceEntityArn *string `type:"string"`

	// The HTTP status of the request.
	Status *string `type:"string" enum:"ResourceStatus"`

	// The ARN of the theme associated with a version of the dashboard.
	ThemeArn *string `type:"string"`

	// Version number for this version of the dashboard.
	VersionNumber *int64 `min:"1" type:"long"`
}

// 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 DashboardVersion) 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 DashboardVersion) GoString() string {
	return s.String()
}

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

// SetCreatedTime sets the CreatedTime field's value.
func (s *DashboardVersion) SetCreatedTime(v time.Time) *DashboardVersion {
	s.CreatedTime = &v
	return s
}

// SetDataSetArns sets the DataSetArns field's value.
func (s *DashboardVersion) SetDataSetArns(v []*string) *DashboardVersion {
	s.DataSetArns = v
	return s
}

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

// SetErrors sets the Errors field's value.
func (s *DashboardVersion) SetErrors(v []*DashboardError) *DashboardVersion {
	s.Errors = v
	return s
}

// SetSheets sets the Sheets field's value.
func (s *DashboardVersion) SetSheets(v []*Sheet) *DashboardVersion {
	s.Sheets = v
	return s
}

// SetSourceEntityArn sets the SourceEntityArn field's value.
func (s *DashboardVersion) SetSourceEntityArn(v string) *DashboardVersion {
	s.SourceEntityArn = &v
	return s
}

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

// SetThemeArn sets the ThemeArn field's value.
func (s *DashboardVersion) SetThemeArn(v string) *DashboardVersion {
	s.ThemeArn = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *DashboardVersion) SetVersionNumber(v int64) *DashboardVersion {
	s.VersionNumber = &v
	return s
}

// The contents of a dashboard.
type DashboardVersionDefinition struct {
	_ struct{} `type:"structure"`

	// The configuration for default analysis settings.
	AnalysisDefaults *AnalysisDefaults `type:"structure"`

	// An array of calculated field definitions for the dashboard.
	CalculatedFields []*CalculatedField `type:"list"`

	// An array of dashboard-level column configurations. Column configurations
	// are used to set the default formatting for a column that is used throughout
	// a dashboard.
	ColumnConfigurations []*ColumnConfiguration `type:"list"`

	// An array of dataset identifier declarations. With this mapping,you can use
	// dataset identifiers instead of dataset Amazon Resource Names (ARNs) throughout
	// the dashboard's sub-structures.
	//
	// DataSetIdentifierDeclarations is a required field
	DataSetIdentifierDeclarations []*DataSetIdentifierDeclaration `min:"1" type:"list" required:"true"`

	// The filter definitions for a dashboard.
	//
	// For more information, see Filtering Data in Amazon QuickSight (https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html)
	// in the Amazon QuickSight User Guide.
	FilterGroups []*FilterGroup `type:"list"`

	// An array of option definitions for a dashboard.
	Options *AssetOptions `type:"structure"`

	// The parameter declarations for a dashboard. Parameters are named variables
	// that can transfer a value for use by an action or an object.
	//
	// For more information, see Parameters in Amazon QuickSight (https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html)
	// in the Amazon QuickSight User Guide.
	ParameterDeclarations []*ParameterDeclaration `type:"list"`

	// An array of sheet definitions for a dashboard.
	Sheets []*SheetDefinition `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 DashboardVersionDefinition) 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 DashboardVersionDefinition) GoString() string {
	return s.String()
}

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

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

// SetAnalysisDefaults sets the AnalysisDefaults field's value.
func (s *DashboardVersionDefinition) SetAnalysisDefaults(v *AnalysisDefaults) *DashboardVersionDefinition {
	s.AnalysisDefaults = v
	return s
}

// SetCalculatedFields sets the CalculatedFields field's value.
func (s *DashboardVersionDefinition) SetCalculatedFields(v []*CalculatedField) *DashboardVersionDefinition {
	s.CalculatedFields = v
	return s
}

// SetColumnConfigurations sets the ColumnConfigurations field's value.
func (s *DashboardVersionDefinition) SetColumnConfigurations(v []*ColumnConfiguration) *DashboardVersionDefinition {
	s.ColumnConfigurations = v
	return s
}

// SetDataSetIdentifierDeclarations sets the DataSetIdentifierDeclarations field's value.
func (s *DashboardVersionDefinition) SetDataSetIdentifierDeclarations(v []*DataSetIdentifierDeclaration) *DashboardVersionDefinition {
	s.DataSetIdentifierDeclarations = v
	return s
}

// SetFilterGroups sets the FilterGroups field's value.
func (s *DashboardVersionDefinition) SetFilterGroups(v []*FilterGroup) *DashboardVersionDefinition {
	s.FilterGroups = v
	return s
}

// SetOptions sets the Options field's value.
func (s *DashboardVersionDefinition) SetOptions(v *AssetOptions) *DashboardVersionDefinition {
	s.Options = v
	return s
}

// SetParameterDeclarations sets the ParameterDeclarations field's value.
func (s *DashboardVersionDefinition) SetParameterDeclarations(v []*ParameterDeclaration) *DashboardVersionDefinition {
	s.ParameterDeclarations = v
	return s
}

// SetSheets sets the Sheets field's value.
func (s *DashboardVersionDefinition) SetSheets(v []*SheetDefinition) *DashboardVersionDefinition {
	s.Sheets = v
	return s
}

// Dashboard version summary.
type DashboardVersionSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	Arn *string `type:"string"`

	// The time that this dashboard version was created.
	CreatedTime *time.Time `type:"timestamp"`

	// Description.
	Description *string `min:"1" type:"string"`

	// Source entity ARN.
	SourceEntityArn *string `type:"string"`

	// The HTTP status of the request.
	Status *string `type:"string" enum:"ResourceStatus"`

	// Version number.
	VersionNumber *int64 `min:"1" type:"long"`
}

// 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 DashboardVersionSummary) 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 DashboardVersionSummary) GoString() string {
	return s.String()
}

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

// SetCreatedTime sets the CreatedTime field's value.
func (s *DashboardVersionSummary) SetCreatedTime(v time.Time) *DashboardVersionSummary {
	s.CreatedTime = &v
	return s
}

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

// SetSourceEntityArn sets the SourceEntityArn field's value.
func (s *DashboardVersionSummary) SetSourceEntityArn(v string) *DashboardVersionSummary {
	s.SourceEntityArn = &v
	return s
}

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

// SetVersionNumber sets the VersionNumber field's value.
func (s *DashboardVersionSummary) SetVersionNumber(v int64) *DashboardVersionSummary {
	s.VersionNumber = &v
	return s
}

// A structure that contains the following elements:
//
//   - The DashboardId of the dashboard that has the visual that you want to
//     embed.
//
//   - The SheetId of the sheet that has the visual that you want to embed.
//
//   - The VisualId of the visual that you want to embed.
//
// The DashboardId, SheetId, and VisualId can be found in the IDs for developers
// section of the Embed visual pane of the visual's on-visual menu of the Amazon
// QuickSight console. You can also get the DashboardId with a ListDashboards
// API operation.
type DashboardVisualId struct {
	_ struct{} `type:"structure"`

	// The ID of the dashboard that has the visual that you want to embed. The DashboardId
	// can be found in the IDs for developers section of the Embed visual pane of
	// the visual's on-visual menu of the Amazon QuickSight console. You can also
	// get the DashboardId with a ListDashboards API operation.
	//
	// DashboardId is a required field
	DashboardId *string `min:"1" type:"string" required:"true"`

	// The ID of the sheet that the has visual that you want to embed. The SheetId
	// can be found in the IDs for developers section of the Embed visual pane of
	// the visual's on-visual menu of the Amazon QuickSight console.
	//
	// SheetId is a required field
	SheetId *string `min:"1" type:"string" required:"true"`

	// The ID of the visual that you want to embed. The VisualID can be found in
	// the IDs for developers section of the Embed visual pane of the visual's on-visual
	// menu of the Amazon QuickSight console.
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DashboardVisualId) 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 DashboardVisualId) GoString() string {
	return s.String()
}

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

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

// SetDashboardId sets the DashboardId field's value.
func (s *DashboardVisualId) SetDashboardId(v string) *DashboardVisualId {
	s.DashboardId = &v
	return s
}

// SetSheetId sets the SheetId field's value.
func (s *DashboardVisualId) SetSheetId(v string) *DashboardVisualId {
	s.SheetId = &v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *DashboardVisualId) SetVisualId(v string) *DashboardVisualId {
	s.VisualId = &v
	return s
}

// The visual publish options of a visual in a dashboard
type DashboardVisualPublishOptions struct {
	_ struct{} `type:"structure"`

	// Determines if hidden fields are included in an exported dashboard.
	ExportHiddenFieldsOption *ExportHiddenFieldsOption `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 DashboardVisualPublishOptions) 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 DashboardVisualPublishOptions) GoString() string {
	return s.String()
}

// SetExportHiddenFieldsOption sets the ExportHiddenFieldsOption field's value.
func (s *DashboardVisualPublishOptions) SetExportHiddenFieldsOption(v *ExportHiddenFieldsOption) *DashboardVisualPublishOptions {
	s.ExportHiddenFieldsOption = v
	return s
}

// A structure that represents a data aggregation.
type DataAggregation struct {
	_ struct{} `type:"structure"`

	// The level of time precision that is used to aggregate DateTime values.
	DatasetRowDateGranularity *string `type:"string" enum:"TopicTimeGranularity"`

	// The column name for the default date.
	DefaultDateColumnName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataAggregation) 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 DataAggregation) GoString() string {
	return s.String()
}

// SetDatasetRowDateGranularity sets the DatasetRowDateGranularity field's value.
func (s *DataAggregation) SetDatasetRowDateGranularity(v string) *DataAggregation {
	s.DatasetRowDateGranularity = &v
	return s
}

// SetDefaultDateColumnName sets the DefaultDateColumnName field's value.
func (s *DataAggregation) SetDefaultDateColumnName(v string) *DataAggregation {
	s.DefaultDateColumnName = &v
	return s
}

// The options for data bars.
type DataBarsOptions struct {
	_ struct{} `type:"structure"`

	// The field ID for the data bars options.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The color of the negative data bar.
	NegativeColor *string `type:"string"`

	// The color of the positive data bar.
	PositiveColor *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataBarsOptions) 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 DataBarsOptions) GoString() string {
	return s.String()
}

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

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

// SetFieldId sets the FieldId field's value.
func (s *DataBarsOptions) SetFieldId(v string) *DataBarsOptions {
	s.FieldId = &v
	return s
}

// SetNegativeColor sets the NegativeColor field's value.
func (s *DataBarsOptions) SetNegativeColor(v string) *DataBarsOptions {
	s.NegativeColor = &v
	return s
}

// SetPositiveColor sets the PositiveColor field's value.
func (s *DataBarsOptions) SetPositiveColor(v string) *DataBarsOptions {
	s.PositiveColor = &v
	return s
}

// Determines the color that is applied to a particular data value.
type DataColor struct {
	_ struct{} `type:"structure"`

	// The color that is applied to the data value.
	Color *string `type:"string"`

	// The data value that the color is applied to.
	DataValue *float64 `type:"double"`
}

// 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 DataColor) 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 DataColor) GoString() string {
	return s.String()
}

// SetColor sets the Color field's value.
func (s *DataColor) SetColor(v string) *DataColor {
	s.Color = &v
	return s
}

// SetDataValue sets the DataValue field's value.
func (s *DataColor) SetDataValue(v float64) *DataColor {
	s.DataValue = &v
	return s
}

// The theme colors that are used for data colors in charts. The colors description
// is a hexadecimal color code that consists of six alphanumerical characters,
// prefixed with #, for example #37BFF5.
type DataColorPalette struct {
	_ struct{} `type:"structure"`

	// The hexadecimal codes for the colors.
	Colors []*string `type:"list"`

	// The hexadecimal code of a color that applies to charts where a lack of data
	// is highlighted.
	EmptyFillColor *string `type:"string"`

	// The minimum and maximum hexadecimal codes that describe a color gradient.
	MinMaxGradient []*string `type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataColorPalette) 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 DataColorPalette) GoString() string {
	return s.String()
}

// SetColors sets the Colors field's value.
func (s *DataColorPalette) SetColors(v []*string) *DataColorPalette {
	s.Colors = v
	return s
}

// SetEmptyFillColor sets the EmptyFillColor field's value.
func (s *DataColorPalette) SetEmptyFillColor(v string) *DataColorPalette {
	s.EmptyFillColor = &v
	return s
}

// SetMinMaxGradient sets the MinMaxGradient field's value.
func (s *DataColorPalette) SetMinMaxGradient(v []*string) *DataColorPalette {
	s.MinMaxGradient = v
	return s
}

// The data field series item configuration of a line chart.
type DataFieldSeriesItem struct {
	_ struct{} `type:"structure"`

	// The axis that you are binding the field to.
	//
	// AxisBinding is a required field
	AxisBinding *string `type:"string" required:"true" enum:"AxisBinding"`

	// The field ID of the field that you are setting the axis binding to.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The field value of the field that you are setting the axis binding to.
	//
	// FieldValue is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DataFieldSeriesItem's
	// String and GoString methods.
	FieldValue *string `type:"string" sensitive:"true"`

	// The options that determine the presentation of line series associated to
	// the field.
	Settings *LineChartSeriesSettings `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 DataFieldSeriesItem) 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 DataFieldSeriesItem) GoString() string {
	return s.String()
}

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

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

// SetAxisBinding sets the AxisBinding field's value.
func (s *DataFieldSeriesItem) SetAxisBinding(v string) *DataFieldSeriesItem {
	s.AxisBinding = &v
	return s
}

// SetFieldId sets the FieldId field's value.
func (s *DataFieldSeriesItem) SetFieldId(v string) *DataFieldSeriesItem {
	s.FieldId = &v
	return s
}

// SetFieldValue sets the FieldValue field's value.
func (s *DataFieldSeriesItem) SetFieldValue(v string) *DataFieldSeriesItem {
	s.FieldValue = &v
	return s
}

// SetSettings sets the Settings field's value.
func (s *DataFieldSeriesItem) SetSettings(v *LineChartSeriesSettings) *DataFieldSeriesItem {
	s.Settings = v
	return s
}

// The options that determine the presentation of the data labels.
type DataLabelOptions struct {
	_ struct{} `type:"structure"`

	// Determines the visibility of the category field labels.
	CategoryLabelVisibility *string `type:"string" enum:"Visibility"`

	// The option that determines the data label type.
	DataLabelTypes []*DataLabelType `type:"list"`

	// Determines the color of the data labels.
	LabelColor *string `type:"string"`

	// Determines the content of the data labels.
	LabelContent *string `type:"string" enum:"DataLabelContent"`

	// Determines the font configuration of the data labels.
	LabelFontConfiguration *FontConfiguration `type:"structure"`

	// Determines the visibility of the measure field labels.
	MeasureLabelVisibility *string `type:"string" enum:"Visibility"`

	// Determines whether overlap is enabled or disabled for the data labels.
	Overlap *string `type:"string" enum:"DataLabelOverlap"`

	// Determines the position of the data labels.
	Position *string `type:"string" enum:"DataLabelPosition"`

	// Determines the visibility of the total.
	TotalsVisibility *string `type:"string" enum:"Visibility"`

	// Determines the visibility of the data labels.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 DataLabelOptions) 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 DataLabelOptions) GoString() string {
	return s.String()
}

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

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

// SetCategoryLabelVisibility sets the CategoryLabelVisibility field's value.
func (s *DataLabelOptions) SetCategoryLabelVisibility(v string) *DataLabelOptions {
	s.CategoryLabelVisibility = &v
	return s
}

// SetDataLabelTypes sets the DataLabelTypes field's value.
func (s *DataLabelOptions) SetDataLabelTypes(v []*DataLabelType) *DataLabelOptions {
	s.DataLabelTypes = v
	return s
}

// SetLabelColor sets the LabelColor field's value.
func (s *DataLabelOptions) SetLabelColor(v string) *DataLabelOptions {
	s.LabelColor = &v
	return s
}

// SetLabelContent sets the LabelContent field's value.
func (s *DataLabelOptions) SetLabelContent(v string) *DataLabelOptions {
	s.LabelContent = &v
	return s
}

// SetLabelFontConfiguration sets the LabelFontConfiguration field's value.
func (s *DataLabelOptions) SetLabelFontConfiguration(v *FontConfiguration) *DataLabelOptions {
	s.LabelFontConfiguration = v
	return s
}

// SetMeasureLabelVisibility sets the MeasureLabelVisibility field's value.
func (s *DataLabelOptions) SetMeasureLabelVisibility(v string) *DataLabelOptions {
	s.MeasureLabelVisibility = &v
	return s
}

// SetOverlap sets the Overlap field's value.
func (s *DataLabelOptions) SetOverlap(v string) *DataLabelOptions {
	s.Overlap = &v
	return s
}

// SetPosition sets the Position field's value.
func (s *DataLabelOptions) SetPosition(v string) *DataLabelOptions {
	s.Position = &v
	return s
}

// SetTotalsVisibility sets the TotalsVisibility field's value.
func (s *DataLabelOptions) SetTotalsVisibility(v string) *DataLabelOptions {
	s.TotalsVisibility = &v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *DataLabelOptions) SetVisibility(v string) *DataLabelOptions {
	s.Visibility = &v
	return s
}

// The option that determines the data label type.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type DataLabelType struct {
	_ struct{} `type:"structure"`

	// The option that specifies individual data values for labels.
	DataPathLabelType *DataPathLabelType `type:"structure"`

	// Determines the label configuration for the entire field.
	FieldLabelType *FieldLabelType `type:"structure"`

	// Determines the label configuration for the maximum value in a visual.
	MaximumLabelType *MaximumLabelType `type:"structure"`

	// Determines the label configuration for the minimum value in a visual.
	MinimumLabelType *MinimumLabelType `type:"structure"`

	// Determines the label configuration for range end value in a visual.
	RangeEndsLabelType *RangeEndsLabelType `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 DataLabelType) 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 DataLabelType) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DataLabelType) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DataLabelType"}
	if s.DataPathLabelType != nil {
		if err := s.DataPathLabelType.Validate(); err != nil {
			invalidParams.AddNested("DataPathLabelType", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldLabelType != nil {
		if err := s.FieldLabelType.Validate(); err != nil {
			invalidParams.AddNested("FieldLabelType", err.(request.ErrInvalidParams))
		}
	}

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

// SetDataPathLabelType sets the DataPathLabelType field's value.
func (s *DataLabelType) SetDataPathLabelType(v *DataPathLabelType) *DataLabelType {
	s.DataPathLabelType = v
	return s
}

// SetFieldLabelType sets the FieldLabelType field's value.
func (s *DataLabelType) SetFieldLabelType(v *FieldLabelType) *DataLabelType {
	s.FieldLabelType = v
	return s
}

// SetMaximumLabelType sets the MaximumLabelType field's value.
func (s *DataLabelType) SetMaximumLabelType(v *MaximumLabelType) *DataLabelType {
	s.MaximumLabelType = v
	return s
}

// SetMinimumLabelType sets the MinimumLabelType field's value.
func (s *DataLabelType) SetMinimumLabelType(v *MinimumLabelType) *DataLabelType {
	s.MinimumLabelType = v
	return s
}

// SetRangeEndsLabelType sets the RangeEndsLabelType field's value.
func (s *DataLabelType) SetRangeEndsLabelType(v *RangeEndsLabelType) *DataLabelType {
	s.RangeEndsLabelType = v
	return s
}

// The color map that determines the color options for a particular element.
type DataPathColor struct {
	_ struct{} `type:"structure"`

	// The color that needs to be applied to the element.
	//
	// Color is a required field
	Color *string `type:"string" required:"true"`

	// The element that the color needs to be applied to.
	//
	// Element is a required field
	Element *DataPathValue `type:"structure" required:"true"`

	// The time granularity of the field that the color needs to be applied to.
	TimeGranularity *string `type:"string" enum:"TimeGranularity"`
}

// 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 DataPathColor) 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 DataPathColor) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DataPathColor) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DataPathColor"}
	if s.Color == nil {
		invalidParams.Add(request.NewErrParamRequired("Color"))
	}
	if s.Element == nil {
		invalidParams.Add(request.NewErrParamRequired("Element"))
	}
	if s.Element != nil {
		if err := s.Element.Validate(); err != nil {
			invalidParams.AddNested("Element", err.(request.ErrInvalidParams))
		}
	}

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

// SetColor sets the Color field's value.
func (s *DataPathColor) SetColor(v string) *DataPathColor {
	s.Color = &v
	return s
}

// SetElement sets the Element field's value.
func (s *DataPathColor) SetElement(v *DataPathValue) *DataPathColor {
	s.Element = v
	return s
}

// SetTimeGranularity sets the TimeGranularity field's value.
func (s *DataPathColor) SetTimeGranularity(v string) *DataPathColor {
	s.TimeGranularity = &v
	return s
}

// The option that specifies individual data values for labels.
type DataPathLabelType struct {
	_ struct{} `type:"structure"`

	// The field ID of the field that the data label needs to be applied to.
	FieldId *string `min:"1" type:"string"`

	// The actual value of the field that is labeled.
	//
	// FieldValue is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DataPathLabelType's
	// String and GoString methods.
	FieldValue *string `type:"string" sensitive:"true"`

	// The visibility of the data label.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 DataPathLabelType) 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 DataPathLabelType) GoString() string {
	return s.String()
}

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

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

// SetFieldId sets the FieldId field's value.
func (s *DataPathLabelType) SetFieldId(v string) *DataPathLabelType {
	s.FieldId = &v
	return s
}

// SetFieldValue sets the FieldValue field's value.
func (s *DataPathLabelType) SetFieldValue(v string) *DataPathLabelType {
	s.FieldValue = &v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *DataPathLabelType) SetVisibility(v string) *DataPathLabelType {
	s.Visibility = &v
	return s
}

// Allows data paths to be sorted by a specific data value.
type DataPathSort struct {
	_ struct{} `type:"structure"`

	// Determines the sort direction.
	//
	// Direction is a required field
	Direction *string `type:"string" required:"true" enum:"SortDirection"`

	// The list of data paths that need to be sorted.
	//
	// SortPaths is a required field
	SortPaths []*DataPathValue `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 DataPathSort) 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 DataPathSort) GoString() string {
	return s.String()
}

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

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

// SetDirection sets the Direction field's value.
func (s *DataPathSort) SetDirection(v string) *DataPathSort {
	s.Direction = &v
	return s
}

// SetSortPaths sets the SortPaths field's value.
func (s *DataPathSort) SetSortPaths(v []*DataPathValue) *DataPathSort {
	s.SortPaths = v
	return s
}

// The type of the data path value.
type DataPathType struct {
	_ struct{} `type:"structure"`

	// The type of data path value utilized in a pivot table. Choose one of the
	// following options:
	//
	//    * HIERARCHY_ROWS_LAYOUT_COLUMN - The type of data path for the rows layout
	//    column, when RowsLayout is set to HIERARCHY.
	//
	//    * MULTIPLE_ROW_METRICS_COLUMN - The type of data path for the metric column
	//    when the row is set to Metric Placement.
	//
	//    * EMPTY_COLUMN_HEADER - The type of data path for the column with empty
	//    column header, when there is no field in ColumnsFieldWell and the row
	//    is set to Metric Placement.
	//
	//    * COUNT_METRIC_COLUMN - The type of data path for the column with COUNT
	//    as the metric, when there is no field in the ValuesFieldWell.
	PivotTableDataPathType *string `type:"string" enum:"PivotTableDataPathType"`
}

// 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 DataPathType) 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 DataPathType) GoString() string {
	return s.String()
}

// SetPivotTableDataPathType sets the PivotTableDataPathType field's value.
func (s *DataPathType) SetPivotTableDataPathType(v string) *DataPathType {
	s.PivotTableDataPathType = &v
	return s
}

// The data path that needs to be sorted.
type DataPathValue struct {
	_ struct{} `type:"structure"`

	// The type configuration of the field.
	DataPathType *DataPathType `type:"structure"`

	// The field ID of the field that needs to be sorted.
	FieldId *string `min:"1" type:"string"`

	// The actual value of the field that needs to be sorted.
	//
	// FieldValue is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DataPathValue's
	// String and GoString methods.
	FieldValue *string `type:"string" sensitive:"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 DataPathValue) 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 DataPathValue) GoString() string {
	return s.String()
}

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

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

// SetDataPathType sets the DataPathType field's value.
func (s *DataPathValue) SetDataPathType(v *DataPathType) *DataPathValue {
	s.DataPathType = v
	return s
}

// SetFieldId sets the FieldId field's value.
func (s *DataPathValue) SetFieldId(v string) *DataPathValue {
	s.FieldId = &v
	return s
}

// SetFieldValue sets the FieldValue field's value.
func (s *DataPathValue) SetFieldValue(v string) *DataPathValue {
	s.FieldValue = &v
	return s
}

// The drill down options for data points in a dashbaord.
type DataPointDrillUpDownOption struct {
	_ struct{} `type:"structure"`

	// The status of the drill down options of data points.
	AvailabilityStatus *string `type:"string" enum:"DashboardBehavior"`
}

// 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 DataPointDrillUpDownOption) 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 DataPointDrillUpDownOption) GoString() string {
	return s.String()
}

// SetAvailabilityStatus sets the AvailabilityStatus field's value.
func (s *DataPointDrillUpDownOption) SetAvailabilityStatus(v string) *DataPointDrillUpDownOption {
	s.AvailabilityStatus = &v
	return s
}

// The data point menu options of a dashboard.
type DataPointMenuLabelOption struct {
	_ struct{} `type:"structure"`

	// The status of the data point menu options.
	AvailabilityStatus *string `type:"string" enum:"DashboardBehavior"`
}

// 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 DataPointMenuLabelOption) 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 DataPointMenuLabelOption) GoString() string {
	return s.String()
}

// SetAvailabilityStatus sets the AvailabilityStatus field's value.
func (s *DataPointMenuLabelOption) SetAvailabilityStatus(v string) *DataPointMenuLabelOption {
	s.AvailabilityStatus = &v
	return s
}

// The data point tooltip options.
type DataPointTooltipOption struct {
	_ struct{} `type:"structure"`

	// The status of the data point tool tip options.
	AvailabilityStatus *string `type:"string" enum:"DashboardBehavior"`
}

// 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 DataPointTooltipOption) 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 DataPointTooltipOption) GoString() string {
	return s.String()
}

// SetAvailabilityStatus sets the AvailabilityStatus field's value.
func (s *DataPointTooltipOption) SetAvailabilityStatus(v string) *DataPointTooltipOption {
	s.AvailabilityStatus = &v
	return s
}

// Dataset.
type DataSet struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	Arn *string `type:"string"`

	// Groupings of columns that work together in certain Amazon QuickSight features.
	// Currently, only geospatial hierarchy is supported.
	ColumnGroups []*ColumnGroup `min:"1" type:"list"`

	// A set of one or more definitions of a ColumnLevelPermissionRule (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnLevelPermissionRule.html) .
	ColumnLevelPermissionRules []*ColumnLevelPermissionRule `min:"1" type:"list"`

	// The amount of SPICE capacity used by this dataset. This is 0 if the dataset
	// isn't imported into SPICE.
	ConsumedSpiceCapacityInBytes *int64 `type:"long"`

	// The time that this dataset was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The ID of the dataset.
	DataSetId *string `type:"string"`

	// The usage configuration to apply to child datasets that reference this dataset
	// as a source.
	DataSetUsageConfiguration *DataSetUsageConfiguration `type:"structure"`

	// The parameters that are declared in a dataset.
	DatasetParameters []*DatasetParameter `min:"1" type:"list"`

	// The folder that contains fields and nested subfolders for your dataset.
	FieldFolders map[string]*FieldFolder `type:"map"`

	// A value that indicates whether you want to import the data into SPICE.
	ImportMode *string `type:"string" enum:"DataSetImportMode"`

	// The last time that this dataset was updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// Configures the combination and transformation of the data from the physical
	// tables.
	LogicalTableMap map[string]*LogicalTable `min:"1" type:"map"`

	// A display name for the dataset.
	Name *string `min:"1" type:"string"`

	// The list of columns after all transforms. These columns are available in
	// templates, analyses, and dashboards.
	OutputColumns []*OutputColumn `type:"list"`

	// Declares the physical tables that are available in the underlying data sources.
	PhysicalTableMap map[string]*PhysicalTable `type:"map"`

	// The row-level security configuration for the dataset.
	RowLevelPermissionDataSet *RowLevelPermissionDataSet `type:"structure"`

	// The element you can use to define tags for row-level security.
	RowLevelPermissionTagConfiguration *RowLevelPermissionTagConfiguration `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 DataSet) 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 DataSet) GoString() string {
	return s.String()
}

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

// SetColumnGroups sets the ColumnGroups field's value.
func (s *DataSet) SetColumnGroups(v []*ColumnGroup) *DataSet {
	s.ColumnGroups = v
	return s
}

// SetColumnLevelPermissionRules sets the ColumnLevelPermissionRules field's value.
func (s *DataSet) SetColumnLevelPermissionRules(v []*ColumnLevelPermissionRule) *DataSet {
	s.ColumnLevelPermissionRules = v
	return s
}

// SetConsumedSpiceCapacityInBytes sets the ConsumedSpiceCapacityInBytes field's value.
func (s *DataSet) SetConsumedSpiceCapacityInBytes(v int64) *DataSet {
	s.ConsumedSpiceCapacityInBytes = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *DataSet) SetCreatedTime(v time.Time) *DataSet {
	s.CreatedTime = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *DataSet) SetDataSetId(v string) *DataSet {
	s.DataSetId = &v
	return s
}

// SetDataSetUsageConfiguration sets the DataSetUsageConfiguration field's value.
func (s *DataSet) SetDataSetUsageConfiguration(v *DataSetUsageConfiguration) *DataSet {
	s.DataSetUsageConfiguration = v
	return s
}

// SetDatasetParameters sets the DatasetParameters field's value.
func (s *DataSet) SetDatasetParameters(v []*DatasetParameter) *DataSet {
	s.DatasetParameters = v
	return s
}

// SetFieldFolders sets the FieldFolders field's value.
func (s *DataSet) SetFieldFolders(v map[string]*FieldFolder) *DataSet {
	s.FieldFolders = v
	return s
}

// SetImportMode sets the ImportMode field's value.
func (s *DataSet) SetImportMode(v string) *DataSet {
	s.ImportMode = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *DataSet) SetLastUpdatedTime(v time.Time) *DataSet {
	s.LastUpdatedTime = &v
	return s
}

// SetLogicalTableMap sets the LogicalTableMap field's value.
func (s *DataSet) SetLogicalTableMap(v map[string]*LogicalTable) *DataSet {
	s.LogicalTableMap = v
	return s
}

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

// SetOutputColumns sets the OutputColumns field's value.
func (s *DataSet) SetOutputColumns(v []*OutputColumn) *DataSet {
	s.OutputColumns = v
	return s
}

// SetPhysicalTableMap sets the PhysicalTableMap field's value.
func (s *DataSet) SetPhysicalTableMap(v map[string]*PhysicalTable) *DataSet {
	s.PhysicalTableMap = v
	return s
}

// SetRowLevelPermissionDataSet sets the RowLevelPermissionDataSet field's value.
func (s *DataSet) SetRowLevelPermissionDataSet(v *RowLevelPermissionDataSet) *DataSet {
	s.RowLevelPermissionDataSet = v
	return s
}

// SetRowLevelPermissionTagConfiguration sets the RowLevelPermissionTagConfiguration field's value.
func (s *DataSet) SetRowLevelPermissionTagConfiguration(v *RowLevelPermissionTagConfiguration) *DataSet {
	s.RowLevelPermissionTagConfiguration = v
	return s
}

// Dataset configuration.
type DataSetConfiguration struct {
	_ struct{} `type:"structure"`

	// A structure containing the list of column group schemas.
	ColumnGroupSchemaList []*ColumnGroupSchema `type:"list"`

	// Dataset schema.
	DataSetSchema *DataSetSchema `type:"structure"`

	// Placeholder.
	Placeholder *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataSetConfiguration) 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 DataSetConfiguration) GoString() string {
	return s.String()
}

// SetColumnGroupSchemaList sets the ColumnGroupSchemaList field's value.
func (s *DataSetConfiguration) SetColumnGroupSchemaList(v []*ColumnGroupSchema) *DataSetConfiguration {
	s.ColumnGroupSchemaList = v
	return s
}

// SetDataSetSchema sets the DataSetSchema field's value.
func (s *DataSetConfiguration) SetDataSetSchema(v *DataSetSchema) *DataSetConfiguration {
	s.DataSetSchema = v
	return s
}

// SetPlaceholder sets the Placeholder field's value.
func (s *DataSetConfiguration) SetPlaceholder(v string) *DataSetConfiguration {
	s.Placeholder = &v
	return s
}

// A data set.
type DataSetIdentifierDeclaration struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the data set.
	//
	// DataSetArn is a required field
	DataSetArn *string `type:"string" required:"true"`

	// The identifier of the data set, typically the data set's name.
	//
	// Identifier is a required field
	Identifier *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataSetIdentifierDeclaration) 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 DataSetIdentifierDeclaration) GoString() string {
	return s.String()
}

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

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

// SetDataSetArn sets the DataSetArn field's value.
func (s *DataSetIdentifierDeclaration) SetDataSetArn(v string) *DataSetIdentifierDeclaration {
	s.DataSetArn = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *DataSetIdentifierDeclaration) SetIdentifier(v string) *DataSetIdentifierDeclaration {
	s.Identifier = &v
	return s
}

// Dataset reference.
type DataSetReference struct {
	_ struct{} `type:"structure"`

	// Dataset Amazon Resource Name (ARN).
	//
	// DataSetArn is a required field
	DataSetArn *string `type:"string" required:"true"`

	// Dataset placeholder.
	//
	// DataSetPlaceholder is a required field
	DataSetPlaceholder *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataSetReference) 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 DataSetReference) GoString() string {
	return s.String()
}

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

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

// SetDataSetArn sets the DataSetArn field's value.
func (s *DataSetReference) SetDataSetArn(v string) *DataSetReference {
	s.DataSetArn = &v
	return s
}

// SetDataSetPlaceholder sets the DataSetPlaceholder field's value.
func (s *DataSetReference) SetDataSetPlaceholder(v string) *DataSetReference {
	s.DataSetPlaceholder = &v
	return s
}

// The refresh properties of a dataset.
type DataSetRefreshProperties struct {
	_ struct{} `type:"structure"`

	// The refresh configuration for a dataset.
	//
	// RefreshConfiguration is a required field
	RefreshConfiguration *RefreshConfiguration `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 DataSetRefreshProperties) 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 DataSetRefreshProperties) GoString() string {
	return s.String()
}

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

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

// SetRefreshConfiguration sets the RefreshConfiguration field's value.
func (s *DataSetRefreshProperties) SetRefreshConfiguration(v *RefreshConfiguration) *DataSetRefreshProperties {
	s.RefreshConfiguration = v
	return s
}

// Dataset schema.
type DataSetSchema struct {
	_ struct{} `type:"structure"`

	// A structure containing the list of column schemas.
	ColumnSchemaList []*ColumnSchema `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 DataSetSchema) 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 DataSetSchema) GoString() string {
	return s.String()
}

// SetColumnSchemaList sets the ColumnSchemaList field's value.
func (s *DataSetSchema) SetColumnSchemaList(v []*ColumnSchema) *DataSetSchema {
	s.ColumnSchemaList = v
	return s
}

// A filter that you apply when searching for datasets.
type DataSetSearchFilter struct {
	_ struct{} `type:"structure"`

	// The name of the value that you want to use as a filter, for example, "Name":
	// "QUICKSIGHT_OWNER".
	//
	// Valid values are defined as follows:
	//
	//    * QUICKSIGHT_VIEWER_OR_OWNER: Provide an ARN of a user or group, and any
	//    datasets with that ARN listed as one of the dataset owners or viewers
	//    are returned. Implicit permissions from folders or groups are considered.
	//
	//    * QUICKSIGHT_OWNER: Provide an ARN of a user or group, and any datasets
	//    with that ARN listed as one of the owners of the dataset are returned.
	//    Implicit permissions from folders or groups are considered.
	//
	//    * DIRECT_QUICKSIGHT_SOLE_OWNER: Provide an ARN of a user or group, and
	//    any datasets with that ARN listed as the only owner of the dataset are
	//    returned. Implicit permissions from folders or groups are not considered.
	//
	//    * DIRECT_QUICKSIGHT_OWNER: Provide an ARN of a user or group, and any
	//    datasets with that ARN listed as one of the owners if the dataset are
	//    returned. Implicit permissions from folders or groups are not considered.
	//
	//    * DIRECT_QUICKSIGHT_VIEWER_OR_OWNER: Provide an ARN of a user or group,
	//    and any datasets with that ARN listed as one of the owners or viewers
	//    of the dataset are returned. Implicit permissions from folders or groups
	//    are not considered.
	//
	//    * DATASET_NAME: Any datasets whose names have a substring match to this
	//    value will be returned.
	//
	// Name is a required field
	Name *string `type:"string" required:"true" enum:"DataSetFilterAttribute"`

	// The comparison operator that you want to use as a filter, for example "Operator":
	// "StringEquals". Valid values are "StringEquals" and "StringLike".
	//
	// If you set the operator value to "StringEquals", you need to provide an ownership
	// related filter in the "NAME" field and the arn of the user or group whose
	// datasets you want to search in the "Value" field. For example, "Name":"QUICKSIGHT_OWNER",
	// "Operator": "StringEquals", "Value": "arn:aws:quicksight:us-east- 1:1:user/default/UserName1".
	//
	// If you set the value to "StringLike", you need to provide the name of the
	// datasets you are searching for. For example, "Name":"DATASET_NAME", "Operator":
	// "StringLike", "Value": "Test". The "StringLike" operator only supports the
	// NAME value DATASET_NAME.
	//
	// Operator is a required field
	Operator *string `type:"string" required:"true" enum:"FilterOperator"`

	// The value of the named item, in this case QUICKSIGHT_OWNER, that you want
	// to use as a filter, for example, "Value": "arn:aws:quicksight:us-east-1:1:user/default/UserName1".
	//
	// Value is a required field
	Value *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataSetSearchFilter) 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 DataSetSearchFilter) GoString() string {
	return s.String()
}

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

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

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

// SetOperator sets the Operator field's value.
func (s *DataSetSearchFilter) SetOperator(v string) *DataSetSearchFilter {
	s.Operator = &v
	return s
}

// SetValue sets the Value field's value.
func (s *DataSetSearchFilter) SetValue(v string) *DataSetSearchFilter {
	s.Value = &v
	return s
}

// Dataset summary.
type DataSetSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the dataset.
	Arn *string `type:"string"`

	// A value that indicates if the dataset has column level permission configured.
	ColumnLevelPermissionRulesApplied *bool `type:"boolean"`

	// The time that this dataset was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The ID of the dataset.
	DataSetId *string `type:"string"`

	// A value that indicates whether you want to import the data into SPICE.
	ImportMode *string `type:"string" enum:"DataSetImportMode"`

	// The last time that this dataset was updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// A display name for the dataset.
	Name *string `min:"1" type:"string"`

	// The row-level security configuration for the dataset.
	RowLevelPermissionDataSet *RowLevelPermissionDataSet `type:"structure"`

	// Whether or not the row level permission tags are applied.
	RowLevelPermissionTagConfigurationApplied *bool `type:"boolean"`
}

// 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 DataSetSummary) 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 DataSetSummary) GoString() string {
	return s.String()
}

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

// SetColumnLevelPermissionRulesApplied sets the ColumnLevelPermissionRulesApplied field's value.
func (s *DataSetSummary) SetColumnLevelPermissionRulesApplied(v bool) *DataSetSummary {
	s.ColumnLevelPermissionRulesApplied = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *DataSetSummary) SetCreatedTime(v time.Time) *DataSetSummary {
	s.CreatedTime = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *DataSetSummary) SetDataSetId(v string) *DataSetSummary {
	s.DataSetId = &v
	return s
}

// SetImportMode sets the ImportMode field's value.
func (s *DataSetSummary) SetImportMode(v string) *DataSetSummary {
	s.ImportMode = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *DataSetSummary) SetLastUpdatedTime(v time.Time) *DataSetSummary {
	s.LastUpdatedTime = &v
	return s
}

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

// SetRowLevelPermissionDataSet sets the RowLevelPermissionDataSet field's value.
func (s *DataSetSummary) SetRowLevelPermissionDataSet(v *RowLevelPermissionDataSet) *DataSetSummary {
	s.RowLevelPermissionDataSet = v
	return s
}

// SetRowLevelPermissionTagConfigurationApplied sets the RowLevelPermissionTagConfigurationApplied field's value.
func (s *DataSetSummary) SetRowLevelPermissionTagConfigurationApplied(v bool) *DataSetSummary {
	s.RowLevelPermissionTagConfigurationApplied = &v
	return s
}

// The usage configuration to apply to child datasets that reference this dataset
// as a source.
type DataSetUsageConfiguration struct {
	_ struct{} `type:"structure"`

	// An option that controls whether a child dataset of a direct query can use
	// this dataset as a source.
	DisableUseAsDirectQuerySource *bool `type:"boolean"`

	// An option that controls whether a child dataset that's stored in QuickSight
	// can use this dataset as a source.
	DisableUseAsImportedSource *bool `type:"boolean"`
}

// 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 DataSetUsageConfiguration) 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 DataSetUsageConfiguration) GoString() string {
	return s.String()
}

// SetDisableUseAsDirectQuerySource sets the DisableUseAsDirectQuerySource field's value.
func (s *DataSetUsageConfiguration) SetDisableUseAsDirectQuerySource(v bool) *DataSetUsageConfiguration {
	s.DisableUseAsDirectQuerySource = &v
	return s
}

// SetDisableUseAsImportedSource sets the DisableUseAsImportedSource field's value.
func (s *DataSetUsageConfiguration) SetDisableUseAsImportedSource(v bool) *DataSetUsageConfiguration {
	s.DisableUseAsImportedSource = &v
	return s
}

// The structure of a data source.
type DataSource struct {
	_ struct{} `type:"structure"`

	// A set of alternate data source parameters that you want to share for the
	// credentials stored with this data source. The credentials are applied in
	// tandem with the data source parameters when you copy a data source by using
	// a create or update request. The API operation compares the DataSourceParameters
	// structure that's in the request with the structures in the AlternateDataSourceParameters
	// allow list. If the structures are an exact match, the request is allowed
	// to use the credentials from this existing data source. If the AlternateDataSourceParameters
	// list is null, the Credentials originally used with this DataSourceParameters
	// are automatically allowed.
	AlternateDataSourceParameters []*DataSourceParameters `min:"1" type:"list"`

	// The Amazon Resource Name (ARN) of the data source.
	Arn *string `type:"string"`

	// The time that this data source was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The ID of the data source. This ID is unique per Amazon Web Services Region
	// for each Amazon Web Services account.
	DataSourceId *string `type:"string"`

	// The parameters that Amazon QuickSight uses to connect to your underlying
	// source. This is a variant type structure. For this structure to be valid,
	// only one of the attributes can be non-null.
	DataSourceParameters *DataSourceParameters `type:"structure"`

	// Error information from the last update or the creation of the data source.
	ErrorInfo *DataSourceErrorInfo `type:"structure"`

	// The last time that this data source was updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// A display name for the data source.
	Name *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the secret associated with the data source
	// in Amazon Secrets Manager.
	SecretArn *string `min:"1" type:"string"`

	// Secure Socket Layer (SSL) properties that apply when Amazon QuickSight connects
	// to your underlying source.
	SslProperties *SslProperties `type:"structure"`

	// The HTTP status of the request.
	Status *string `type:"string" enum:"ResourceStatus"`

	// The type of the data source. This type indicates which database engine the
	// data source connects to.
	Type *string `type:"string" enum:"DataSourceType"`

	// The VPC connection information. You need to use this parameter only when
	// you want Amazon QuickSight to use a VPC connection when connecting to your
	// underlying source.
	VpcConnectionProperties *VpcConnectionProperties `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 DataSource) 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 DataSource) GoString() string {
	return s.String()
}

// SetAlternateDataSourceParameters sets the AlternateDataSourceParameters field's value.
func (s *DataSource) SetAlternateDataSourceParameters(v []*DataSourceParameters) *DataSource {
	s.AlternateDataSourceParameters = v
	return s
}

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

// SetCreatedTime sets the CreatedTime field's value.
func (s *DataSource) SetCreatedTime(v time.Time) *DataSource {
	s.CreatedTime = &v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *DataSource) SetDataSourceId(v string) *DataSource {
	s.DataSourceId = &v
	return s
}

// SetDataSourceParameters sets the DataSourceParameters field's value.
func (s *DataSource) SetDataSourceParameters(v *DataSourceParameters) *DataSource {
	s.DataSourceParameters = v
	return s
}

// SetErrorInfo sets the ErrorInfo field's value.
func (s *DataSource) SetErrorInfo(v *DataSourceErrorInfo) *DataSource {
	s.ErrorInfo = v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *DataSource) SetLastUpdatedTime(v time.Time) *DataSource {
	s.LastUpdatedTime = &v
	return s
}

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

// SetSecretArn sets the SecretArn field's value.
func (s *DataSource) SetSecretArn(v string) *DataSource {
	s.SecretArn = &v
	return s
}

// SetSslProperties sets the SslProperties field's value.
func (s *DataSource) SetSslProperties(v *SslProperties) *DataSource {
	s.SslProperties = v
	return s
}

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

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

// SetVpcConnectionProperties sets the VpcConnectionProperties field's value.
func (s *DataSource) SetVpcConnectionProperties(v *VpcConnectionProperties) *DataSource {
	s.VpcConnectionProperties = v
	return s
}

// Data source credentials. This is a variant type structure. For this structure
// to be valid, only one of the attributes can be non-null.
type DataSourceCredentials struct {
	_ struct{} `type:"structure" sensitive:"true"`

	// The Amazon Resource Name (ARN) of a data source that has the credential pair
	// that you want to use. When CopySourceArn is not null, the credential pair
	// from the data source in the ARN is used as the credentials for the DataSourceCredentials
	// structure.
	CopySourceArn *string `type:"string"`

	// Credential pair. For more information, see CredentialPair (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CredentialPair.html) .
	CredentialPair *CredentialPair `type:"structure"`

	// The Amazon Resource Name (ARN) of the secret associated with the data source
	// in Amazon Secrets Manager.
	SecretArn *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataSourceCredentials) 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 DataSourceCredentials) GoString() string {
	return s.String()
}

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

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

// SetCopySourceArn sets the CopySourceArn field's value.
func (s *DataSourceCredentials) SetCopySourceArn(v string) *DataSourceCredentials {
	s.CopySourceArn = &v
	return s
}

// SetCredentialPair sets the CredentialPair field's value.
func (s *DataSourceCredentials) SetCredentialPair(v *CredentialPair) *DataSourceCredentials {
	s.CredentialPair = v
	return s
}

// SetSecretArn sets the SecretArn field's value.
func (s *DataSourceCredentials) SetSecretArn(v string) *DataSourceCredentials {
	s.SecretArn = &v
	return s
}

// Error information for the data source creation or update.
type DataSourceErrorInfo struct {
	_ struct{} `type:"structure"`

	// Error message.
	Message *string `type:"string"`

	// Error type.
	Type *string `type:"string" enum:"DataSourceErrorInfoType"`
}

// 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 DataSourceErrorInfo) 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 DataSourceErrorInfo) GoString() string {
	return s.String()
}

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

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

// The parameters that Amazon QuickSight uses to connect to your underlying
// data source. This is a variant type structure. For this structure to be valid,
// only one of the attributes can be non-null.
type DataSourceParameters struct {
	_ struct{} `type:"structure"`

	// The parameters for OpenSearch.
	AmazonElasticsearchParameters *AmazonElasticsearchParameters `type:"structure"`

	// The parameters for OpenSearch.
	AmazonOpenSearchParameters *AmazonOpenSearchParameters `type:"structure"`

	// The parameters for Amazon Athena.
	AthenaParameters *AthenaParameters `type:"structure"`

	// The parameters for Amazon Aurora MySQL.
	AuroraParameters *AuroraParameters `type:"structure"`

	// The parameters for Amazon Aurora.
	AuroraPostgreSqlParameters *AuroraPostgreSqlParameters `type:"structure"`

	// The parameters for IoT Analytics.
	AwsIotAnalyticsParameters *AwsIotAnalyticsParameters `type:"structure"`

	// The parameters that are required to connect to a Google BigQuery data source.
	BigQueryParameters *BigQueryParameters `type:"structure"`

	// The parameters that are required to connect to a Databricks data source.
	DatabricksParameters *DatabricksParameters `type:"structure"`

	// The parameters for Exasol.
	ExasolParameters *ExasolParameters `type:"structure"`

	// The parameters for Jira.
	JiraParameters *JiraParameters `type:"structure"`

	// The parameters for MariaDB.
	MariaDbParameters *MariaDbParameters `type:"structure"`

	// The parameters for MySQL.
	MySqlParameters *MySqlParameters `type:"structure"`

	// The parameters for Oracle.
	OracleParameters *OracleParameters `type:"structure"`

	// The parameters for PostgreSQL.
	PostgreSqlParameters *PostgreSqlParameters `type:"structure"`

	// The parameters for Presto.
	PrestoParameters *PrestoParameters `type:"structure"`

	// The parameters for Amazon RDS.
	RdsParameters *RdsParameters `type:"structure"`

	// The parameters for Amazon Redshift.
	RedshiftParameters *RedshiftParameters `type:"structure"`

	// The parameters for S3.
	S3Parameters *S3Parameters `type:"structure"`

	// The parameters for ServiceNow.
	ServiceNowParameters *ServiceNowParameters `type:"structure"`

	// The parameters for Snowflake.
	SnowflakeParameters *SnowflakeParameters `type:"structure"`

	// The parameters for Spark.
	SparkParameters *SparkParameters `type:"structure"`

	// The parameters for SQL Server.
	SqlServerParameters *SqlServerParameters `type:"structure"`

	// The parameters that are required to connect to a Starburst data source.
	StarburstParameters *StarburstParameters `type:"structure"`

	// The parameters for Teradata.
	TeradataParameters *TeradataParameters `type:"structure"`

	// The parameters that are required to connect to a Trino data source.
	TrinoParameters *TrinoParameters `type:"structure"`

	// The parameters for Twitter.
	TwitterParameters *TwitterParameters `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 DataSourceParameters) 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 DataSourceParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DataSourceParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DataSourceParameters"}
	if s.AmazonElasticsearchParameters != nil {
		if err := s.AmazonElasticsearchParameters.Validate(); err != nil {
			invalidParams.AddNested("AmazonElasticsearchParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.AmazonOpenSearchParameters != nil {
		if err := s.AmazonOpenSearchParameters.Validate(); err != nil {
			invalidParams.AddNested("AmazonOpenSearchParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.AthenaParameters != nil {
		if err := s.AthenaParameters.Validate(); err != nil {
			invalidParams.AddNested("AthenaParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.AuroraParameters != nil {
		if err := s.AuroraParameters.Validate(); err != nil {
			invalidParams.AddNested("AuroraParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.AuroraPostgreSqlParameters != nil {
		if err := s.AuroraPostgreSqlParameters.Validate(); err != nil {
			invalidParams.AddNested("AuroraPostgreSqlParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.AwsIotAnalyticsParameters != nil {
		if err := s.AwsIotAnalyticsParameters.Validate(); err != nil {
			invalidParams.AddNested("AwsIotAnalyticsParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.BigQueryParameters != nil {
		if err := s.BigQueryParameters.Validate(); err != nil {
			invalidParams.AddNested("BigQueryParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.DatabricksParameters != nil {
		if err := s.DatabricksParameters.Validate(); err != nil {
			invalidParams.AddNested("DatabricksParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.ExasolParameters != nil {
		if err := s.ExasolParameters.Validate(); err != nil {
			invalidParams.AddNested("ExasolParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.JiraParameters != nil {
		if err := s.JiraParameters.Validate(); err != nil {
			invalidParams.AddNested("JiraParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.MariaDbParameters != nil {
		if err := s.MariaDbParameters.Validate(); err != nil {
			invalidParams.AddNested("MariaDbParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.MySqlParameters != nil {
		if err := s.MySqlParameters.Validate(); err != nil {
			invalidParams.AddNested("MySqlParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.OracleParameters != nil {
		if err := s.OracleParameters.Validate(); err != nil {
			invalidParams.AddNested("OracleParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.PostgreSqlParameters != nil {
		if err := s.PostgreSqlParameters.Validate(); err != nil {
			invalidParams.AddNested("PostgreSqlParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.PrestoParameters != nil {
		if err := s.PrestoParameters.Validate(); err != nil {
			invalidParams.AddNested("PrestoParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.RdsParameters != nil {
		if err := s.RdsParameters.Validate(); err != nil {
			invalidParams.AddNested("RdsParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.RedshiftParameters != nil {
		if err := s.RedshiftParameters.Validate(); err != nil {
			invalidParams.AddNested("RedshiftParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.S3Parameters != nil {
		if err := s.S3Parameters.Validate(); err != nil {
			invalidParams.AddNested("S3Parameters", err.(request.ErrInvalidParams))
		}
	}
	if s.ServiceNowParameters != nil {
		if err := s.ServiceNowParameters.Validate(); err != nil {
			invalidParams.AddNested("ServiceNowParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.SnowflakeParameters != nil {
		if err := s.SnowflakeParameters.Validate(); err != nil {
			invalidParams.AddNested("SnowflakeParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.SparkParameters != nil {
		if err := s.SparkParameters.Validate(); err != nil {
			invalidParams.AddNested("SparkParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.SqlServerParameters != nil {
		if err := s.SqlServerParameters.Validate(); err != nil {
			invalidParams.AddNested("SqlServerParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.StarburstParameters != nil {
		if err := s.StarburstParameters.Validate(); err != nil {
			invalidParams.AddNested("StarburstParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.TeradataParameters != nil {
		if err := s.TeradataParameters.Validate(); err != nil {
			invalidParams.AddNested("TeradataParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.TrinoParameters != nil {
		if err := s.TrinoParameters.Validate(); err != nil {
			invalidParams.AddNested("TrinoParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.TwitterParameters != nil {
		if err := s.TwitterParameters.Validate(); err != nil {
			invalidParams.AddNested("TwitterParameters", err.(request.ErrInvalidParams))
		}
	}

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

// SetAmazonElasticsearchParameters sets the AmazonElasticsearchParameters field's value.
func (s *DataSourceParameters) SetAmazonElasticsearchParameters(v *AmazonElasticsearchParameters) *DataSourceParameters {
	s.AmazonElasticsearchParameters = v
	return s
}

// SetAmazonOpenSearchParameters sets the AmazonOpenSearchParameters field's value.
func (s *DataSourceParameters) SetAmazonOpenSearchParameters(v *AmazonOpenSearchParameters) *DataSourceParameters {
	s.AmazonOpenSearchParameters = v
	return s
}

// SetAthenaParameters sets the AthenaParameters field's value.
func (s *DataSourceParameters) SetAthenaParameters(v *AthenaParameters) *DataSourceParameters {
	s.AthenaParameters = v
	return s
}

// SetAuroraParameters sets the AuroraParameters field's value.
func (s *DataSourceParameters) SetAuroraParameters(v *AuroraParameters) *DataSourceParameters {
	s.AuroraParameters = v
	return s
}

// SetAuroraPostgreSqlParameters sets the AuroraPostgreSqlParameters field's value.
func (s *DataSourceParameters) SetAuroraPostgreSqlParameters(v *AuroraPostgreSqlParameters) *DataSourceParameters {
	s.AuroraPostgreSqlParameters = v
	return s
}

// SetAwsIotAnalyticsParameters sets the AwsIotAnalyticsParameters field's value.
func (s *DataSourceParameters) SetAwsIotAnalyticsParameters(v *AwsIotAnalyticsParameters) *DataSourceParameters {
	s.AwsIotAnalyticsParameters = v
	return s
}

// SetBigQueryParameters sets the BigQueryParameters field's value.
func (s *DataSourceParameters) SetBigQueryParameters(v *BigQueryParameters) *DataSourceParameters {
	s.BigQueryParameters = v
	return s
}

// SetDatabricksParameters sets the DatabricksParameters field's value.
func (s *DataSourceParameters) SetDatabricksParameters(v *DatabricksParameters) *DataSourceParameters {
	s.DatabricksParameters = v
	return s
}

// SetExasolParameters sets the ExasolParameters field's value.
func (s *DataSourceParameters) SetExasolParameters(v *ExasolParameters) *DataSourceParameters {
	s.ExasolParameters = v
	return s
}

// SetJiraParameters sets the JiraParameters field's value.
func (s *DataSourceParameters) SetJiraParameters(v *JiraParameters) *DataSourceParameters {
	s.JiraParameters = v
	return s
}

// SetMariaDbParameters sets the MariaDbParameters field's value.
func (s *DataSourceParameters) SetMariaDbParameters(v *MariaDbParameters) *DataSourceParameters {
	s.MariaDbParameters = v
	return s
}

// SetMySqlParameters sets the MySqlParameters field's value.
func (s *DataSourceParameters) SetMySqlParameters(v *MySqlParameters) *DataSourceParameters {
	s.MySqlParameters = v
	return s
}

// SetOracleParameters sets the OracleParameters field's value.
func (s *DataSourceParameters) SetOracleParameters(v *OracleParameters) *DataSourceParameters {
	s.OracleParameters = v
	return s
}

// SetPostgreSqlParameters sets the PostgreSqlParameters field's value.
func (s *DataSourceParameters) SetPostgreSqlParameters(v *PostgreSqlParameters) *DataSourceParameters {
	s.PostgreSqlParameters = v
	return s
}

// SetPrestoParameters sets the PrestoParameters field's value.
func (s *DataSourceParameters) SetPrestoParameters(v *PrestoParameters) *DataSourceParameters {
	s.PrestoParameters = v
	return s
}

// SetRdsParameters sets the RdsParameters field's value.
func (s *DataSourceParameters) SetRdsParameters(v *RdsParameters) *DataSourceParameters {
	s.RdsParameters = v
	return s
}

// SetRedshiftParameters sets the RedshiftParameters field's value.
func (s *DataSourceParameters) SetRedshiftParameters(v *RedshiftParameters) *DataSourceParameters {
	s.RedshiftParameters = v
	return s
}

// SetS3Parameters sets the S3Parameters field's value.
func (s *DataSourceParameters) SetS3Parameters(v *S3Parameters) *DataSourceParameters {
	s.S3Parameters = v
	return s
}

// SetServiceNowParameters sets the ServiceNowParameters field's value.
func (s *DataSourceParameters) SetServiceNowParameters(v *ServiceNowParameters) *DataSourceParameters {
	s.ServiceNowParameters = v
	return s
}

// SetSnowflakeParameters sets the SnowflakeParameters field's value.
func (s *DataSourceParameters) SetSnowflakeParameters(v *SnowflakeParameters) *DataSourceParameters {
	s.SnowflakeParameters = v
	return s
}

// SetSparkParameters sets the SparkParameters field's value.
func (s *DataSourceParameters) SetSparkParameters(v *SparkParameters) *DataSourceParameters {
	s.SparkParameters = v
	return s
}

// SetSqlServerParameters sets the SqlServerParameters field's value.
func (s *DataSourceParameters) SetSqlServerParameters(v *SqlServerParameters) *DataSourceParameters {
	s.SqlServerParameters = v
	return s
}

// SetStarburstParameters sets the StarburstParameters field's value.
func (s *DataSourceParameters) SetStarburstParameters(v *StarburstParameters) *DataSourceParameters {
	s.StarburstParameters = v
	return s
}

// SetTeradataParameters sets the TeradataParameters field's value.
func (s *DataSourceParameters) SetTeradataParameters(v *TeradataParameters) *DataSourceParameters {
	s.TeradataParameters = v
	return s
}

// SetTrinoParameters sets the TrinoParameters field's value.
func (s *DataSourceParameters) SetTrinoParameters(v *TrinoParameters) *DataSourceParameters {
	s.TrinoParameters = v
	return s
}

// SetTwitterParameters sets the TwitterParameters field's value.
func (s *DataSourceParameters) SetTwitterParameters(v *TwitterParameters) *DataSourceParameters {
	s.TwitterParameters = v
	return s
}

// A filter that you apply when searching for data sources.
type DataSourceSearchFilter struct {
	_ struct{} `type:"structure"`

	// The name of the value that you want to use as a filter, for example, "Name":
	// "DIRECT_QUICKSIGHT_OWNER".
	//
	// Valid values are defined as follows:
	//
	//    * DIRECT_QUICKSIGHT_VIEWER_OR_OWNER: Provide an ARN of a user or group,
	//    and any data sources with that ARN listed as one of the owners or viewers
	//    of the data sources are returned. Implicit permissions from folders or
	//    groups are not considered.
	//
	//    * DIRECT_QUICKSIGHT_OWNER: Provide an ARN of a user or group, and any
	//    data sources with that ARN listed as one of the owners if the data source
	//    are returned. Implicit permissions from folders or groups are not considered.
	//
	//    * DIRECT_QUICKSIGHT_SOLE_OWNER: Provide an ARN of a user or group, and
	//    any data sources with that ARN listed as the only owner of the data source
	//    are returned. Implicit permissions from folders or groups are not considered.
	//
	//    * DATASOURCE_NAME: Any data sources whose names have a substring match
	//    to the provided value are returned.
	//
	// Name is a required field
	Name *string `type:"string" required:"true" enum:"DataSourceFilterAttribute"`

	// The comparison operator that you want to use as a filter, for example "Operator":
	// "StringEquals". Valid values are "StringEquals" and "StringLike".
	//
	// If you set the operator value to "StringEquals", you need to provide an ownership
	// related filter in the "NAME" field and the arn of the user or group whose
	// data sources you want to search in the "Value" field. For example, "Name":"DIRECT_QUICKSIGHT_OWNER",
	// "Operator": "StringEquals", "Value": "arn:aws:quicksight:us-east-1:1:user/default/UserName1".
	//
	// If you set the value to "StringLike", you need to provide the name of the
	// data sources you are searching for. For example, "Name":"DATASOURCE_NAME",
	// "Operator": "StringLike", "Value": "Test". The "StringLike" operator only
	// supports the NAME value DATASOURCE_NAME.
	//
	// Operator is a required field
	Operator *string `type:"string" required:"true" enum:"FilterOperator"`

	// The value of the named item, for example DIRECT_QUICKSIGHT_OWNER, that you
	// want to use as a filter, for example, "Value": "arn:aws:quicksight:us-east-1:1:user/default/UserName1".
	//
	// Value is a required field
	Value *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataSourceSearchFilter) 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 DataSourceSearchFilter) GoString() string {
	return s.String()
}

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

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

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

// SetOperator sets the Operator field's value.
func (s *DataSourceSearchFilter) SetOperator(v string) *DataSourceSearchFilter {
	s.Operator = &v
	return s
}

// SetValue sets the Value field's value.
func (s *DataSourceSearchFilter) SetValue(v string) *DataSourceSearchFilter {
	s.Value = &v
	return s
}

// A DataSourceSummary object that returns a summary of a data source.
type DataSourceSummary struct {
	_ struct{} `type:"structure"`

	// The arn of the datasource.
	Arn *string `type:"string"`

	// The date and time that the data source was created. This value is expressed
	// in MM-DD-YYYY HH:MM:SS format.
	CreatedTime *time.Time `type:"timestamp"`

	// The unique ID of the data source.
	DataSourceId *string `type:"string"`

	// The date and time the data source was last updated. This value is expressed
	// in MM-DD-YYYY HH:MM:SS format.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// The name of the data source.
	Name *string `min:"1" type:"string"`

	// The type of the data source.
	Type *string `type:"string" enum:"DataSourceType"`
}

// 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 DataSourceSummary) 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 DataSourceSummary) GoString() string {
	return s.String()
}

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

// SetCreatedTime sets the CreatedTime field's value.
func (s *DataSourceSummary) SetCreatedTime(v time.Time) *DataSourceSummary {
	s.CreatedTime = &v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *DataSourceSummary) SetDataSourceId(v string) *DataSourceSummary {
	s.DataSourceId = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *DataSourceSummary) SetLastUpdatedTime(v time.Time) *DataSourceSummary {
	s.LastUpdatedTime = &v
	return s
}

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

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

// The parameters that are required to connect to a Databricks data source.
type DatabricksParameters struct {
	_ struct{} `type:"structure"`

	// The host name of the Databricks data source.
	//
	// Host is a required field
	Host *string `min:"1" type:"string" required:"true"`

	// The port for the Databricks data source.
	//
	// Port is a required field
	Port *int64 `min:"1" type:"integer" required:"true"`

	// The HTTP path of the Databricks data source.
	//
	// SqlEndpointPath is a required field
	SqlEndpointPath *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DatabricksParameters) 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 DatabricksParameters) GoString() string {
	return s.String()
}

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

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

// SetHost sets the Host field's value.
func (s *DatabricksParameters) SetHost(v string) *DatabricksParameters {
	s.Host = &v
	return s
}

// SetPort sets the Port field's value.
func (s *DatabricksParameters) SetPort(v int64) *DatabricksParameters {
	s.Port = &v
	return s
}

// SetSqlEndpointPath sets the SqlEndpointPath field's value.
func (s *DatabricksParameters) SetSqlEndpointPath(v string) *DatabricksParameters {
	s.SqlEndpointPath = &v
	return s
}

// A structure that represents a dataset.
type DatasetMetadata struct {
	_ struct{} `type:"structure"`

	// The list of calculated field definitions.
	CalculatedFields []*TopicCalculatedField `type:"list"`

	// The list of column definitions.
	Columns []*TopicColumn `type:"list"`

	// The definition of a data aggregation.
	DataAggregation *DataAggregation `type:"structure"`

	// The Amazon Resource Name (ARN) of the dataset.
	//
	// DatasetArn is a required field
	DatasetArn *string `type:"string" required:"true"`

	// The description of the dataset.
	DatasetDescription *string `type:"string"`

	// The name of the dataset.
	DatasetName *string `type:"string"`

	// The list of filter definitions.
	Filters []*TopicFilter `type:"list"`

	// The list of named entities definitions.
	NamedEntities []*TopicNamedEntity `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 DatasetMetadata) 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 DatasetMetadata) GoString() string {
	return s.String()
}

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

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

// SetCalculatedFields sets the CalculatedFields field's value.
func (s *DatasetMetadata) SetCalculatedFields(v []*TopicCalculatedField) *DatasetMetadata {
	s.CalculatedFields = v
	return s
}

// SetColumns sets the Columns field's value.
func (s *DatasetMetadata) SetColumns(v []*TopicColumn) *DatasetMetadata {
	s.Columns = v
	return s
}

// SetDataAggregation sets the DataAggregation field's value.
func (s *DatasetMetadata) SetDataAggregation(v *DataAggregation) *DatasetMetadata {
	s.DataAggregation = v
	return s
}

// SetDatasetArn sets the DatasetArn field's value.
func (s *DatasetMetadata) SetDatasetArn(v string) *DatasetMetadata {
	s.DatasetArn = &v
	return s
}

// SetDatasetDescription sets the DatasetDescription field's value.
func (s *DatasetMetadata) SetDatasetDescription(v string) *DatasetMetadata {
	s.DatasetDescription = &v
	return s
}

// SetDatasetName sets the DatasetName field's value.
func (s *DatasetMetadata) SetDatasetName(v string) *DatasetMetadata {
	s.DatasetName = &v
	return s
}

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

// SetNamedEntities sets the NamedEntities field's value.
func (s *DatasetMetadata) SetNamedEntities(v []*TopicNamedEntity) *DatasetMetadata {
	s.NamedEntities = v
	return s
}

// A parameter that is created in a dataset. The parameter can be a string,
// integer, decimal, or datetime data type.
type DatasetParameter struct {
	_ struct{} `type:"structure"`

	// A date time parameter that is created in the dataset.
	DateTimeDatasetParameter *DateTimeDatasetParameter `type:"structure"`

	// A decimal parameter that is created in the dataset.
	DecimalDatasetParameter *DecimalDatasetParameter `type:"structure"`

	// An integer parameter that is created in the dataset.
	IntegerDatasetParameter *IntegerDatasetParameter `type:"structure"`

	// A string parameter that is created in the dataset.
	StringDatasetParameter *StringDatasetParameter `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 DatasetParameter) 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 DatasetParameter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DatasetParameter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DatasetParameter"}
	if s.DateTimeDatasetParameter != nil {
		if err := s.DateTimeDatasetParameter.Validate(); err != nil {
			invalidParams.AddNested("DateTimeDatasetParameter", err.(request.ErrInvalidParams))
		}
	}
	if s.DecimalDatasetParameter != nil {
		if err := s.DecimalDatasetParameter.Validate(); err != nil {
			invalidParams.AddNested("DecimalDatasetParameter", err.(request.ErrInvalidParams))
		}
	}
	if s.IntegerDatasetParameter != nil {
		if err := s.IntegerDatasetParameter.Validate(); err != nil {
			invalidParams.AddNested("IntegerDatasetParameter", err.(request.ErrInvalidParams))
		}
	}
	if s.StringDatasetParameter != nil {
		if err := s.StringDatasetParameter.Validate(); err != nil {
			invalidParams.AddNested("StringDatasetParameter", err.(request.ErrInvalidParams))
		}
	}

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

// SetDateTimeDatasetParameter sets the DateTimeDatasetParameter field's value.
func (s *DatasetParameter) SetDateTimeDatasetParameter(v *DateTimeDatasetParameter) *DatasetParameter {
	s.DateTimeDatasetParameter = v
	return s
}

// SetDecimalDatasetParameter sets the DecimalDatasetParameter field's value.
func (s *DatasetParameter) SetDecimalDatasetParameter(v *DecimalDatasetParameter) *DatasetParameter {
	s.DecimalDatasetParameter = v
	return s
}

// SetIntegerDatasetParameter sets the IntegerDatasetParameter field's value.
func (s *DatasetParameter) SetIntegerDatasetParameter(v *IntegerDatasetParameter) *DatasetParameter {
	s.IntegerDatasetParameter = v
	return s
}

// SetStringDatasetParameter sets the StringDatasetParameter field's value.
func (s *DatasetParameter) SetStringDatasetParameter(v *StringDatasetParameter) *DatasetParameter {
	s.StringDatasetParameter = v
	return s
}

// The options that determine how a date axis is displayed.
type DateAxisOptions struct {
	_ struct{} `type:"structure"`

	// Determines whether or not missing dates are displayed.
	MissingDateVisibility *string `type:"string" enum:"Visibility"`
}

// 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 DateAxisOptions) 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 DateAxisOptions) GoString() string {
	return s.String()
}

// SetMissingDateVisibility sets the MissingDateVisibility field's value.
func (s *DateAxisOptions) SetMissingDateVisibility(v string) *DateAxisOptions {
	s.MissingDateVisibility = &v
	return s
}

// The dimension type field with date type columns.
type DateDimensionField struct {
	_ struct{} `type:"structure"`

	// The column that is used in the DateDimensionField.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The date granularity of the DateDimensionField. Choose one of the following
	// options:
	//
	//    * YEAR
	//
	//    * QUARTER
	//
	//    * MONTH
	//
	//    * WEEK
	//
	//    * DAY
	//
	//    * HOUR
	//
	//    * MINUTE
	//
	//    * SECOND
	//
	//    * MILLISECOND
	DateGranularity *string `type:"string" enum:"TimeGranularity"`

	// The custom field ID.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The format configuration of the field.
	FormatConfiguration *DateTimeFormatConfiguration `type:"structure"`

	// The custom hierarchy ID.
	HierarchyId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DateDimensionField) 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 DateDimensionField) GoString() string {
	return s.String()
}

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

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

// SetColumn sets the Column field's value.
func (s *DateDimensionField) SetColumn(v *ColumnIdentifier) *DateDimensionField {
	s.Column = v
	return s
}

// SetDateGranularity sets the DateGranularity field's value.
func (s *DateDimensionField) SetDateGranularity(v string) *DateDimensionField {
	s.DateGranularity = &v
	return s
}

// SetFieldId sets the FieldId field's value.
func (s *DateDimensionField) SetFieldId(v string) *DateDimensionField {
	s.FieldId = &v
	return s
}

// SetFormatConfiguration sets the FormatConfiguration field's value.
func (s *DateDimensionField) SetFormatConfiguration(v *DateTimeFormatConfiguration) *DateDimensionField {
	s.FormatConfiguration = v
	return s
}

// SetHierarchyId sets the HierarchyId field's value.
func (s *DateDimensionField) SetHierarchyId(v string) *DateDimensionField {
	s.HierarchyId = &v
	return s
}

// The measure type field with date type columns.
type DateMeasureField struct {
	_ struct{} `type:"structure"`

	// The aggregation function of the measure field.
	AggregationFunction *string `type:"string" enum:"DateAggregationFunction"`

	// The column that is used in the DateMeasureField.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The custom field ID.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The format configuration of the field.
	FormatConfiguration *DateTimeFormatConfiguration `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 DateMeasureField) 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 DateMeasureField) GoString() string {
	return s.String()
}

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

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

// SetAggregationFunction sets the AggregationFunction field's value.
func (s *DateMeasureField) SetAggregationFunction(v string) *DateMeasureField {
	s.AggregationFunction = &v
	return s
}

// SetColumn sets the Column field's value.
func (s *DateMeasureField) SetColumn(v *ColumnIdentifier) *DateMeasureField {
	s.Column = v
	return s
}

// SetFieldId sets the FieldId field's value.
func (s *DateMeasureField) SetFieldId(v string) *DateMeasureField {
	s.FieldId = &v
	return s
}

// SetFormatConfiguration sets the FormatConfiguration field's value.
func (s *DateMeasureField) SetFormatConfiguration(v *DateTimeFormatConfiguration) *DateMeasureField {
	s.FormatConfiguration = v
	return s
}

// A date time parameter for a dataset.
type DateTimeDatasetParameter struct {
	_ struct{} `type:"structure"`

	// A list of default values for a given date time parameter. This structure
	// only accepts static values.
	DefaultValues *DateTimeDatasetParameterDefaultValues `type:"structure"`

	// An identifier for the parameter that is created in the dataset.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// The name of the date time parameter that is created in the dataset.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The time granularity of the date time parameter.
	TimeGranularity *string `type:"string" enum:"TimeGranularity"`

	// The value type of the dataset parameter. Valid values are single value or
	// multi value.
	//
	// ValueType is a required field
	ValueType *string `type:"string" required:"true" enum:"DatasetParameterValueType"`
}

// 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 DateTimeDatasetParameter) 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 DateTimeDatasetParameter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DateTimeDatasetParameter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DateTimeDatasetParameter"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Id != nil && len(*s.Id) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Id", 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 s.ValueType == nil {
		invalidParams.Add(request.NewErrParamRequired("ValueType"))
	}
	if s.DefaultValues != nil {
		if err := s.DefaultValues.Validate(); err != nil {
			invalidParams.AddNested("DefaultValues", err.(request.ErrInvalidParams))
		}
	}

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

// SetDefaultValues sets the DefaultValues field's value.
func (s *DateTimeDatasetParameter) SetDefaultValues(v *DateTimeDatasetParameterDefaultValues) *DateTimeDatasetParameter {
	s.DefaultValues = v
	return s
}

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

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

// SetTimeGranularity sets the TimeGranularity field's value.
func (s *DateTimeDatasetParameter) SetTimeGranularity(v string) *DateTimeDatasetParameter {
	s.TimeGranularity = &v
	return s
}

// SetValueType sets the ValueType field's value.
func (s *DateTimeDatasetParameter) SetValueType(v string) *DateTimeDatasetParameter {
	s.ValueType = &v
	return s
}

// The default values of a date time parameter.
type DateTimeDatasetParameterDefaultValues struct {
	_ struct{} `type:"structure"`

	// A list of static default values for a given date time parameter.
	StaticValues []*time.Time `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DateTimeDatasetParameterDefaultValues) 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 DateTimeDatasetParameterDefaultValues) GoString() string {
	return s.String()
}

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

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

// SetStaticValues sets the StaticValues field's value.
func (s *DateTimeDatasetParameterDefaultValues) SetStaticValues(v []*time.Time) *DateTimeDatasetParameterDefaultValues {
	s.StaticValues = v
	return s
}

// The default values of the DateTimeParameterDeclaration.
type DateTimeDefaultValues struct {
	_ struct{} `type:"structure"`

	// The dynamic value of the DataTimeDefaultValues. Different defaults are displayed
	// according to users, groups, and values mapping.
	DynamicValue *DynamicDefaultValue `type:"structure"`

	// The rolling date of the DataTimeDefaultValues. The date is determined from
	// the dataset based on input expression.
	RollingDate *RollingDateConfiguration `type:"structure"`

	// The static values of the DataTimeDefaultValues.
	StaticValues []*time.Time `type:"list" sensitive:"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 DateTimeDefaultValues) 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 DateTimeDefaultValues) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DateTimeDefaultValues) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DateTimeDefaultValues"}
	if s.DynamicValue != nil {
		if err := s.DynamicValue.Validate(); err != nil {
			invalidParams.AddNested("DynamicValue", err.(request.ErrInvalidParams))
		}
	}
	if s.RollingDate != nil {
		if err := s.RollingDate.Validate(); err != nil {
			invalidParams.AddNested("RollingDate", err.(request.ErrInvalidParams))
		}
	}

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

// SetDynamicValue sets the DynamicValue field's value.
func (s *DateTimeDefaultValues) SetDynamicValue(v *DynamicDefaultValue) *DateTimeDefaultValues {
	s.DynamicValue = v
	return s
}

// SetRollingDate sets the RollingDate field's value.
func (s *DateTimeDefaultValues) SetRollingDate(v *RollingDateConfiguration) *DateTimeDefaultValues {
	s.RollingDate = v
	return s
}

// SetStaticValues sets the StaticValues field's value.
func (s *DateTimeDefaultValues) SetStaticValues(v []*time.Time) *DateTimeDefaultValues {
	s.StaticValues = v
	return s
}

// Formatting configuration for DateTime fields.
type DateTimeFormatConfiguration struct {
	_ struct{} `type:"structure"`

	// Determines the DateTime format.
	DateTimeFormat *string `min:"1" type:"string"`

	// The options that determine the null value format configuration.
	NullValueFormatConfiguration *NullValueFormatConfiguration `type:"structure"`

	// The formatting configuration for numeric DateTime fields.
	NumericFormatConfiguration *NumericFormatConfiguration `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 DateTimeFormatConfiguration) 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 DateTimeFormatConfiguration) GoString() string {
	return s.String()
}

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

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

// SetDateTimeFormat sets the DateTimeFormat field's value.
func (s *DateTimeFormatConfiguration) SetDateTimeFormat(v string) *DateTimeFormatConfiguration {
	s.DateTimeFormat = &v
	return s
}

// SetNullValueFormatConfiguration sets the NullValueFormatConfiguration field's value.
func (s *DateTimeFormatConfiguration) SetNullValueFormatConfiguration(v *NullValueFormatConfiguration) *DateTimeFormatConfiguration {
	s.NullValueFormatConfiguration = v
	return s
}

// SetNumericFormatConfiguration sets the NumericFormatConfiguration field's value.
func (s *DateTimeFormatConfiguration) SetNumericFormatConfiguration(v *NumericFormatConfiguration) *DateTimeFormatConfiguration {
	s.NumericFormatConfiguration = v
	return s
}

// The option that determines the hierarchy of any DateTime fields.
type DateTimeHierarchy struct {
	_ struct{} `type:"structure"`

	// The option that determines the drill down filters for the DateTime hierarchy.
	DrillDownFilters []*DrillDownFilter `type:"list"`

	// The hierarchy ID of the DateTime hierarchy.
	//
	// HierarchyId is a required field
	HierarchyId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DateTimeHierarchy) 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 DateTimeHierarchy) GoString() string {
	return s.String()
}

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

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

// SetDrillDownFilters sets the DrillDownFilters field's value.
func (s *DateTimeHierarchy) SetDrillDownFilters(v []*DrillDownFilter) *DateTimeHierarchy {
	s.DrillDownFilters = v
	return s
}

// SetHierarchyId sets the HierarchyId field's value.
func (s *DateTimeHierarchy) SetHierarchyId(v string) *DateTimeHierarchy {
	s.HierarchyId = &v
	return s
}

// A date-time parameter.
type DateTimeParameter struct {
	_ struct{} `type:"structure"`

	// A display name for the date-time parameter.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The values for the date-time parameter.
	//
	// Values is a required field
	Values []*time.Time `type:"list" required:"true" sensitive:"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 DateTimeParameter) 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 DateTimeParameter) GoString() string {
	return s.String()
}

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

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

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

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

// A parameter declaration for the DateTime data type.
type DateTimeParameterDeclaration struct {
	_ struct{} `type:"structure"`

	// The default values of a parameter. If the parameter is a single-value parameter,
	// a maximum of one default value can be provided.
	DefaultValues *DateTimeDefaultValues `type:"structure"`

	// A list of dataset parameters that are mapped to an analysis parameter.
	MappedDataSetParameters []*MappedDataSetParameter `type:"list"`

	// The name of the parameter that is being declared.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The level of time precision that is used to aggregate DateTime values.
	TimeGranularity *string `type:"string" enum:"TimeGranularity"`

	// The configuration that defines the default value of a DateTime parameter
	// when a value has not been set.
	ValueWhenUnset *DateTimeValueWhenUnsetConfiguration `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 DateTimeParameterDeclaration) 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 DateTimeParameterDeclaration) GoString() string {
	return s.String()
}

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

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

// SetDefaultValues sets the DefaultValues field's value.
func (s *DateTimeParameterDeclaration) SetDefaultValues(v *DateTimeDefaultValues) *DateTimeParameterDeclaration {
	s.DefaultValues = v
	return s
}

// SetMappedDataSetParameters sets the MappedDataSetParameters field's value.
func (s *DateTimeParameterDeclaration) SetMappedDataSetParameters(v []*MappedDataSetParameter) *DateTimeParameterDeclaration {
	s.MappedDataSetParameters = v
	return s
}

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

// SetTimeGranularity sets the TimeGranularity field's value.
func (s *DateTimeParameterDeclaration) SetTimeGranularity(v string) *DateTimeParameterDeclaration {
	s.TimeGranularity = &v
	return s
}

// SetValueWhenUnset sets the ValueWhenUnset field's value.
func (s *DateTimeParameterDeclaration) SetValueWhenUnset(v *DateTimeValueWhenUnsetConfiguration) *DateTimeParameterDeclaration {
	s.ValueWhenUnset = v
	return s
}

// The display options of a control.
type DateTimePickerControlDisplayOptions struct {
	_ struct{} `type:"structure"`

	// The date icon visibility of the DateTimePickerControlDisplayOptions.
	DateIconVisibility *string `type:"string" enum:"Visibility"`

	// Customize how dates are formatted in controls.
	DateTimeFormat *string `min:"1" type:"string"`

	// The helper text visibility of the DateTimePickerControlDisplayOptions.
	HelperTextVisibility *string `type:"string" enum:"Visibility"`

	// The configuration of info icon label options.
	InfoIconLabelOptions *SheetControlInfoIconLabelOptions `type:"structure"`

	// The options to configure the title visibility, name, and font size.
	TitleOptions *LabelOptions `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 DateTimePickerControlDisplayOptions) 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 DateTimePickerControlDisplayOptions) GoString() string {
	return s.String()
}

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

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

// SetDateIconVisibility sets the DateIconVisibility field's value.
func (s *DateTimePickerControlDisplayOptions) SetDateIconVisibility(v string) *DateTimePickerControlDisplayOptions {
	s.DateIconVisibility = &v
	return s
}

// SetDateTimeFormat sets the DateTimeFormat field's value.
func (s *DateTimePickerControlDisplayOptions) SetDateTimeFormat(v string) *DateTimePickerControlDisplayOptions {
	s.DateTimeFormat = &v
	return s
}

// SetHelperTextVisibility sets the HelperTextVisibility field's value.
func (s *DateTimePickerControlDisplayOptions) SetHelperTextVisibility(v string) *DateTimePickerControlDisplayOptions {
	s.HelperTextVisibility = &v
	return s
}

// SetInfoIconLabelOptions sets the InfoIconLabelOptions field's value.
func (s *DateTimePickerControlDisplayOptions) SetInfoIconLabelOptions(v *SheetControlInfoIconLabelOptions) *DateTimePickerControlDisplayOptions {
	s.InfoIconLabelOptions = v
	return s
}

// SetTitleOptions sets the TitleOptions field's value.
func (s *DateTimePickerControlDisplayOptions) SetTitleOptions(v *LabelOptions) *DateTimePickerControlDisplayOptions {
	s.TitleOptions = v
	return s
}

// The configuration that defines the default value of a DateTime parameter
// when a value has not been set.
type DateTimeValueWhenUnsetConfiguration struct {
	_ struct{} `type:"structure"`

	// A custom value that's used when the value of a parameter isn't set.
	//
	// CustomValue is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DateTimeValueWhenUnsetConfiguration's
	// String and GoString methods.
	CustomValue *time.Time `type:"timestamp" sensitive:"true"`

	// The built-in options for default values. The value can be one of the following:
	//
	//    * RECOMMENDED: The recommended value.
	//
	//    * NULL: The NULL value.
	ValueWhenUnsetOption *string `type:"string" enum:"ValueWhenUnsetOption"`
}

// 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 DateTimeValueWhenUnsetConfiguration) 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 DateTimeValueWhenUnsetConfiguration) GoString() string {
	return s.String()
}

// SetCustomValue sets the CustomValue field's value.
func (s *DateTimeValueWhenUnsetConfiguration) SetCustomValue(v time.Time) *DateTimeValueWhenUnsetConfiguration {
	s.CustomValue = &v
	return s
}

// SetValueWhenUnsetOption sets the ValueWhenUnsetOption field's value.
func (s *DateTimeValueWhenUnsetConfiguration) SetValueWhenUnsetOption(v string) *DateTimeValueWhenUnsetConfiguration {
	s.ValueWhenUnsetOption = &v
	return s
}

// A decimal parameter for a dataset.
type DecimalDatasetParameter struct {
	_ struct{} `type:"structure"`

	// A list of default values for a given decimal parameter. This structure only
	// accepts static values.
	DefaultValues *DecimalDatasetParameterDefaultValues `type:"structure"`

	// An identifier for the decimal parameter created in the dataset.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// The name of the decimal parameter that is created in the dataset.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The value type of the dataset parameter. Valid values are single value or
	// multi value.
	//
	// ValueType is a required field
	ValueType *string `type:"string" required:"true" enum:"DatasetParameterValueType"`
}

// 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 DecimalDatasetParameter) 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 DecimalDatasetParameter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DecimalDatasetParameter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DecimalDatasetParameter"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Id != nil && len(*s.Id) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Id", 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 s.ValueType == nil {
		invalidParams.Add(request.NewErrParamRequired("ValueType"))
	}
	if s.DefaultValues != nil {
		if err := s.DefaultValues.Validate(); err != nil {
			invalidParams.AddNested("DefaultValues", err.(request.ErrInvalidParams))
		}
	}

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

// SetDefaultValues sets the DefaultValues field's value.
func (s *DecimalDatasetParameter) SetDefaultValues(v *DecimalDatasetParameterDefaultValues) *DecimalDatasetParameter {
	s.DefaultValues = v
	return s
}

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

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

// SetValueType sets the ValueType field's value.
func (s *DecimalDatasetParameter) SetValueType(v string) *DecimalDatasetParameter {
	s.ValueType = &v
	return s
}

// The default values of a decimal parameter.
type DecimalDatasetParameterDefaultValues struct {
	_ struct{} `type:"structure"`

	// A list of static default values for a given decimal parameter.
	StaticValues []*float64 `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DecimalDatasetParameterDefaultValues) 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 DecimalDatasetParameterDefaultValues) GoString() string {
	return s.String()
}

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

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

// SetStaticValues sets the StaticValues field's value.
func (s *DecimalDatasetParameterDefaultValues) SetStaticValues(v []*float64) *DecimalDatasetParameterDefaultValues {
	s.StaticValues = v
	return s
}

// The default values of the DecimalParameterDeclaration.
type DecimalDefaultValues struct {
	_ struct{} `type:"structure"`

	// The dynamic value of the DecimalDefaultValues. Different defaults are displayed
	// according to users, groups, and values mapping.
	DynamicValue *DynamicDefaultValue `type:"structure"`

	// The static values of the DecimalDefaultValues.
	StaticValues []*float64 `type:"list" sensitive:"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 DecimalDefaultValues) 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 DecimalDefaultValues) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DecimalDefaultValues) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DecimalDefaultValues"}
	if s.DynamicValue != nil {
		if err := s.DynamicValue.Validate(); err != nil {
			invalidParams.AddNested("DynamicValue", err.(request.ErrInvalidParams))
		}
	}

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

// SetDynamicValue sets the DynamicValue field's value.
func (s *DecimalDefaultValues) SetDynamicValue(v *DynamicDefaultValue) *DecimalDefaultValues {
	s.DynamicValue = v
	return s
}

// SetStaticValues sets the StaticValues field's value.
func (s *DecimalDefaultValues) SetStaticValues(v []*float64) *DecimalDefaultValues {
	s.StaticValues = v
	return s
}

// A decimal parameter.
type DecimalParameter struct {
	_ struct{} `type:"structure"`

	// A display name for the decimal parameter.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The values for the decimal parameter.
	//
	// Values is a required field
	Values []*float64 `type:"list" required:"true" sensitive:"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 DecimalParameter) 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 DecimalParameter) GoString() string {
	return s.String()
}

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

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

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

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

// A parameter declaration for the Decimal data type.
type DecimalParameterDeclaration struct {
	_ struct{} `type:"structure"`

	// The default values of a parameter. If the parameter is a single-value parameter,
	// a maximum of one default value can be provided.
	DefaultValues *DecimalDefaultValues `type:"structure"`

	// A list of dataset parameters that are mapped to an analysis parameter.
	MappedDataSetParameters []*MappedDataSetParameter `type:"list"`

	// The name of the parameter that is being declared.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The value type determines whether the parameter is a single-value or multi-value
	// parameter.
	//
	// ParameterValueType is a required field
	ParameterValueType *string `type:"string" required:"true" enum:"ParameterValueType"`

	// The configuration that defines the default value of a Decimal parameter when
	// a value has not been set.
	ValueWhenUnset *DecimalValueWhenUnsetConfiguration `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 DecimalParameterDeclaration) 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 DecimalParameterDeclaration) GoString() string {
	return s.String()
}

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

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

// SetDefaultValues sets the DefaultValues field's value.
func (s *DecimalParameterDeclaration) SetDefaultValues(v *DecimalDefaultValues) *DecimalParameterDeclaration {
	s.DefaultValues = v
	return s
}

// SetMappedDataSetParameters sets the MappedDataSetParameters field's value.
func (s *DecimalParameterDeclaration) SetMappedDataSetParameters(v []*MappedDataSetParameter) *DecimalParameterDeclaration {
	s.MappedDataSetParameters = v
	return s
}

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

// SetParameterValueType sets the ParameterValueType field's value.
func (s *DecimalParameterDeclaration) SetParameterValueType(v string) *DecimalParameterDeclaration {
	s.ParameterValueType = &v
	return s
}

// SetValueWhenUnset sets the ValueWhenUnset field's value.
func (s *DecimalParameterDeclaration) SetValueWhenUnset(v *DecimalValueWhenUnsetConfiguration) *DecimalParameterDeclaration {
	s.ValueWhenUnset = v
	return s
}

// The option that determines the decimal places configuration.
type DecimalPlacesConfiguration struct {
	_ struct{} `type:"structure"`

	// The values of the decimal places.
	//
	// DecimalPlaces is a required field
	DecimalPlaces *int64 `type:"long" 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 DecimalPlacesConfiguration) 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 DecimalPlacesConfiguration) GoString() string {
	return s.String()
}

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

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

// SetDecimalPlaces sets the DecimalPlaces field's value.
func (s *DecimalPlacesConfiguration) SetDecimalPlaces(v int64) *DecimalPlacesConfiguration {
	s.DecimalPlaces = &v
	return s
}

// The configuration that defines the default value of a Decimal parameter when
// a value has not been set.
type DecimalValueWhenUnsetConfiguration struct {
	_ struct{} `type:"structure"`

	// A custom value that's used when the value of a parameter isn't set.
	//
	// CustomValue is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DecimalValueWhenUnsetConfiguration's
	// String and GoString methods.
	CustomValue *float64 `type:"double" sensitive:"true"`

	// The built-in options for default values. The value can be one of the following:
	//
	//    * RECOMMENDED: The recommended value.
	//
	//    * NULL: The NULL value.
	ValueWhenUnsetOption *string `type:"string" enum:"ValueWhenUnsetOption"`
}

// 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 DecimalValueWhenUnsetConfiguration) 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 DecimalValueWhenUnsetConfiguration) GoString() string {
	return s.String()
}

// SetCustomValue sets the CustomValue field's value.
func (s *DecimalValueWhenUnsetConfiguration) SetCustomValue(v float64) *DecimalValueWhenUnsetConfiguration {
	s.CustomValue = &v
	return s
}

// SetValueWhenUnsetOption sets the ValueWhenUnsetOption field's value.
func (s *DecimalValueWhenUnsetConfiguration) SetValueWhenUnsetOption(v string) *DecimalValueWhenUnsetConfiguration {
	s.ValueWhenUnsetOption = &v
	return s
}

// The default options that correspond to the filter control type of a DateTimePicker.
type DefaultDateTimePickerControlOptions struct {
	_ struct{} `type:"structure"`

	// The display options of a control.
	DisplayOptions *DateTimePickerControlDisplayOptions `type:"structure"`

	// The date time picker type of the DefaultDateTimePickerControlOptions. Choose
	// one of the following options:
	//
	//    * SINGLE_VALUED: The filter condition is a fixed date.
	//
	//    * DATE_RANGE: The filter condition is a date time range.
	Type *string `type:"string" enum:"SheetControlDateTimePickerType"`
}

// 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 DefaultDateTimePickerControlOptions) 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 DefaultDateTimePickerControlOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DefaultDateTimePickerControlOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DefaultDateTimePickerControlOptions"}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

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

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *DefaultDateTimePickerControlOptions) SetDisplayOptions(v *DateTimePickerControlDisplayOptions) *DefaultDateTimePickerControlOptions {
	s.DisplayOptions = v
	return s
}

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

// The default configuration for all dependent controls of the filter.
type DefaultFilterControlConfiguration struct {
	_ struct{} `type:"structure"`

	// The control option for the DefaultFilterControlConfiguration.
	//
	// ControlOptions is a required field
	ControlOptions *DefaultFilterControlOptions `type:"structure" required:"true"`

	// The title of the DefaultFilterControlConfiguration. This title is shared
	// by all controls that are tied to this filter.
	//
	// Title is a required field
	Title *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DefaultFilterControlConfiguration) 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 DefaultFilterControlConfiguration) GoString() string {
	return s.String()
}

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

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

// SetControlOptions sets the ControlOptions field's value.
func (s *DefaultFilterControlConfiguration) SetControlOptions(v *DefaultFilterControlOptions) *DefaultFilterControlConfiguration {
	s.ControlOptions = v
	return s
}

// SetTitle sets the Title field's value.
func (s *DefaultFilterControlConfiguration) SetTitle(v string) *DefaultFilterControlConfiguration {
	s.Title = &v
	return s
}

// The option that corresponds to the control type of the filter.
type DefaultFilterControlOptions struct {
	_ struct{} `type:"structure"`

	// The default options that correspond to the filter control type of a DateTimePicker.
	DefaultDateTimePickerOptions *DefaultDateTimePickerControlOptions `type:"structure"`

	// The default options that correspond to the Dropdown filter control type.
	DefaultDropdownOptions *DefaultFilterDropDownControlOptions `type:"structure"`

	// The default options that correspond to the List filter control type.
	DefaultListOptions *DefaultFilterListControlOptions `type:"structure"`

	// The default options that correspond to the RelativeDateTime filter control
	// type.
	DefaultRelativeDateTimeOptions *DefaultRelativeDateTimeControlOptions `type:"structure"`

	// The default options that correspond to the Slider filter control type.
	DefaultSliderOptions *DefaultSliderControlOptions `type:"structure"`

	// The default options that correspond to the TextArea filter control type.
	DefaultTextAreaOptions *DefaultTextAreaControlOptions `type:"structure"`

	// The default options that correspond to the TextField filter control type.
	DefaultTextFieldOptions *DefaultTextFieldControlOptions `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 DefaultFilterControlOptions) 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 DefaultFilterControlOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DefaultFilterControlOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DefaultFilterControlOptions"}
	if s.DefaultDateTimePickerOptions != nil {
		if err := s.DefaultDateTimePickerOptions.Validate(); err != nil {
			invalidParams.AddNested("DefaultDateTimePickerOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.DefaultDropdownOptions != nil {
		if err := s.DefaultDropdownOptions.Validate(); err != nil {
			invalidParams.AddNested("DefaultDropdownOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.DefaultListOptions != nil {
		if err := s.DefaultListOptions.Validate(); err != nil {
			invalidParams.AddNested("DefaultListOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.DefaultRelativeDateTimeOptions != nil {
		if err := s.DefaultRelativeDateTimeOptions.Validate(); err != nil {
			invalidParams.AddNested("DefaultRelativeDateTimeOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.DefaultSliderOptions != nil {
		if err := s.DefaultSliderOptions.Validate(); err != nil {
			invalidParams.AddNested("DefaultSliderOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.DefaultTextAreaOptions != nil {
		if err := s.DefaultTextAreaOptions.Validate(); err != nil {
			invalidParams.AddNested("DefaultTextAreaOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.DefaultTextFieldOptions != nil {
		if err := s.DefaultTextFieldOptions.Validate(); err != nil {
			invalidParams.AddNested("DefaultTextFieldOptions", err.(request.ErrInvalidParams))
		}
	}

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

// SetDefaultDateTimePickerOptions sets the DefaultDateTimePickerOptions field's value.
func (s *DefaultFilterControlOptions) SetDefaultDateTimePickerOptions(v *DefaultDateTimePickerControlOptions) *DefaultFilterControlOptions {
	s.DefaultDateTimePickerOptions = v
	return s
}

// SetDefaultDropdownOptions sets the DefaultDropdownOptions field's value.
func (s *DefaultFilterControlOptions) SetDefaultDropdownOptions(v *DefaultFilterDropDownControlOptions) *DefaultFilterControlOptions {
	s.DefaultDropdownOptions = v
	return s
}

// SetDefaultListOptions sets the DefaultListOptions field's value.
func (s *DefaultFilterControlOptions) SetDefaultListOptions(v *DefaultFilterListControlOptions) *DefaultFilterControlOptions {
	s.DefaultListOptions = v
	return s
}

// SetDefaultRelativeDateTimeOptions sets the DefaultRelativeDateTimeOptions field's value.
func (s *DefaultFilterControlOptions) SetDefaultRelativeDateTimeOptions(v *DefaultRelativeDateTimeControlOptions) *DefaultFilterControlOptions {
	s.DefaultRelativeDateTimeOptions = v
	return s
}

// SetDefaultSliderOptions sets the DefaultSliderOptions field's value.
func (s *DefaultFilterControlOptions) SetDefaultSliderOptions(v *DefaultSliderControlOptions) *DefaultFilterControlOptions {
	s.DefaultSliderOptions = v
	return s
}

// SetDefaultTextAreaOptions sets the DefaultTextAreaOptions field's value.
func (s *DefaultFilterControlOptions) SetDefaultTextAreaOptions(v *DefaultTextAreaControlOptions) *DefaultFilterControlOptions {
	s.DefaultTextAreaOptions = v
	return s
}

// SetDefaultTextFieldOptions sets the DefaultTextFieldOptions field's value.
func (s *DefaultFilterControlOptions) SetDefaultTextFieldOptions(v *DefaultTextFieldControlOptions) *DefaultFilterControlOptions {
	s.DefaultTextFieldOptions = v
	return s
}

// The default options that correspond to the Dropdown filter control type.
type DefaultFilterDropDownControlOptions struct {
	_ struct{} `type:"structure"`

	// The display options of a control.
	DisplayOptions *DropDownControlDisplayOptions `type:"structure"`

	// A list of selectable values that are used in a control.
	SelectableValues *FilterSelectableValues `type:"structure"`

	// The type of the FilterDropDownControl. Choose one of the following options:
	//
	//    * MULTI_SELECT: The user can select multiple entries from a dropdown menu.
	//
	//    * SINGLE_SELECT: The user can select a single entry from a dropdown menu.
	Type *string `type:"string" enum:"SheetControlListType"`
}

// 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 DefaultFilterDropDownControlOptions) 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 DefaultFilterDropDownControlOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DefaultFilterDropDownControlOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DefaultFilterDropDownControlOptions"}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

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

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *DefaultFilterDropDownControlOptions) SetDisplayOptions(v *DropDownControlDisplayOptions) *DefaultFilterDropDownControlOptions {
	s.DisplayOptions = v
	return s
}

// SetSelectableValues sets the SelectableValues field's value.
func (s *DefaultFilterDropDownControlOptions) SetSelectableValues(v *FilterSelectableValues) *DefaultFilterDropDownControlOptions {
	s.SelectableValues = v
	return s
}

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

// The default options that correspond to the List filter control type.
type DefaultFilterListControlOptions struct {
	_ struct{} `type:"structure"`

	// The display options of a control.
	DisplayOptions *ListControlDisplayOptions `type:"structure"`

	// A list of selectable values that are used in a control.
	SelectableValues *FilterSelectableValues `type:"structure"`

	// The type of the DefaultFilterListControlOptions. Choose one of the following
	// options:
	//
	//    * MULTI_SELECT: The user can select multiple entries from the list.
	//
	//    * SINGLE_SELECT: The user can select a single entry from the list.
	Type *string `type:"string" enum:"SheetControlListType"`
}

// 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 DefaultFilterListControlOptions) 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 DefaultFilterListControlOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DefaultFilterListControlOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DefaultFilterListControlOptions"}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

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

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *DefaultFilterListControlOptions) SetDisplayOptions(v *ListControlDisplayOptions) *DefaultFilterListControlOptions {
	s.DisplayOptions = v
	return s
}

// SetSelectableValues sets the SelectableValues field's value.
func (s *DefaultFilterListControlOptions) SetSelectableValues(v *FilterSelectableValues) *DefaultFilterListControlOptions {
	s.SelectableValues = v
	return s
}

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

// A structure that represents a default formatting definition.
type DefaultFormatting struct {
	_ struct{} `type:"structure"`

	// The display format. Valid values for this structure are AUTO, PERCENT, CURRENCY,
	// NUMBER, DATE, and STRING.
	DisplayFormat *string `type:"string" enum:"DisplayFormat"`

	// The additional options for display formatting.
	DisplayFormatOptions *DisplayFormatOptions `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 DefaultFormatting) 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 DefaultFormatting) GoString() string {
	return s.String()
}

// SetDisplayFormat sets the DisplayFormat field's value.
func (s *DefaultFormatting) SetDisplayFormat(v string) *DefaultFormatting {
	s.DisplayFormat = &v
	return s
}

// SetDisplayFormatOptions sets the DisplayFormatOptions field's value.
func (s *DefaultFormatting) SetDisplayFormatOptions(v *DisplayFormatOptions) *DefaultFormatting {
	s.DisplayFormatOptions = v
	return s
}

// The options that determine the default settings of a free-form layout configuration.
type DefaultFreeFormLayoutConfiguration struct {
	_ struct{} `type:"structure"`

	// Determines the screen canvas size options for a free-form layout.
	//
	// CanvasSizeOptions is a required field
	CanvasSizeOptions *FreeFormLayoutCanvasSizeOptions `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 DefaultFreeFormLayoutConfiguration) 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 DefaultFreeFormLayoutConfiguration) GoString() string {
	return s.String()
}

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

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

// SetCanvasSizeOptions sets the CanvasSizeOptions field's value.
func (s *DefaultFreeFormLayoutConfiguration) SetCanvasSizeOptions(v *FreeFormLayoutCanvasSizeOptions) *DefaultFreeFormLayoutConfiguration {
	s.CanvasSizeOptions = v
	return s
}

// The options that determine the default settings for a grid layout configuration.
type DefaultGridLayoutConfiguration struct {
	_ struct{} `type:"structure"`

	// Determines the screen canvas size options for a grid layout.
	//
	// CanvasSizeOptions is a required field
	CanvasSizeOptions *GridLayoutCanvasSizeOptions `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 DefaultGridLayoutConfiguration) 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 DefaultGridLayoutConfiguration) GoString() string {
	return s.String()
}

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

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCanvasSizeOptions sets the CanvasSizeOptions field's value.
func (s *DefaultGridLayoutConfiguration) SetCanvasSizeOptions(v *GridLayoutCanvasSizeOptions) *DefaultGridLayoutConfiguration {
	s.CanvasSizeOptions = v
	return s
}

// The options that determine the default settings for interactive layout configuration.
type DefaultInteractiveLayoutConfiguration struct {
	_ struct{} `type:"structure"`

	// The options that determine the default settings of a free-form layout configuration.
	FreeForm *DefaultFreeFormLayoutConfiguration `type:"structure"`

	// The options that determine the default settings for a grid layout configuration.
	Grid *DefaultGridLayoutConfiguration `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 DefaultInteractiveLayoutConfiguration) 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 DefaultInteractiveLayoutConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DefaultInteractiveLayoutConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DefaultInteractiveLayoutConfiguration"}
	if s.FreeForm != nil {
		if err := s.FreeForm.Validate(); err != nil {
			invalidParams.AddNested("FreeForm", err.(request.ErrInvalidParams))
		}
	}
	if s.Grid != nil {
		if err := s.Grid.Validate(); err != nil {
			invalidParams.AddNested("Grid", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFreeForm sets the FreeForm field's value.
func (s *DefaultInteractiveLayoutConfiguration) SetFreeForm(v *DefaultFreeFormLayoutConfiguration) *DefaultInteractiveLayoutConfiguration {
	s.FreeForm = v
	return s
}

// SetGrid sets the Grid field's value.
func (s *DefaultInteractiveLayoutConfiguration) SetGrid(v *DefaultGridLayoutConfiguration) *DefaultInteractiveLayoutConfiguration {
	s.Grid = v
	return s
}

// The configuration for default new sheet settings.
type DefaultNewSheetConfiguration struct {
	_ struct{} `type:"structure"`

	// The options that determine the default settings for interactive layout configuration.
	InteractiveLayoutConfiguration *DefaultInteractiveLayoutConfiguration `type:"structure"`

	// The options that determine the default settings for a paginated layout configuration.
	PaginatedLayoutConfiguration *DefaultPaginatedLayoutConfiguration `type:"structure"`

	// The option that determines the sheet content type.
	SheetContentType *string `type:"string" enum:"SheetContentType"`
}

// 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 DefaultNewSheetConfiguration) 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 DefaultNewSheetConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DefaultNewSheetConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DefaultNewSheetConfiguration"}
	if s.InteractiveLayoutConfiguration != nil {
		if err := s.InteractiveLayoutConfiguration.Validate(); err != nil {
			invalidParams.AddNested("InteractiveLayoutConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.PaginatedLayoutConfiguration != nil {
		if err := s.PaginatedLayoutConfiguration.Validate(); err != nil {
			invalidParams.AddNested("PaginatedLayoutConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInteractiveLayoutConfiguration sets the InteractiveLayoutConfiguration field's value.
func (s *DefaultNewSheetConfiguration) SetInteractiveLayoutConfiguration(v *DefaultInteractiveLayoutConfiguration) *DefaultNewSheetConfiguration {
	s.InteractiveLayoutConfiguration = v
	return s
}

// SetPaginatedLayoutConfiguration sets the PaginatedLayoutConfiguration field's value.
func (s *DefaultNewSheetConfiguration) SetPaginatedLayoutConfiguration(v *DefaultPaginatedLayoutConfiguration) *DefaultNewSheetConfiguration {
	s.PaginatedLayoutConfiguration = v
	return s
}

// SetSheetContentType sets the SheetContentType field's value.
func (s *DefaultNewSheetConfiguration) SetSheetContentType(v string) *DefaultNewSheetConfiguration {
	s.SheetContentType = &v
	return s
}

// The options that determine the default settings for a paginated layout configuration.
type DefaultPaginatedLayoutConfiguration struct {
	_ struct{} `type:"structure"`

	// The options that determine the default settings for a section-based layout
	// configuration.
	SectionBased *DefaultSectionBasedLayoutConfiguration `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 DefaultPaginatedLayoutConfiguration) 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 DefaultPaginatedLayoutConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DefaultPaginatedLayoutConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DefaultPaginatedLayoutConfiguration"}
	if s.SectionBased != nil {
		if err := s.SectionBased.Validate(); err != nil {
			invalidParams.AddNested("SectionBased", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSectionBased sets the SectionBased field's value.
func (s *DefaultPaginatedLayoutConfiguration) SetSectionBased(v *DefaultSectionBasedLayoutConfiguration) *DefaultPaginatedLayoutConfiguration {
	s.SectionBased = v
	return s
}

// The default options that correspond to the RelativeDateTime filter control
// type.
type DefaultRelativeDateTimeControlOptions struct {
	_ struct{} `type:"structure"`

	// The display options of a control.
	DisplayOptions *RelativeDateTimeControlDisplayOptions `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 DefaultRelativeDateTimeControlOptions) 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 DefaultRelativeDateTimeControlOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DefaultRelativeDateTimeControlOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DefaultRelativeDateTimeControlOptions"}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *DefaultRelativeDateTimeControlOptions) SetDisplayOptions(v *RelativeDateTimeControlDisplayOptions) *DefaultRelativeDateTimeControlOptions {
	s.DisplayOptions = v
	return s
}

// The options that determine the default settings for a section-based layout
// configuration.
type DefaultSectionBasedLayoutConfiguration struct {
	_ struct{} `type:"structure"`

	// Determines the screen canvas size options for a section-based layout.
	//
	// CanvasSizeOptions is a required field
	CanvasSizeOptions *SectionBasedLayoutCanvasSizeOptions `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 DefaultSectionBasedLayoutConfiguration) 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 DefaultSectionBasedLayoutConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DefaultSectionBasedLayoutConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DefaultSectionBasedLayoutConfiguration"}
	if s.CanvasSizeOptions == nil {
		invalidParams.Add(request.NewErrParamRequired("CanvasSizeOptions"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCanvasSizeOptions sets the CanvasSizeOptions field's value.
func (s *DefaultSectionBasedLayoutConfiguration) SetCanvasSizeOptions(v *SectionBasedLayoutCanvasSizeOptions) *DefaultSectionBasedLayoutConfiguration {
	s.CanvasSizeOptions = v
	return s
}

// The default options that correspond to the Slider filter control type.
type DefaultSliderControlOptions struct {
	_ struct{} `type:"structure"`

	// The display options of a control.
	DisplayOptions *SliderControlDisplayOptions `type:"structure"`

	// The larger value that is displayed at the right of the slider.
	//
	// MaximumValue is a required field
	MaximumValue *float64 `type:"double" required:"true"`

	// The smaller value that is displayed at the left of the slider.
	//
	// MinimumValue is a required field
	MinimumValue *float64 `type:"double" required:"true"`

	// The number of increments that the slider bar is divided into.
	//
	// StepSize is a required field
	StepSize *float64 `type:"double" required:"true"`

	// The type of the DefaultSliderControlOptions. Choose one of the following
	// options:
	//
	//    * SINGLE_POINT: Filter against(equals) a single data point.
	//
	//    * RANGE: Filter data that is in a specified range.
	Type *string `type:"string" enum:"SheetControlSliderType"`
}

// 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 DefaultSliderControlOptions) 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 DefaultSliderControlOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DefaultSliderControlOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DefaultSliderControlOptions"}
	if s.MaximumValue == nil {
		invalidParams.Add(request.NewErrParamRequired("MaximumValue"))
	}
	if s.MinimumValue == nil {
		invalidParams.Add(request.NewErrParamRequired("MinimumValue"))
	}
	if s.StepSize == nil {
		invalidParams.Add(request.NewErrParamRequired("StepSize"))
	}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *DefaultSliderControlOptions) SetDisplayOptions(v *SliderControlDisplayOptions) *DefaultSliderControlOptions {
	s.DisplayOptions = v
	return s
}

// SetMaximumValue sets the MaximumValue field's value.
func (s *DefaultSliderControlOptions) SetMaximumValue(v float64) *DefaultSliderControlOptions {
	s.MaximumValue = &v
	return s
}

// SetMinimumValue sets the MinimumValue field's value.
func (s *DefaultSliderControlOptions) SetMinimumValue(v float64) *DefaultSliderControlOptions {
	s.MinimumValue = &v
	return s
}

// SetStepSize sets the StepSize field's value.
func (s *DefaultSliderControlOptions) SetStepSize(v float64) *DefaultSliderControlOptions {
	s.StepSize = &v
	return s
}

// SetType sets the Type field's value.
func (s *DefaultSliderControlOptions) SetType(v string) *DefaultSliderControlOptions {
	s.Type = &v
	return s
}

// The default options that correspond to the TextArea filter control type.
type DefaultTextAreaControlOptions struct {
	_ struct{} `type:"structure"`

	// The delimiter that is used to separate the lines in text.
	Delimiter *string `min:"1" type:"string"`

	// The display options of a control.
	DisplayOptions *TextAreaControlDisplayOptions `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 DefaultTextAreaControlOptions) 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 DefaultTextAreaControlOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DefaultTextAreaControlOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DefaultTextAreaControlOptions"}
	if s.Delimiter != nil && len(*s.Delimiter) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Delimiter", 1))
	}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDelimiter sets the Delimiter field's value.
func (s *DefaultTextAreaControlOptions) SetDelimiter(v string) *DefaultTextAreaControlOptions {
	s.Delimiter = &v
	return s
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *DefaultTextAreaControlOptions) SetDisplayOptions(v *TextAreaControlDisplayOptions) *DefaultTextAreaControlOptions {
	s.DisplayOptions = v
	return s
}

// The default options that correspond to the TextField filter control type.
type DefaultTextFieldControlOptions struct {
	_ struct{} `type:"structure"`

	// The display options of a control.
	DisplayOptions *TextFieldControlDisplayOptions `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 DefaultTextFieldControlOptions) 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 DefaultTextFieldControlOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DefaultTextFieldControlOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DefaultTextFieldControlOptions"}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *DefaultTextFieldControlOptions) SetDisplayOptions(v *TextFieldControlDisplayOptions) *DefaultTextFieldControlOptions {
	s.DisplayOptions = v
	return s
}

type DeleteAccountCustomizationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that you want to delete Amazon
	// QuickSight customizations from in this Amazon Web Services Region.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The Amazon QuickSight namespace that you're deleting the customizations from.
	Namespace *string `location:"querystring" locationName:"namespace" 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 DeleteAccountCustomizationInput) 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 DeleteAccountCustomizationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteAccountCustomizationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteAccountCustomizationInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteAccountCustomizationInput) SetAwsAccountId(v string) *DeleteAccountCustomizationInput {
	s.AwsAccountId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DeleteAccountCustomizationInput) SetNamespace(v string) *DeleteAccountCustomizationInput {
	s.Namespace = &v
	return s
}

type DeleteAccountCustomizationOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DeleteAccountCustomizationOutput) 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 DeleteAccountCustomizationOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteAccountCustomizationOutput) SetRequestId(v string) *DeleteAccountCustomizationOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteAccountCustomizationOutput) SetStatus(v int64) *DeleteAccountCustomizationOutput {
	s.Status = &v
	return s
}

type DeleteAccountSubscriptionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID of the account that you want to delete.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteAccountSubscriptionInput) 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 DeleteAccountSubscriptionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteAccountSubscriptionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteAccountSubscriptionInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteAccountSubscriptionInput) SetAwsAccountId(v string) *DeleteAccountSubscriptionInput {
	s.AwsAccountId = &v
	return s
}

type DeleteAccountSubscriptionOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DeleteAccountSubscriptionOutput) 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 DeleteAccountSubscriptionOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteAccountSubscriptionOutput) SetRequestId(v string) *DeleteAccountSubscriptionOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteAccountSubscriptionOutput) SetStatus(v int64) *DeleteAccountSubscriptionOutput {
	s.Status = &v
	return s
}

type DeleteAnalysisInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the analysis that you're deleting.
	//
	// AnalysisId is a required field
	AnalysisId *string `location:"uri" locationName:"AnalysisId" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account where you want to delete an analysis.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// This option defaults to the value NoForceDeleteWithoutRecovery. To immediately
	// delete the analysis, add the ForceDeleteWithoutRecovery option. You can't
	// restore an analysis after it's deleted.
	ForceDeleteWithoutRecovery *bool `location:"querystring" locationName:"force-delete-without-recovery" type:"boolean"`

	// A value that specifies the number of days that Amazon QuickSight waits before
	// it deletes the analysis. You can't use this parameter with the ForceDeleteWithoutRecovery
	// option in the same API call. The default value is 30.
	RecoveryWindowInDays *int64 `location:"querystring" locationName:"recovery-window-in-days" min:"7" type:"long"`
}

// 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 DeleteAnalysisInput) 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 DeleteAnalysisInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteAnalysisInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteAnalysisInput"}
	if s.AnalysisId == nil {
		invalidParams.Add(request.NewErrParamRequired("AnalysisId"))
	}
	if s.AnalysisId != nil && len(*s.AnalysisId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AnalysisId", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.RecoveryWindowInDays != nil && *s.RecoveryWindowInDays < 7 {
		invalidParams.Add(request.NewErrParamMinValue("RecoveryWindowInDays", 7))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAnalysisId sets the AnalysisId field's value.
func (s *DeleteAnalysisInput) SetAnalysisId(v string) *DeleteAnalysisInput {
	s.AnalysisId = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteAnalysisInput) SetAwsAccountId(v string) *DeleteAnalysisInput {
	s.AwsAccountId = &v
	return s
}

// SetForceDeleteWithoutRecovery sets the ForceDeleteWithoutRecovery field's value.
func (s *DeleteAnalysisInput) SetForceDeleteWithoutRecovery(v bool) *DeleteAnalysisInput {
	s.ForceDeleteWithoutRecovery = &v
	return s
}

// SetRecoveryWindowInDays sets the RecoveryWindowInDays field's value.
func (s *DeleteAnalysisInput) SetRecoveryWindowInDays(v int64) *DeleteAnalysisInput {
	s.RecoveryWindowInDays = &v
	return s
}

type DeleteAnalysisOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the deleted analysis.
	AnalysisId *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the deleted analysis.
	Arn *string `type:"string"`

	// The date and time that the analysis is scheduled to be deleted.
	DeletionTime *time.Time `type:"timestamp"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DeleteAnalysisOutput) 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 DeleteAnalysisOutput) GoString() string {
	return s.String()
}

// SetAnalysisId sets the AnalysisId field's value.
func (s *DeleteAnalysisOutput) SetAnalysisId(v string) *DeleteAnalysisOutput {
	s.AnalysisId = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *DeleteAnalysisOutput) SetArn(v string) *DeleteAnalysisOutput {
	s.Arn = &v
	return s
}

// SetDeletionTime sets the DeletionTime field's value.
func (s *DeleteAnalysisOutput) SetDeletionTime(v time.Time) *DeleteAnalysisOutput {
	s.DeletionTime = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteAnalysisOutput) SetRequestId(v string) *DeleteAnalysisOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteAnalysisOutput) SetStatus(v int64) *DeleteAnalysisOutput {
	s.Status = &v
	return s
}

type DeleteDashboardInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the dashboard that
	// you're deleting.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the dashboard.
	//
	// DashboardId is a required field
	DashboardId *string `location:"uri" locationName:"DashboardId" min:"1" type:"string" required:"true"`

	// The version number of the dashboard. If the version number property is provided,
	// only the specified version of the dashboard is deleted.
	VersionNumber *int64 `location:"querystring" locationName:"version-number" min:"1" type:"long"`
}

// 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 DeleteDashboardInput) 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 DeleteDashboardInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteDashboardInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteDashboardInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DashboardId == nil {
		invalidParams.Add(request.NewErrParamRequired("DashboardId"))
	}
	if s.DashboardId != nil && len(*s.DashboardId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DashboardId", 1))
	}
	if s.VersionNumber != nil && *s.VersionNumber < 1 {
		invalidParams.Add(request.NewErrParamMinValue("VersionNumber", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteDashboardInput) SetAwsAccountId(v string) *DeleteDashboardInput {
	s.AwsAccountId = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *DeleteDashboardInput) SetDashboardId(v string) *DeleteDashboardInput {
	s.DashboardId = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *DeleteDashboardInput) SetVersionNumber(v int64) *DeleteDashboardInput {
	s.VersionNumber = &v
	return s
}

type DeleteDashboardOutput struct {
	_ struct{} `type:"structure"`

	// The Secure Socket Layer (SSL) properties that apply for the resource.
	Arn *string `type:"string"`

	// The ID of the dashboard.
	DashboardId *string `min:"1" type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DeleteDashboardOutput) 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 DeleteDashboardOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DeleteDashboardOutput) SetArn(v string) *DeleteDashboardOutput {
	s.Arn = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *DeleteDashboardOutput) SetDashboardId(v string) *DeleteDashboardOutput {
	s.DashboardId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteDashboardOutput) SetRequestId(v string) *DeleteDashboardOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteDashboardOutput) SetStatus(v int64) *DeleteDashboardOutput {
	s.Status = &v
	return s
}

type DeleteDataSetInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the dataset that you want to create. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" 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 DeleteDataSetInput) 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 DeleteDataSetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteDataSetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteDataSetInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteDataSetInput) SetAwsAccountId(v string) *DeleteDataSetInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *DeleteDataSetInput) SetDataSetId(v string) *DeleteDataSetInput {
	s.DataSetId = &v
	return s
}

type DeleteDataSetOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the dataset.
	Arn *string `type:"string"`

	// The ID for the dataset that you want to create. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	DataSetId *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DeleteDataSetOutput) 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 DeleteDataSetOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DeleteDataSetOutput) SetArn(v string) *DeleteDataSetOutput {
	s.Arn = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *DeleteDataSetOutput) SetDataSetId(v string) *DeleteDataSetOutput {
	s.DataSetId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteDataSetOutput) SetRequestId(v string) *DeleteDataSetOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteDataSetOutput) SetStatus(v int64) *DeleteDataSetOutput {
	s.Status = &v
	return s
}

type DeleteDataSetRefreshPropertiesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dataset.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" 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 DeleteDataSetRefreshPropertiesInput) 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 DeleteDataSetRefreshPropertiesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteDataSetRefreshPropertiesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteDataSetRefreshPropertiesInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteDataSetRefreshPropertiesInput) SetAwsAccountId(v string) *DeleteDataSetRefreshPropertiesInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *DeleteDataSetRefreshPropertiesInput) SetDataSetId(v string) *DeleteDataSetRefreshPropertiesInput {
	s.DataSetId = &v
	return s
}

type DeleteDataSetRefreshPropertiesOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DeleteDataSetRefreshPropertiesOutput) 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 DeleteDataSetRefreshPropertiesOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteDataSetRefreshPropertiesOutput) SetRequestId(v string) *DeleteDataSetRefreshPropertiesOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteDataSetRefreshPropertiesOutput) SetStatus(v int64) *DeleteDataSetRefreshPropertiesOutput {
	s.Status = &v
	return s
}

type DeleteDataSourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the data source. This ID is unique per Amazon Web Services Region
	// for each Amazon Web Services account.
	//
	// DataSourceId is a required field
	DataSourceId *string `location:"uri" locationName:"DataSourceId" 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 DeleteDataSourceInput) 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 DeleteDataSourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteDataSourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteDataSourceInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSourceId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSourceId"))
	}
	if s.DataSourceId != nil && len(*s.DataSourceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSourceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteDataSourceInput) SetAwsAccountId(v string) *DeleteDataSourceInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *DeleteDataSourceInput) SetDataSourceId(v string) *DeleteDataSourceInput {
	s.DataSourceId = &v
	return s
}

type DeleteDataSourceOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the data source that you deleted.
	Arn *string `type:"string"`

	// The ID of the data source. This ID is unique per Amazon Web Services Region
	// for each Amazon Web Services account.
	DataSourceId *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DeleteDataSourceOutput) 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 DeleteDataSourceOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DeleteDataSourceOutput) SetArn(v string) *DeleteDataSourceOutput {
	s.Arn = &v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *DeleteDataSourceOutput) SetDataSourceId(v string) *DeleteDataSourceOutput {
	s.DataSourceId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteDataSourceOutput) SetRequestId(v string) *DeleteDataSourceOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteDataSourceOutput) SetStatus(v int64) *DeleteDataSourceOutput {
	s.Status = &v
	return s
}

type DeleteFolderInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that contains the folder.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the folder.
	//
	// FolderId is a required field
	FolderId *string `location:"uri" locationName:"FolderId" 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 DeleteFolderInput) 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 DeleteFolderInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteFolderInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteFolderInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.FolderId == nil {
		invalidParams.Add(request.NewErrParamRequired("FolderId"))
	}
	if s.FolderId != nil && len(*s.FolderId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FolderId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteFolderInput) SetAwsAccountId(v string) *DeleteFolderInput {
	s.AwsAccountId = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *DeleteFolderInput) SetFolderId(v string) *DeleteFolderInput {
	s.FolderId = &v
	return s
}

type DeleteFolderMembershipInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that contains the folder.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The Folder ID.
	//
	// FolderId is a required field
	FolderId *string `location:"uri" locationName:"FolderId" min:"1" type:"string" required:"true"`

	// The ID of the asset that you want to delete.
	//
	// MemberId is a required field
	MemberId *string `location:"uri" locationName:"MemberId" min:"1" type:"string" required:"true"`

	// The member type of the asset that you want to delete from a folder.
	//
	// MemberType is a required field
	MemberType *string `location:"uri" locationName:"MemberType" type:"string" required:"true" enum:"MemberType"`
}

// 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 DeleteFolderMembershipInput) 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 DeleteFolderMembershipInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteFolderMembershipInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteFolderMembershipInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.FolderId == nil {
		invalidParams.Add(request.NewErrParamRequired("FolderId"))
	}
	if s.FolderId != nil && len(*s.FolderId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FolderId", 1))
	}
	if s.MemberId == nil {
		invalidParams.Add(request.NewErrParamRequired("MemberId"))
	}
	if s.MemberId != nil && len(*s.MemberId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("MemberId", 1))
	}
	if s.MemberType == nil {
		invalidParams.Add(request.NewErrParamRequired("MemberType"))
	}
	if s.MemberType != nil && len(*s.MemberType) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("MemberType", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteFolderMembershipInput) SetAwsAccountId(v string) *DeleteFolderMembershipInput {
	s.AwsAccountId = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *DeleteFolderMembershipInput) SetFolderId(v string) *DeleteFolderMembershipInput {
	s.FolderId = &v
	return s
}

// SetMemberId sets the MemberId field's value.
func (s *DeleteFolderMembershipInput) SetMemberId(v string) *DeleteFolderMembershipInput {
	s.MemberId = &v
	return s
}

// SetMemberType sets the MemberType field's value.
func (s *DeleteFolderMembershipInput) SetMemberType(v string) *DeleteFolderMembershipInput {
	s.MemberType = &v
	return s
}

type DeleteFolderMembershipOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `type:"integer"`
}

// 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 DeleteFolderMembershipOutput) 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 DeleteFolderMembershipOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteFolderMembershipOutput) SetRequestId(v string) *DeleteFolderMembershipOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteFolderMembershipOutput) SetStatus(v int64) *DeleteFolderMembershipOutput {
	s.Status = &v
	return s
}

type DeleteFolderOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name of the deleted folder.
	Arn *string `type:"string"`

	// The ID of the folder.
	FolderId *string `min:"1" type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DeleteFolderOutput) 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 DeleteFolderOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DeleteFolderOutput) SetArn(v string) *DeleteFolderOutput {
	s.Arn = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *DeleteFolderOutput) SetFolderId(v string) *DeleteFolderOutput {
	s.FolderId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteFolderOutput) SetRequestId(v string) *DeleteFolderOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteFolderOutput) SetStatus(v int64) *DeleteFolderOutput {
	s.Status = &v
	return s
}

type DeleteGroupInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that the group is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The name of the group that you want to delete.
	//
	// GroupName is a required field
	GroupName *string `location:"uri" locationName:"GroupName" min:"1" type:"string" required:"true"`

	// The namespace of the group that you want to delete.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" 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 DeleteGroupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteGroupInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.GroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("GroupName"))
	}
	if s.GroupName != nil && len(*s.GroupName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteGroupInput) SetAwsAccountId(v string) *DeleteGroupInput {
	s.AwsAccountId = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *DeleteGroupInput) SetGroupName(v string) *DeleteGroupInput {
	s.GroupName = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DeleteGroupInput) SetNamespace(v string) *DeleteGroupInput {
	s.Namespace = &v
	return s
}

type DeleteGroupMembershipInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that the group is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The name of the group that you want to delete the user from.
	//
	// GroupName is a required field
	GroupName *string `location:"uri" locationName:"GroupName" min:"1" type:"string" required:"true"`

	// The name of the user that you want to delete from the group membership.
	//
	// MemberName is a required field
	MemberName *string `location:"uri" locationName:"MemberName" min:"1" type:"string" required:"true"`

	// The namespace of the group that you want to remove a user from.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" 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 DeleteGroupMembershipInput) 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 DeleteGroupMembershipInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteGroupMembershipInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteGroupMembershipInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.GroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("GroupName"))
	}
	if s.GroupName != nil && len(*s.GroupName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
	}
	if s.MemberName == nil {
		invalidParams.Add(request.NewErrParamRequired("MemberName"))
	}
	if s.MemberName != nil && len(*s.MemberName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("MemberName", 1))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteGroupMembershipInput) SetAwsAccountId(v string) *DeleteGroupMembershipInput {
	s.AwsAccountId = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *DeleteGroupMembershipInput) SetGroupName(v string) *DeleteGroupMembershipInput {
	s.GroupName = &v
	return s
}

// SetMemberName sets the MemberName field's value.
func (s *DeleteGroupMembershipInput) SetMemberName(v string) *DeleteGroupMembershipInput {
	s.MemberName = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DeleteGroupMembershipInput) SetNamespace(v string) *DeleteGroupMembershipInput {
	s.Namespace = &v
	return s
}

type DeleteGroupMembershipOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DeleteGroupMembershipOutput) 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 DeleteGroupMembershipOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteGroupMembershipOutput) SetRequestId(v string) *DeleteGroupMembershipOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteGroupMembershipOutput) SetStatus(v int64) *DeleteGroupMembershipOutput {
	s.Status = &v
	return s
}

type DeleteGroupOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteGroupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteGroupOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteGroupOutput) SetRequestId(v string) *DeleteGroupOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteGroupOutput) SetStatus(v int64) *DeleteGroupOutput {
	s.Status = &v
	return s
}

type DeleteIAMPolicyAssignmentInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The name of the assignment.
	//
	// AssignmentName is a required field
	AssignmentName *string `location:"uri" locationName:"AssignmentName" min:"1" type:"string" required:"true"`

	// The Amazon Web Services account ID where you want to delete the IAM policy
	// assignment.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The namespace that contains the assignment.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" 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 DeleteIAMPolicyAssignmentInput) 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 DeleteIAMPolicyAssignmentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteIAMPolicyAssignmentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteIAMPolicyAssignmentInput"}
	if s.AssignmentName == nil {
		invalidParams.Add(request.NewErrParamRequired("AssignmentName"))
	}
	if s.AssignmentName != nil && len(*s.AssignmentName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssignmentName", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssignmentName sets the AssignmentName field's value.
func (s *DeleteIAMPolicyAssignmentInput) SetAssignmentName(v string) *DeleteIAMPolicyAssignmentInput {
	s.AssignmentName = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteIAMPolicyAssignmentInput) SetAwsAccountId(v string) *DeleteIAMPolicyAssignmentInput {
	s.AwsAccountId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DeleteIAMPolicyAssignmentInput) SetNamespace(v string) *DeleteIAMPolicyAssignmentInput {
	s.Namespace = &v
	return s
}

type DeleteIAMPolicyAssignmentOutput struct {
	_ struct{} `type:"structure"`

	// The name of the assignment.
	AssignmentName *string `min:"1" type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DeleteIAMPolicyAssignmentOutput) 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 DeleteIAMPolicyAssignmentOutput) GoString() string {
	return s.String()
}

// SetAssignmentName sets the AssignmentName field's value.
func (s *DeleteIAMPolicyAssignmentOutput) SetAssignmentName(v string) *DeleteIAMPolicyAssignmentOutput {
	s.AssignmentName = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteIAMPolicyAssignmentOutput) SetRequestId(v string) *DeleteIAMPolicyAssignmentOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteIAMPolicyAssignmentOutput) SetStatus(v int64) *DeleteIAMPolicyAssignmentOutput {
	s.Status = &v
	return s
}

type DeleteIdentityPropagationConfigInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that you want to delete an identity
	// propagation configuration from.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The name of the Amazon Web Services service that you want to delete the associated
	// access scopes and authorized targets from.
	//
	// Service is a required field
	Service *string `location:"uri" locationName:"Service" type:"string" required:"true" enum:"ServiceType"`
}

// 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 DeleteIdentityPropagationConfigInput) 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 DeleteIdentityPropagationConfigInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteIdentityPropagationConfigInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteIdentityPropagationConfigInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Service == nil {
		invalidParams.Add(request.NewErrParamRequired("Service"))
	}
	if s.Service != nil && len(*s.Service) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Service", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteIdentityPropagationConfigInput) SetAwsAccountId(v string) *DeleteIdentityPropagationConfigInput {
	s.AwsAccountId = &v
	return s
}

// SetService sets the Service field's value.
func (s *DeleteIdentityPropagationConfigInput) SetService(v string) *DeleteIdentityPropagationConfigInput {
	s.Service = &v
	return s
}

type DeleteIdentityPropagationConfigOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DeleteIdentityPropagationConfigOutput) 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 DeleteIdentityPropagationConfigOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteIdentityPropagationConfigOutput) SetRequestId(v string) *DeleteIdentityPropagationConfigOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteIdentityPropagationConfigOutput) SetStatus(v int64) *DeleteIdentityPropagationConfigOutput {
	s.Status = &v
	return s
}

type DeleteNamespaceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that you want to delete the Amazon
	// QuickSight namespace from.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The namespace that you want to delete.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" 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 DeleteNamespaceInput) 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 DeleteNamespaceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteNamespaceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteNamespaceInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteNamespaceInput) SetAwsAccountId(v string) *DeleteNamespaceInput {
	s.AwsAccountId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DeleteNamespaceInput) SetNamespace(v string) *DeleteNamespaceInput {
	s.Namespace = &v
	return s
}

type DeleteNamespaceOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DeleteNamespaceOutput) 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 DeleteNamespaceOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteNamespaceOutput) SetRequestId(v string) *DeleteNamespaceOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteNamespaceOutput) SetStatus(v int64) *DeleteNamespaceOutput {
	s.Status = &v
	return s
}

type DeleteRefreshScheduleInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dataset.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" type:"string" required:"true"`

	// The ID of the refresh schedule.
	//
	// ScheduleId is a required field
	ScheduleId *string `location:"uri" locationName:"ScheduleId" 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 DeleteRefreshScheduleInput) 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 DeleteRefreshScheduleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteRefreshScheduleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteRefreshScheduleInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}
	if s.ScheduleId == nil {
		invalidParams.Add(request.NewErrParamRequired("ScheduleId"))
	}
	if s.ScheduleId != nil && len(*s.ScheduleId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ScheduleId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteRefreshScheduleInput) SetAwsAccountId(v string) *DeleteRefreshScheduleInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *DeleteRefreshScheduleInput) SetDataSetId(v string) *DeleteRefreshScheduleInput {
	s.DataSetId = &v
	return s
}

// SetScheduleId sets the ScheduleId field's value.
func (s *DeleteRefreshScheduleInput) SetScheduleId(v string) *DeleteRefreshScheduleInput {
	s.ScheduleId = &v
	return s
}

type DeleteRefreshScheduleOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the refresh schedule.
	Arn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The ID of the refresh schedule.
	ScheduleId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DeleteRefreshScheduleOutput) 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 DeleteRefreshScheduleOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DeleteRefreshScheduleOutput) SetArn(v string) *DeleteRefreshScheduleOutput {
	s.Arn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteRefreshScheduleOutput) SetRequestId(v string) *DeleteRefreshScheduleOutput {
	s.RequestId = &v
	return s
}

// SetScheduleId sets the ScheduleId field's value.
func (s *DeleteRefreshScheduleOutput) SetScheduleId(v string) *DeleteRefreshScheduleOutput {
	s.ScheduleId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteRefreshScheduleOutput) SetStatus(v int64) *DeleteRefreshScheduleOutput {
	s.Status = &v
	return s
}

type DeleteRoleCustomPermissionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that the group is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The namespace that includes the role.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// The role that you want to remove permissions from.
	//
	// Role is a required field
	Role *string `location:"uri" locationName:"Role" type:"string" required:"true" enum:"Role"`
}

// 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 DeleteRoleCustomPermissionInput) 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 DeleteRoleCustomPermissionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteRoleCustomPermissionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteRoleCustomPermissionInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}
	if s.Role == nil {
		invalidParams.Add(request.NewErrParamRequired("Role"))
	}
	if s.Role != nil && len(*s.Role) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Role", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteRoleCustomPermissionInput) SetAwsAccountId(v string) *DeleteRoleCustomPermissionInput {
	s.AwsAccountId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DeleteRoleCustomPermissionInput) SetNamespace(v string) *DeleteRoleCustomPermissionInput {
	s.Namespace = &v
	return s
}

// SetRole sets the Role field's value.
func (s *DeleteRoleCustomPermissionInput) SetRole(v string) *DeleteRoleCustomPermissionInput {
	s.Role = &v
	return s
}

type DeleteRoleCustomPermissionOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `type:"integer"`
}

// 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 DeleteRoleCustomPermissionOutput) 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 DeleteRoleCustomPermissionOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteRoleCustomPermissionOutput) SetRequestId(v string) *DeleteRoleCustomPermissionOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteRoleCustomPermissionOutput) SetStatus(v int64) *DeleteRoleCustomPermissionOutput {
	s.Status = &v
	return s
}

type DeleteRoleMembershipInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that you want to create a group
	// in. The Amazon Web Services account ID that you provide must be the same
	// Amazon Web Services account that contains your Amazon QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The name of the group.
	//
	// MemberName is a required field
	MemberName *string `location:"uri" locationName:"MemberName" min:"1" type:"string" required:"true"`

	// The namespace that contains the role.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// The role that you want to remove permissions from.
	//
	// Role is a required field
	Role *string `location:"uri" locationName:"Role" type:"string" required:"true" enum:"Role"`
}

// 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 DeleteRoleMembershipInput) 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 DeleteRoleMembershipInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteRoleMembershipInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteRoleMembershipInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MemberName == nil {
		invalidParams.Add(request.NewErrParamRequired("MemberName"))
	}
	if s.MemberName != nil && len(*s.MemberName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("MemberName", 1))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}
	if s.Role == nil {
		invalidParams.Add(request.NewErrParamRequired("Role"))
	}
	if s.Role != nil && len(*s.Role) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Role", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteRoleMembershipInput) SetAwsAccountId(v string) *DeleteRoleMembershipInput {
	s.AwsAccountId = &v
	return s
}

// SetMemberName sets the MemberName field's value.
func (s *DeleteRoleMembershipInput) SetMemberName(v string) *DeleteRoleMembershipInput {
	s.MemberName = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DeleteRoleMembershipInput) SetNamespace(v string) *DeleteRoleMembershipInput {
	s.Namespace = &v
	return s
}

// SetRole sets the Role field's value.
func (s *DeleteRoleMembershipInput) SetRole(v string) *DeleteRoleMembershipInput {
	s.Role = &v
	return s
}

type DeleteRoleMembershipOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DeleteRoleMembershipOutput) 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 DeleteRoleMembershipOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteRoleMembershipOutput) SetRequestId(v string) *DeleteRoleMembershipOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteRoleMembershipOutput) SetStatus(v int64) *DeleteRoleMembershipOutput {
	s.Status = &v
	return s
}

type DeleteTemplateAliasInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The name for the template alias. To delete a specific alias, you delete the
	// version that the alias points to. You can specify the alias name, or specify
	// the latest version of the template by providing the keyword $LATEST in the
	// AliasName parameter.
	//
	// AliasName is a required field
	AliasName *string `location:"uri" locationName:"AliasName" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account that contains the item to delete.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the template that the specified alias is for.
	//
	// TemplateId is a required field
	TemplateId *string `location:"uri" locationName:"TemplateId" 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 DeleteTemplateAliasInput) 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 DeleteTemplateAliasInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteTemplateAliasInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteTemplateAliasInput"}
	if s.AliasName == nil {
		invalidParams.Add(request.NewErrParamRequired("AliasName"))
	}
	if s.AliasName != nil && len(*s.AliasName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AliasName", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.TemplateId == nil {
		invalidParams.Add(request.NewErrParamRequired("TemplateId"))
	}
	if s.TemplateId != nil && len(*s.TemplateId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TemplateId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAliasName sets the AliasName field's value.
func (s *DeleteTemplateAliasInput) SetAliasName(v string) *DeleteTemplateAliasInput {
	s.AliasName = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteTemplateAliasInput) SetAwsAccountId(v string) *DeleteTemplateAliasInput {
	s.AwsAccountId = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *DeleteTemplateAliasInput) SetTemplateId(v string) *DeleteTemplateAliasInput {
	s.TemplateId = &v
	return s
}

type DeleteTemplateAliasOutput struct {
	_ struct{} `type:"structure"`

	// The name for the template alias.
	AliasName *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the template you want to delete.
	Arn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// An ID for the template associated with the deletion.
	TemplateId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTemplateAliasOutput) 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 DeleteTemplateAliasOutput) GoString() string {
	return s.String()
}

// SetAliasName sets the AliasName field's value.
func (s *DeleteTemplateAliasOutput) SetAliasName(v string) *DeleteTemplateAliasOutput {
	s.AliasName = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *DeleteTemplateAliasOutput) SetArn(v string) *DeleteTemplateAliasOutput {
	s.Arn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteTemplateAliasOutput) SetRequestId(v string) *DeleteTemplateAliasOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteTemplateAliasOutput) SetStatus(v int64) *DeleteTemplateAliasOutput {
	s.Status = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *DeleteTemplateAliasOutput) SetTemplateId(v string) *DeleteTemplateAliasOutput {
	s.TemplateId = &v
	return s
}

type DeleteTemplateInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the template that
	// you're deleting.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// An ID for the template you want to delete.
	//
	// TemplateId is a required field
	TemplateId *string `location:"uri" locationName:"TemplateId" min:"1" type:"string" required:"true"`

	// Specifies the version of the template that you want to delete. If you don't
	// provide a version number, DeleteTemplate deletes all versions of the template.
	VersionNumber *int64 `location:"querystring" locationName:"version-number" min:"1" type:"long"`
}

// 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 DeleteTemplateInput) 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 DeleteTemplateInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteTemplateInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteTemplateInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.TemplateId == nil {
		invalidParams.Add(request.NewErrParamRequired("TemplateId"))
	}
	if s.TemplateId != nil && len(*s.TemplateId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TemplateId", 1))
	}
	if s.VersionNumber != nil && *s.VersionNumber < 1 {
		invalidParams.Add(request.NewErrParamMinValue("VersionNumber", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteTemplateInput) SetAwsAccountId(v string) *DeleteTemplateInput {
	s.AwsAccountId = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *DeleteTemplateInput) SetTemplateId(v string) *DeleteTemplateInput {
	s.TemplateId = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *DeleteTemplateInput) SetVersionNumber(v int64) *DeleteTemplateInput {
	s.VersionNumber = &v
	return s
}

type DeleteTemplateOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	Arn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// An ID for the template.
	TemplateId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTemplateOutput) 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 DeleteTemplateOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DeleteTemplateOutput) SetArn(v string) *DeleteTemplateOutput {
	s.Arn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteTemplateOutput) SetRequestId(v string) *DeleteTemplateOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteTemplateOutput) SetStatus(v int64) *DeleteTemplateOutput {
	s.Status = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *DeleteTemplateOutput) SetTemplateId(v string) *DeleteTemplateOutput {
	s.TemplateId = &v
	return s
}

type DeleteThemeAliasInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The unique name for the theme alias to delete.
	//
	// AliasName is a required field
	AliasName *string `location:"uri" locationName:"AliasName" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account that contains the theme alias to
	// delete.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the theme that the specified alias is for.
	//
	// ThemeId is a required field
	ThemeId *string `location:"uri" locationName:"ThemeId" 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 DeleteThemeAliasInput) 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 DeleteThemeAliasInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteThemeAliasInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteThemeAliasInput"}
	if s.AliasName == nil {
		invalidParams.Add(request.NewErrParamRequired("AliasName"))
	}
	if s.AliasName != nil && len(*s.AliasName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AliasName", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.ThemeId == nil {
		invalidParams.Add(request.NewErrParamRequired("ThemeId"))
	}
	if s.ThemeId != nil && len(*s.ThemeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ThemeId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAliasName sets the AliasName field's value.
func (s *DeleteThemeAliasInput) SetAliasName(v string) *DeleteThemeAliasInput {
	s.AliasName = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteThemeAliasInput) SetAwsAccountId(v string) *DeleteThemeAliasInput {
	s.AwsAccountId = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *DeleteThemeAliasInput) SetThemeId(v string) *DeleteThemeAliasInput {
	s.ThemeId = &v
	return s
}

type DeleteThemeAliasOutput struct {
	_ struct{} `type:"structure"`

	// The name for the theme alias.
	AliasName *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the theme resource using the deleted alias.
	Arn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// An ID for the theme associated with the deletion.
	ThemeId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteThemeAliasOutput) 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 DeleteThemeAliasOutput) GoString() string {
	return s.String()
}

// SetAliasName sets the AliasName field's value.
func (s *DeleteThemeAliasOutput) SetAliasName(v string) *DeleteThemeAliasOutput {
	s.AliasName = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *DeleteThemeAliasOutput) SetArn(v string) *DeleteThemeAliasOutput {
	s.Arn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteThemeAliasOutput) SetRequestId(v string) *DeleteThemeAliasOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteThemeAliasOutput) SetStatus(v int64) *DeleteThemeAliasOutput {
	s.Status = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *DeleteThemeAliasOutput) SetThemeId(v string) *DeleteThemeAliasOutput {
	s.ThemeId = &v
	return s
}

type DeleteThemeInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the theme that you're
	// deleting.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// An ID for the theme that you want to delete.
	//
	// ThemeId is a required field
	ThemeId *string `location:"uri" locationName:"ThemeId" min:"1" type:"string" required:"true"`

	// The version of the theme that you want to delete.
	//
	// Note: If you don't provide a version number, you're using this call to DeleteTheme
	// to delete all versions of the theme.
	VersionNumber *int64 `location:"querystring" locationName:"version-number" min:"1" type:"long"`
}

// 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 DeleteThemeInput) 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 DeleteThemeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteThemeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteThemeInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.ThemeId == nil {
		invalidParams.Add(request.NewErrParamRequired("ThemeId"))
	}
	if s.ThemeId != nil && len(*s.ThemeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ThemeId", 1))
	}
	if s.VersionNumber != nil && *s.VersionNumber < 1 {
		invalidParams.Add(request.NewErrParamMinValue("VersionNumber", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteThemeInput) SetAwsAccountId(v string) *DeleteThemeInput {
	s.AwsAccountId = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *DeleteThemeInput) SetThemeId(v string) *DeleteThemeInput {
	s.ThemeId = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *DeleteThemeInput) SetVersionNumber(v int64) *DeleteThemeInput {
	s.VersionNumber = &v
	return s
}

type DeleteThemeOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	Arn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// An ID for the theme.
	ThemeId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteThemeOutput) 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 DeleteThemeOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DeleteThemeOutput) SetArn(v string) *DeleteThemeOutput {
	s.Arn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteThemeOutput) SetRequestId(v string) *DeleteThemeOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteThemeOutput) SetStatus(v int64) *DeleteThemeOutput {
	s.Status = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *DeleteThemeOutput) SetThemeId(v string) *DeleteThemeOutput {
	s.ThemeId = &v
	return s
}

type DeleteTopicInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the topic that you
	// want to delete.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the topic that you want to delete. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	//
	// TopicId is a required field
	TopicId *string `location:"uri" locationName:"TopicId" 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 DeleteTopicInput) 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 DeleteTopicInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteTopicInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteTopicInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.TopicId == nil {
		invalidParams.Add(request.NewErrParamRequired("TopicId"))
	}
	if s.TopicId != nil && len(*s.TopicId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TopicId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteTopicInput) SetAwsAccountId(v string) *DeleteTopicInput {
	s.AwsAccountId = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *DeleteTopicInput) SetTopicId(v string) *DeleteTopicInput {
	s.TopicId = &v
	return s
}

type DeleteTopicOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the topic.
	Arn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The ID of the topic that you want to delete. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	TopicId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTopicOutput) 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 DeleteTopicOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DeleteTopicOutput) SetArn(v string) *DeleteTopicOutput {
	s.Arn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteTopicOutput) SetRequestId(v string) *DeleteTopicOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteTopicOutput) SetStatus(v int64) *DeleteTopicOutput {
	s.Status = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *DeleteTopicOutput) SetTopicId(v string) *DeleteTopicOutput {
	s.TopicId = &v
	return s
}

type DeleteTopicRefreshScheduleInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dataset.
	//
	// DatasetId is a required field
	DatasetId *string `location:"uri" locationName:"DatasetId" type:"string" required:"true"`

	// The ID of the topic that you want to modify. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	//
	// TopicId is a required field
	TopicId *string `location:"uri" locationName:"TopicId" 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 DeleteTopicRefreshScheduleInput) 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 DeleteTopicRefreshScheduleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteTopicRefreshScheduleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteTopicRefreshScheduleInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DatasetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DatasetId"))
	}
	if s.DatasetId != nil && len(*s.DatasetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatasetId", 1))
	}
	if s.TopicId == nil {
		invalidParams.Add(request.NewErrParamRequired("TopicId"))
	}
	if s.TopicId != nil && len(*s.TopicId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TopicId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteTopicRefreshScheduleInput) SetAwsAccountId(v string) *DeleteTopicRefreshScheduleInput {
	s.AwsAccountId = &v
	return s
}

// SetDatasetId sets the DatasetId field's value.
func (s *DeleteTopicRefreshScheduleInput) SetDatasetId(v string) *DeleteTopicRefreshScheduleInput {
	s.DatasetId = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *DeleteTopicRefreshScheduleInput) SetTopicId(v string) *DeleteTopicRefreshScheduleInput {
	s.TopicId = &v
	return s
}

type DeleteTopicRefreshScheduleOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the dataset.
	DatasetArn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The Amazon Resource Name (ARN) of the topic.
	TopicArn *string `type:"string"`

	// The ID of the topic that you want to modify. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	TopicId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTopicRefreshScheduleOutput) 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 DeleteTopicRefreshScheduleOutput) GoString() string {
	return s.String()
}

// SetDatasetArn sets the DatasetArn field's value.
func (s *DeleteTopicRefreshScheduleOutput) SetDatasetArn(v string) *DeleteTopicRefreshScheduleOutput {
	s.DatasetArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteTopicRefreshScheduleOutput) SetRequestId(v string) *DeleteTopicRefreshScheduleOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteTopicRefreshScheduleOutput) SetStatus(v int64) *DeleteTopicRefreshScheduleOutput {
	s.Status = &v
	return s
}

// SetTopicArn sets the TopicArn field's value.
func (s *DeleteTopicRefreshScheduleOutput) SetTopicArn(v string) *DeleteTopicRefreshScheduleOutput {
	s.TopicArn = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *DeleteTopicRefreshScheduleOutput) SetTopicId(v string) *DeleteTopicRefreshScheduleOutput {
	s.TopicId = &v
	return s
}

type DeleteUserByPrincipalIdInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that the user is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The namespace. Currently, you should set this to default.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// The principal ID of the user.
	//
	// PrincipalId is a required field
	PrincipalId *string `location:"uri" locationName:"PrincipalId" 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 DeleteUserByPrincipalIdInput) 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 DeleteUserByPrincipalIdInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteUserByPrincipalIdInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteUserByPrincipalIdInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}
	if s.PrincipalId == nil {
		invalidParams.Add(request.NewErrParamRequired("PrincipalId"))
	}
	if s.PrincipalId != nil && len(*s.PrincipalId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PrincipalId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteUserByPrincipalIdInput) SetAwsAccountId(v string) *DeleteUserByPrincipalIdInput {
	s.AwsAccountId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DeleteUserByPrincipalIdInput) SetNamespace(v string) *DeleteUserByPrincipalIdInput {
	s.Namespace = &v
	return s
}

// SetPrincipalId sets the PrincipalId field's value.
func (s *DeleteUserByPrincipalIdInput) SetPrincipalId(v string) *DeleteUserByPrincipalIdInput {
	s.PrincipalId = &v
	return s
}

type DeleteUserByPrincipalIdOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DeleteUserByPrincipalIdOutput) 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 DeleteUserByPrincipalIdOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteUserByPrincipalIdOutput) SetRequestId(v string) *DeleteUserByPrincipalIdOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteUserByPrincipalIdOutput) SetStatus(v int64) *DeleteUserByPrincipalIdOutput {
	s.Status = &v
	return s
}

type DeleteUserInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that the user is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The namespace. Currently, you should set this to default.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// The name of the user that you want to delete.
	//
	// UserName is a required field
	UserName *string `location:"uri" locationName:"UserName" 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 DeleteUserInput) 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 DeleteUserInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteUserInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteUserInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}
	if s.UserName == nil {
		invalidParams.Add(request.NewErrParamRequired("UserName"))
	}
	if s.UserName != nil && len(*s.UserName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteUserInput) SetAwsAccountId(v string) *DeleteUserInput {
	s.AwsAccountId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DeleteUserInput) SetNamespace(v string) *DeleteUserInput {
	s.Namespace = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *DeleteUserInput) SetUserName(v string) *DeleteUserInput {
	s.UserName = &v
	return s
}

type DeleteUserOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DeleteUserOutput) 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 DeleteUserOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteUserOutput) SetRequestId(v string) *DeleteUserOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteUserOutput) SetStatus(v int64) *DeleteUserOutput {
	s.Status = &v
	return s
}

type DeleteVPCConnectionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID of the account where you want to delete
	// a VPC connection.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the VPC connection that you're creating. This ID is a unique identifier
	// for each Amazon Web Services Region in an Amazon Web Services account.
	//
	// VPCConnectionId is a required field
	VPCConnectionId *string `location:"uri" locationName:"VPCConnectionId" 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 DeleteVPCConnectionInput) 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 DeleteVPCConnectionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteVPCConnectionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteVPCConnectionInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.VPCConnectionId == nil {
		invalidParams.Add(request.NewErrParamRequired("VPCConnectionId"))
	}
	if s.VPCConnectionId != nil && len(*s.VPCConnectionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VPCConnectionId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DeleteVPCConnectionInput) SetAwsAccountId(v string) *DeleteVPCConnectionInput {
	s.AwsAccountId = &v
	return s
}

// SetVPCConnectionId sets the VPCConnectionId field's value.
func (s *DeleteVPCConnectionInput) SetVPCConnectionId(v string) *DeleteVPCConnectionInput {
	s.VPCConnectionId = &v
	return s
}

type DeleteVPCConnectionOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the deleted VPC connection.
	Arn *string `type:"string"`

	// The availability status of the VPC connection.
	AvailabilityStatus *string `type:"string" enum:"VPCConnectionAvailabilityStatus"`

	// The deletion status of the VPC connection.
	DeletionStatus *string `type:"string" enum:"VPCConnectionResourceStatus"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The ID of the VPC connection that you're creating. This ID is a unique identifier
	// for each Amazon Web Services Region in an Amazon Web Services account.
	VPCConnectionId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteVPCConnectionOutput) 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 DeleteVPCConnectionOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DeleteVPCConnectionOutput) SetArn(v string) *DeleteVPCConnectionOutput {
	s.Arn = &v
	return s
}

// SetAvailabilityStatus sets the AvailabilityStatus field's value.
func (s *DeleteVPCConnectionOutput) SetAvailabilityStatus(v string) *DeleteVPCConnectionOutput {
	s.AvailabilityStatus = &v
	return s
}

// SetDeletionStatus sets the DeletionStatus field's value.
func (s *DeleteVPCConnectionOutput) SetDeletionStatus(v string) *DeleteVPCConnectionOutput {
	s.DeletionStatus = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DeleteVPCConnectionOutput) SetRequestId(v string) *DeleteVPCConnectionOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteVPCConnectionOutput) SetStatus(v int64) *DeleteVPCConnectionOutput {
	s.Status = &v
	return s
}

// SetVPCConnectionId sets the VPCConnectionId field's value.
func (s *DeleteVPCConnectionOutput) SetVPCConnectionId(v string) *DeleteVPCConnectionOutput {
	s.VPCConnectionId = &v
	return s
}

type DescribeAccountCustomizationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that you want to describe Amazon
	// QuickSight customizations for.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The Amazon QuickSight namespace that you want to describe Amazon QuickSight
	// customizations for.
	Namespace *string `location:"querystring" locationName:"namespace" type:"string"`

	// The Resolved flag works with the other parameters to determine which view
	// of Amazon QuickSight customizations is returned. You can add this flag to
	// your command to use the same view that Amazon QuickSight uses to identify
	// which customizations to apply to the console. Omit this flag, or set it to
	// no-resolved, to reveal customizations that are configured at different levels.
	Resolved *bool `location:"querystring" locationName:"resolved" type:"boolean"`
}

// 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 DescribeAccountCustomizationInput) 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 DescribeAccountCustomizationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeAccountCustomizationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeAccountCustomizationInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeAccountCustomizationInput) SetAwsAccountId(v string) *DescribeAccountCustomizationInput {
	s.AwsAccountId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DescribeAccountCustomizationInput) SetNamespace(v string) *DescribeAccountCustomizationInput {
	s.Namespace = &v
	return s
}

// SetResolved sets the Resolved field's value.
func (s *DescribeAccountCustomizationInput) SetResolved(v bool) *DescribeAccountCustomizationInput {
	s.Resolved = &v
	return s
}

type DescribeAccountCustomizationOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon QuickSight customizations that exist in the current Amazon Web
	// Services Region.
	AccountCustomization *AccountCustomization `type:"structure"`

	// The Amazon Resource Name (ARN) of the customization that's associated with
	// this Amazon Web Services account.
	Arn *string `type:"string"`

	// The ID for the Amazon Web Services account that you're describing.
	AwsAccountId *string `min:"12" type:"string"`

	// The Amazon QuickSight namespace that you're describing.
	Namespace *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeAccountCustomizationOutput) 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 DescribeAccountCustomizationOutput) GoString() string {
	return s.String()
}

// SetAccountCustomization sets the AccountCustomization field's value.
func (s *DescribeAccountCustomizationOutput) SetAccountCustomization(v *AccountCustomization) *DescribeAccountCustomizationOutput {
	s.AccountCustomization = v
	return s
}

// SetArn sets the Arn field's value.
func (s *DescribeAccountCustomizationOutput) SetArn(v string) *DescribeAccountCustomizationOutput {
	s.Arn = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeAccountCustomizationOutput) SetAwsAccountId(v string) *DescribeAccountCustomizationOutput {
	s.AwsAccountId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DescribeAccountCustomizationOutput) SetNamespace(v string) *DescribeAccountCustomizationOutput {
	s.Namespace = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeAccountCustomizationOutput) SetRequestId(v string) *DescribeAccountCustomizationOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeAccountCustomizationOutput) SetStatus(v int64) *DescribeAccountCustomizationOutput {
	s.Status = &v
	return s
}

type DescribeAccountSettingsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that contains the settings that
	// you want to list.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeAccountSettingsInput) 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 DescribeAccountSettingsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeAccountSettingsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeAccountSettingsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeAccountSettingsInput) SetAwsAccountId(v string) *DescribeAccountSettingsInput {
	s.AwsAccountId = &v
	return s
}

type DescribeAccountSettingsOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon QuickSight settings for this Amazon Web Services account. This
	// information includes the edition of Amazon Amazon QuickSight that you subscribed
	// to (Standard or Enterprise) and the notification email for the Amazon QuickSight
	// subscription.
	//
	// In the QuickSight console, the Amazon QuickSight subscription is sometimes
	// referred to as a QuickSight "account" even though it's technically not an
	// account by itself. Instead, it's a subscription to the Amazon QuickSight
	// service for your Amazon Web Services account. The edition that you subscribe
	// to applies to Amazon QuickSight in every Amazon Web Services Region where
	// you use it.
	AccountSettings *AccountSettings `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeAccountSettingsOutput) 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 DescribeAccountSettingsOutput) GoString() string {
	return s.String()
}

// SetAccountSettings sets the AccountSettings field's value.
func (s *DescribeAccountSettingsOutput) SetAccountSettings(v *AccountSettings) *DescribeAccountSettingsOutput {
	s.AccountSettings = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeAccountSettingsOutput) SetRequestId(v string) *DescribeAccountSettingsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeAccountSettingsOutput) SetStatus(v int64) *DescribeAccountSettingsOutput {
	s.Status = &v
	return s
}

type DescribeAccountSubscriptionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID associated with your Amazon QuickSight
	// account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeAccountSubscriptionInput) 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 DescribeAccountSubscriptionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeAccountSubscriptionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeAccountSubscriptionInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeAccountSubscriptionInput) SetAwsAccountId(v string) *DescribeAccountSubscriptionInput {
	s.AwsAccountId = &v
	return s
}

type DescribeAccountSubscriptionOutput struct {
	_ struct{} `type:"structure"`

	// A structure that contains the following elements:
	//
	//    * Your Amazon QuickSight account name.
	//
	//    * The edition of Amazon QuickSight that your account is using.
	//
	//    * The notification email address that is associated with the Amazon QuickSight
	//    account.
	//
	//    * The authentication type of the Amazon QuickSight account.
	//
	//    * The status of the Amazon QuickSight account's subscription.
	AccountInfo *AccountInfo `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeAccountSubscriptionOutput) 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 DescribeAccountSubscriptionOutput) GoString() string {
	return s.String()
}

// SetAccountInfo sets the AccountInfo field's value.
func (s *DescribeAccountSubscriptionOutput) SetAccountInfo(v *AccountInfo) *DescribeAccountSubscriptionOutput {
	s.AccountInfo = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeAccountSubscriptionOutput) SetRequestId(v string) *DescribeAccountSubscriptionOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeAccountSubscriptionOutput) SetStatus(v int64) *DescribeAccountSubscriptionOutput {
	s.Status = &v
	return s
}

type DescribeAnalysisDefinitionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the analysis that you're describing. The ID is part of the URL
	// of the analysis.
	//
	// AnalysisId is a required field
	AnalysisId *string `location:"uri" locationName:"AnalysisId" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account that contains the analysis. You
	// must be using the Amazon Web Services account that the analysis is in.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeAnalysisDefinitionInput) 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 DescribeAnalysisDefinitionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeAnalysisDefinitionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeAnalysisDefinitionInput"}
	if s.AnalysisId == nil {
		invalidParams.Add(request.NewErrParamRequired("AnalysisId"))
	}
	if s.AnalysisId != nil && len(*s.AnalysisId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AnalysisId", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAnalysisId sets the AnalysisId field's value.
func (s *DescribeAnalysisDefinitionInput) SetAnalysisId(v string) *DescribeAnalysisDefinitionInput {
	s.AnalysisId = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeAnalysisDefinitionInput) SetAwsAccountId(v string) *DescribeAnalysisDefinitionInput {
	s.AwsAccountId = &v
	return s
}

type DescribeAnalysisDefinitionOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the analysis described.
	AnalysisId *string `min:"1" type:"string"`

	// The definition of an analysis.
	//
	// A definition is the data model of all features in a Dashboard, Template,
	// or Analysis.
	Definition *AnalysisDefinition `type:"structure"`

	// Errors associated with the analysis.
	Errors []*AnalysisError `min:"1" type:"list"`

	// The descriptive name of the analysis.
	Name *string `min:"1" type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// Status associated with the analysis.
	//
	//    * CREATION_IN_PROGRESS
	//
	//    * CREATION_SUCCESSFUL
	//
	//    * CREATION_FAILED
	//
	//    * UPDATE_IN_PROGRESS
	//
	//    * UPDATE_SUCCESSFUL
	//
	//    * UPDATE_FAILED
	//
	//    * DELETED
	ResourceStatus *string `type:"string" enum:"ResourceStatus"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The ARN of the theme of the analysis.
	ThemeArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeAnalysisDefinitionOutput) 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 DescribeAnalysisDefinitionOutput) GoString() string {
	return s.String()
}

// SetAnalysisId sets the AnalysisId field's value.
func (s *DescribeAnalysisDefinitionOutput) SetAnalysisId(v string) *DescribeAnalysisDefinitionOutput {
	s.AnalysisId = &v
	return s
}

// SetDefinition sets the Definition field's value.
func (s *DescribeAnalysisDefinitionOutput) SetDefinition(v *AnalysisDefinition) *DescribeAnalysisDefinitionOutput {
	s.Definition = v
	return s
}

// SetErrors sets the Errors field's value.
func (s *DescribeAnalysisDefinitionOutput) SetErrors(v []*AnalysisError) *DescribeAnalysisDefinitionOutput {
	s.Errors = v
	return s
}

// SetName sets the Name field's value.
func (s *DescribeAnalysisDefinitionOutput) SetName(v string) *DescribeAnalysisDefinitionOutput {
	s.Name = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeAnalysisDefinitionOutput) SetRequestId(v string) *DescribeAnalysisDefinitionOutput {
	s.RequestId = &v
	return s
}

// SetResourceStatus sets the ResourceStatus field's value.
func (s *DescribeAnalysisDefinitionOutput) SetResourceStatus(v string) *DescribeAnalysisDefinitionOutput {
	s.ResourceStatus = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeAnalysisDefinitionOutput) SetStatus(v int64) *DescribeAnalysisDefinitionOutput {
	s.Status = &v
	return s
}

// SetThemeArn sets the ThemeArn field's value.
func (s *DescribeAnalysisDefinitionOutput) SetThemeArn(v string) *DescribeAnalysisDefinitionOutput {
	s.ThemeArn = &v
	return s
}

type DescribeAnalysisInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the analysis that you're describing. The ID is part of the URL
	// of the analysis.
	//
	// AnalysisId is a required field
	AnalysisId *string `location:"uri" locationName:"AnalysisId" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account that contains the analysis. You
	// must be using the Amazon Web Services account that the analysis is in.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeAnalysisInput) 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 DescribeAnalysisInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeAnalysisInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeAnalysisInput"}
	if s.AnalysisId == nil {
		invalidParams.Add(request.NewErrParamRequired("AnalysisId"))
	}
	if s.AnalysisId != nil && len(*s.AnalysisId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AnalysisId", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAnalysisId sets the AnalysisId field's value.
func (s *DescribeAnalysisInput) SetAnalysisId(v string) *DescribeAnalysisInput {
	s.AnalysisId = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeAnalysisInput) SetAwsAccountId(v string) *DescribeAnalysisInput {
	s.AwsAccountId = &v
	return s
}

type DescribeAnalysisOutput struct {
	_ struct{} `type:"structure"`

	// A metadata structure that contains summary information for the analysis that
	// you're describing.
	Analysis *Analysis `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeAnalysisOutput) 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 DescribeAnalysisOutput) GoString() string {
	return s.String()
}

// SetAnalysis sets the Analysis field's value.
func (s *DescribeAnalysisOutput) SetAnalysis(v *Analysis) *DescribeAnalysisOutput {
	s.Analysis = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeAnalysisOutput) SetRequestId(v string) *DescribeAnalysisOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeAnalysisOutput) SetStatus(v int64) *DescribeAnalysisOutput {
	s.Status = &v
	return s
}

type DescribeAnalysisPermissionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the analysis whose permissions you're describing. The ID is part
	// of the analysis URL.
	//
	// AnalysisId is a required field
	AnalysisId *string `location:"uri" locationName:"AnalysisId" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account that contains the analysis whose
	// permissions you're describing. You must be using the Amazon Web Services
	// account that the analysis is in.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeAnalysisPermissionsInput) 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 DescribeAnalysisPermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeAnalysisPermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeAnalysisPermissionsInput"}
	if s.AnalysisId == nil {
		invalidParams.Add(request.NewErrParamRequired("AnalysisId"))
	}
	if s.AnalysisId != nil && len(*s.AnalysisId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AnalysisId", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAnalysisId sets the AnalysisId field's value.
func (s *DescribeAnalysisPermissionsInput) SetAnalysisId(v string) *DescribeAnalysisPermissionsInput {
	s.AnalysisId = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeAnalysisPermissionsInput) SetAwsAccountId(v string) *DescribeAnalysisPermissionsInput {
	s.AwsAccountId = &v
	return s
}

type DescribeAnalysisPermissionsOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the analysis whose permissions you're describing.
	AnalysisArn *string `type:"string"`

	// The ID of the analysis whose permissions you're describing.
	AnalysisId *string `min:"1" type:"string"`

	// A structure that describes the principals and the resource-level permissions
	// on an analysis.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeAnalysisPermissionsOutput) 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 DescribeAnalysisPermissionsOutput) GoString() string {
	return s.String()
}

// SetAnalysisArn sets the AnalysisArn field's value.
func (s *DescribeAnalysisPermissionsOutput) SetAnalysisArn(v string) *DescribeAnalysisPermissionsOutput {
	s.AnalysisArn = &v
	return s
}

// SetAnalysisId sets the AnalysisId field's value.
func (s *DescribeAnalysisPermissionsOutput) SetAnalysisId(v string) *DescribeAnalysisPermissionsOutput {
	s.AnalysisId = &v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *DescribeAnalysisPermissionsOutput) SetPermissions(v []*ResourcePermission) *DescribeAnalysisPermissionsOutput {
	s.Permissions = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeAnalysisPermissionsOutput) SetRequestId(v string) *DescribeAnalysisPermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeAnalysisPermissionsOutput) SetStatus(v int64) *DescribeAnalysisPermissionsOutput {
	s.Status = &v
	return s
}

type DescribeAssetBundleExportJobInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the job that you want described. The job ID is set when you start
	// a new job with a StartAssetBundleExportJob API call.
	//
	// AssetBundleExportJobId is a required field
	AssetBundleExportJobId *string `location:"uri" locationName:"AssetBundleExportJobId" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account the export job is executed in.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeAssetBundleExportJobInput) 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 DescribeAssetBundleExportJobInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeAssetBundleExportJobInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeAssetBundleExportJobInput"}
	if s.AssetBundleExportJobId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssetBundleExportJobId"))
	}
	if s.AssetBundleExportJobId != nil && len(*s.AssetBundleExportJobId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssetBundleExportJobId", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssetBundleExportJobId sets the AssetBundleExportJobId field's value.
func (s *DescribeAssetBundleExportJobInput) SetAssetBundleExportJobId(v string) *DescribeAssetBundleExportJobInput {
	s.AssetBundleExportJobId = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeAssetBundleExportJobInput) SetAwsAccountId(v string) *DescribeAssetBundleExportJobInput {
	s.AwsAccountId = &v
	return s
}

type DescribeAssetBundleExportJobOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the export job.
	Arn *string `type:"string"`

	// The ID of the job. The job ID is set when you start a new job with a StartAssetBundleExportJob
	// API call.
	AssetBundleExportJobId *string `min:"1" type:"string"`

	// The ID of the Amazon Web Services account that the export job was executed
	// in.
	AwsAccountId *string `min:"12" type:"string"`

	// The CloudFormation override property configuration for the export job.
	CloudFormationOverridePropertyConfiguration *AssetBundleCloudFormationOverridePropertyConfiguration `type:"structure"`

	// The time that the export job was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The URL to download the exported asset bundle data from.
	//
	// This URL is available only after the job has succeeded. This URL is valid
	// for 5 minutes after issuance. Call DescribeAssetBundleExportJob again for
	// a fresh URL if needed.
	//
	// The downloaded asset bundle is a zip file named assetbundle-{jobId}.qs. The
	// file has a .qs extension.
	//
	// This URL can't be used in a StartAssetBundleImportJob API call and should
	// only be used for download purposes.
	//
	// DownloadUrl is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DescribeAssetBundleExportJobOutput's
	// String and GoString methods.
	DownloadUrl *string `type:"string" sensitive:"true"`

	// An array of error records that describes any failures that occurred during
	// the export job processing.
	//
	// Error records accumulate while the job runs. The complete set of error records
	// is available after the job has completed and failed.
	Errors []*AssetBundleExportJobError `type:"list"`

	// The format of the exported asset bundle. A QUICKSIGHT_JSON formatted file
	// can be used to make a StartAssetBundleImportJob API call. A CLOUDFORMATION_JSON
	// formatted file can be used in the CloudFormation console and with the CloudFormation
	// APIs.
	ExportFormat *string `type:"string" enum:"AssetBundleExportFormat"`

	// The include dependencies flag.
	IncludeAllDependencies *bool `type:"boolean"`

	// The include permissions flag.
	IncludePermissions *bool `type:"boolean"`

	// The include tags flag.
	IncludeTags *bool `type:"boolean"`

	// Indicates the status of a job through its queuing and execution.
	//
	// Poll this DescribeAssetBundleExportApi until JobStatus is either SUCCESSFUL
	// or FAILED.
	JobStatus *string `type:"string" enum:"AssetBundleExportJobStatus"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// A list of resource ARNs that exported with the job.
	ResourceArns []*string `min:"1" type:"list"`

	// The HTTP status of the response.
	Status *int64 `location:"statusCode" type:"integer"`

	// The validation strategy that is used to export the analysis or dashboard.
	ValidationStrategy *AssetBundleExportJobValidationStrategy `type:"structure"`

	// An array of warning records that describe the analysis or dashboard that
	// is exported. This array includes UI errors that can be skipped during the
	// validation process.
	//
	// This property only appears if StrictModeForAllResources in ValidationStrategy
	// is set to FALSE.
	Warnings []*AssetBundleExportJobWarning `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 DescribeAssetBundleExportJobOutput) 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 DescribeAssetBundleExportJobOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DescribeAssetBundleExportJobOutput) SetArn(v string) *DescribeAssetBundleExportJobOutput {
	s.Arn = &v
	return s
}

// SetAssetBundleExportJobId sets the AssetBundleExportJobId field's value.
func (s *DescribeAssetBundleExportJobOutput) SetAssetBundleExportJobId(v string) *DescribeAssetBundleExportJobOutput {
	s.AssetBundleExportJobId = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeAssetBundleExportJobOutput) SetAwsAccountId(v string) *DescribeAssetBundleExportJobOutput {
	s.AwsAccountId = &v
	return s
}

// SetCloudFormationOverridePropertyConfiguration sets the CloudFormationOverridePropertyConfiguration field's value.
func (s *DescribeAssetBundleExportJobOutput) SetCloudFormationOverridePropertyConfiguration(v *AssetBundleCloudFormationOverridePropertyConfiguration) *DescribeAssetBundleExportJobOutput {
	s.CloudFormationOverridePropertyConfiguration = v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *DescribeAssetBundleExportJobOutput) SetCreatedTime(v time.Time) *DescribeAssetBundleExportJobOutput {
	s.CreatedTime = &v
	return s
}

// SetDownloadUrl sets the DownloadUrl field's value.
func (s *DescribeAssetBundleExportJobOutput) SetDownloadUrl(v string) *DescribeAssetBundleExportJobOutput {
	s.DownloadUrl = &v
	return s
}

// SetErrors sets the Errors field's value.
func (s *DescribeAssetBundleExportJobOutput) SetErrors(v []*AssetBundleExportJobError) *DescribeAssetBundleExportJobOutput {
	s.Errors = v
	return s
}

// SetExportFormat sets the ExportFormat field's value.
func (s *DescribeAssetBundleExportJobOutput) SetExportFormat(v string) *DescribeAssetBundleExportJobOutput {
	s.ExportFormat = &v
	return s
}

// SetIncludeAllDependencies sets the IncludeAllDependencies field's value.
func (s *DescribeAssetBundleExportJobOutput) SetIncludeAllDependencies(v bool) *DescribeAssetBundleExportJobOutput {
	s.IncludeAllDependencies = &v
	return s
}

// SetIncludePermissions sets the IncludePermissions field's value.
func (s *DescribeAssetBundleExportJobOutput) SetIncludePermissions(v bool) *DescribeAssetBundleExportJobOutput {
	s.IncludePermissions = &v
	return s
}

// SetIncludeTags sets the IncludeTags field's value.
func (s *DescribeAssetBundleExportJobOutput) SetIncludeTags(v bool) *DescribeAssetBundleExportJobOutput {
	s.IncludeTags = &v
	return s
}

// SetJobStatus sets the JobStatus field's value.
func (s *DescribeAssetBundleExportJobOutput) SetJobStatus(v string) *DescribeAssetBundleExportJobOutput {
	s.JobStatus = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeAssetBundleExportJobOutput) SetRequestId(v string) *DescribeAssetBundleExportJobOutput {
	s.RequestId = &v
	return s
}

// SetResourceArns sets the ResourceArns field's value.
func (s *DescribeAssetBundleExportJobOutput) SetResourceArns(v []*string) *DescribeAssetBundleExportJobOutput {
	s.ResourceArns = v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeAssetBundleExportJobOutput) SetStatus(v int64) *DescribeAssetBundleExportJobOutput {
	s.Status = &v
	return s
}

// SetValidationStrategy sets the ValidationStrategy field's value.
func (s *DescribeAssetBundleExportJobOutput) SetValidationStrategy(v *AssetBundleExportJobValidationStrategy) *DescribeAssetBundleExportJobOutput {
	s.ValidationStrategy = v
	return s
}

// SetWarnings sets the Warnings field's value.
func (s *DescribeAssetBundleExportJobOutput) SetWarnings(v []*AssetBundleExportJobWarning) *DescribeAssetBundleExportJobOutput {
	s.Warnings = v
	return s
}

type DescribeAssetBundleImportJobInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the job. The job ID is set when you start a new job with a StartAssetBundleImportJob
	// API call.
	//
	// AssetBundleImportJobId is a required field
	AssetBundleImportJobId *string `location:"uri" locationName:"AssetBundleImportJobId" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account the import job was executed in.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeAssetBundleImportJobInput) 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 DescribeAssetBundleImportJobInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeAssetBundleImportJobInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeAssetBundleImportJobInput"}
	if s.AssetBundleImportJobId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssetBundleImportJobId"))
	}
	if s.AssetBundleImportJobId != nil && len(*s.AssetBundleImportJobId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssetBundleImportJobId", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssetBundleImportJobId sets the AssetBundleImportJobId field's value.
func (s *DescribeAssetBundleImportJobInput) SetAssetBundleImportJobId(v string) *DescribeAssetBundleImportJobInput {
	s.AssetBundleImportJobId = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeAssetBundleImportJobInput) SetAwsAccountId(v string) *DescribeAssetBundleImportJobInput {
	s.AwsAccountId = &v
	return s
}

type DescribeAssetBundleImportJobOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the import job.
	Arn *string `type:"string"`

	// The ID of the job. The job ID is set when you start a new job with a StartAssetBundleImportJob
	// API call.
	AssetBundleImportJobId *string `min:"1" type:"string"`

	// The source of the asset bundle zip file that contains the data that is imported
	// by the job.
	AssetBundleImportSource *AssetBundleImportSourceDescription `type:"structure"`

	// The ID of the Amazon Web Services account the import job was executed in.
	AwsAccountId *string `min:"12" type:"string"`

	// The time that the import job was created.
	CreatedTime *time.Time `type:"timestamp"`

	// An array of error records that describes any failures that occurred during
	// the export job processing.
	//
	// Error records accumulate while the job is still running. The complete set
	// of error records is available after the job has completed and failed.
	Errors []*AssetBundleImportJobError `type:"list"`

	// The failure action for the import job.
	FailureAction *string `type:"string" enum:"AssetBundleImportFailureAction"`

	// Indicates the status of a job through its queuing and execution.
	//
	// Poll the DescribeAssetBundleImport API until JobStatus returns one of the
	// following values:
	//
	//    * SUCCESSFUL
	//
	//    * FAILED
	//
	//    * FAILED_ROLLBACK_COMPLETED
	//
	//    * FAILED_ROLLBACK_ERROR
	JobStatus *string `type:"string" enum:"AssetBundleImportJobStatus"`

	// Optional overrides that are applied to the resource configuration before
	// import.
	OverrideParameters *AssetBundleImportJobOverrideParameters `type:"structure"`

	// Optional permission overrides that are applied to the resource configuration
	// before import.
	OverridePermissions *AssetBundleImportJobOverridePermissions `type:"structure"`

	// Optional tag overrides that are applied to the resource configuration before
	// import.
	OverrideTags *AssetBundleImportJobOverrideTags `type:"structure"`

	// An optional validation strategy override for all analyses and dashboards
	// to be applied to the resource configuration before import.
	OverrideValidationStrategy *AssetBundleImportJobOverrideValidationStrategy `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// An array of error records that describes any failures that occurred while
	// an import job was attempting a rollback.
	//
	// Error records accumulate while the job is still running. The complete set
	// of error records is available after the job has completed and failed.
	RollbackErrors []*AssetBundleImportJobError `type:"list"`

	// The HTTP status of the response.
	Status *int64 `location:"statusCode" type:"integer"`

	// An array of warning records that describe all permitted errors that are encountered
	// during the import job.
	Warnings []*AssetBundleImportJobWarning `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 DescribeAssetBundleImportJobOutput) 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 DescribeAssetBundleImportJobOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DescribeAssetBundleImportJobOutput) SetArn(v string) *DescribeAssetBundleImportJobOutput {
	s.Arn = &v
	return s
}

// SetAssetBundleImportJobId sets the AssetBundleImportJobId field's value.
func (s *DescribeAssetBundleImportJobOutput) SetAssetBundleImportJobId(v string) *DescribeAssetBundleImportJobOutput {
	s.AssetBundleImportJobId = &v
	return s
}

// SetAssetBundleImportSource sets the AssetBundleImportSource field's value.
func (s *DescribeAssetBundleImportJobOutput) SetAssetBundleImportSource(v *AssetBundleImportSourceDescription) *DescribeAssetBundleImportJobOutput {
	s.AssetBundleImportSource = v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeAssetBundleImportJobOutput) SetAwsAccountId(v string) *DescribeAssetBundleImportJobOutput {
	s.AwsAccountId = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *DescribeAssetBundleImportJobOutput) SetCreatedTime(v time.Time) *DescribeAssetBundleImportJobOutput {
	s.CreatedTime = &v
	return s
}

// SetErrors sets the Errors field's value.
func (s *DescribeAssetBundleImportJobOutput) SetErrors(v []*AssetBundleImportJobError) *DescribeAssetBundleImportJobOutput {
	s.Errors = v
	return s
}

// SetFailureAction sets the FailureAction field's value.
func (s *DescribeAssetBundleImportJobOutput) SetFailureAction(v string) *DescribeAssetBundleImportJobOutput {
	s.FailureAction = &v
	return s
}

// SetJobStatus sets the JobStatus field's value.
func (s *DescribeAssetBundleImportJobOutput) SetJobStatus(v string) *DescribeAssetBundleImportJobOutput {
	s.JobStatus = &v
	return s
}

// SetOverrideParameters sets the OverrideParameters field's value.
func (s *DescribeAssetBundleImportJobOutput) SetOverrideParameters(v *AssetBundleImportJobOverrideParameters) *DescribeAssetBundleImportJobOutput {
	s.OverrideParameters = v
	return s
}

// SetOverridePermissions sets the OverridePermissions field's value.
func (s *DescribeAssetBundleImportJobOutput) SetOverridePermissions(v *AssetBundleImportJobOverridePermissions) *DescribeAssetBundleImportJobOutput {
	s.OverridePermissions = v
	return s
}

// SetOverrideTags sets the OverrideTags field's value.
func (s *DescribeAssetBundleImportJobOutput) SetOverrideTags(v *AssetBundleImportJobOverrideTags) *DescribeAssetBundleImportJobOutput {
	s.OverrideTags = v
	return s
}

// SetOverrideValidationStrategy sets the OverrideValidationStrategy field's value.
func (s *DescribeAssetBundleImportJobOutput) SetOverrideValidationStrategy(v *AssetBundleImportJobOverrideValidationStrategy) *DescribeAssetBundleImportJobOutput {
	s.OverrideValidationStrategy = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeAssetBundleImportJobOutput) SetRequestId(v string) *DescribeAssetBundleImportJobOutput {
	s.RequestId = &v
	return s
}

// SetRollbackErrors sets the RollbackErrors field's value.
func (s *DescribeAssetBundleImportJobOutput) SetRollbackErrors(v []*AssetBundleImportJobError) *DescribeAssetBundleImportJobOutput {
	s.RollbackErrors = v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeAssetBundleImportJobOutput) SetStatus(v int64) *DescribeAssetBundleImportJobOutput {
	s.Status = &v
	return s
}

// SetWarnings sets the Warnings field's value.
func (s *DescribeAssetBundleImportJobOutput) SetWarnings(v []*AssetBundleImportJobWarning) *DescribeAssetBundleImportJobOutput {
	s.Warnings = v
	return s
}

type DescribeDashboardDefinitionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The alias name.
	AliasName *string `location:"querystring" locationName:"alias-name" min:"1" type:"string"`

	// The ID of the Amazon Web Services account that contains the dashboard that
	// you're describing.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the dashboard.
	//
	// DashboardId is a required field
	DashboardId *string `location:"uri" locationName:"DashboardId" min:"1" type:"string" required:"true"`

	// The version number for the dashboard. If a version number isn't passed, the
	// latest published dashboard version is described.
	VersionNumber *int64 `location:"querystring" locationName:"version-number" min:"1" type:"long"`
}

// 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 DescribeDashboardDefinitionInput) 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 DescribeDashboardDefinitionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDashboardDefinitionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDashboardDefinitionInput"}
	if s.AliasName != nil && len(*s.AliasName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AliasName", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DashboardId == nil {
		invalidParams.Add(request.NewErrParamRequired("DashboardId"))
	}
	if s.DashboardId != nil && len(*s.DashboardId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DashboardId", 1))
	}
	if s.VersionNumber != nil && *s.VersionNumber < 1 {
		invalidParams.Add(request.NewErrParamMinValue("VersionNumber", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAliasName sets the AliasName field's value.
func (s *DescribeDashboardDefinitionInput) SetAliasName(v string) *DescribeDashboardDefinitionInput {
	s.AliasName = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeDashboardDefinitionInput) SetAwsAccountId(v string) *DescribeDashboardDefinitionInput {
	s.AwsAccountId = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *DescribeDashboardDefinitionInput) SetDashboardId(v string) *DescribeDashboardDefinitionInput {
	s.DashboardId = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *DescribeDashboardDefinitionInput) SetVersionNumber(v int64) *DescribeDashboardDefinitionInput {
	s.VersionNumber = &v
	return s
}

type DescribeDashboardDefinitionOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the dashboard described.
	DashboardId *string `min:"1" type:"string"`

	// Options for publishing the dashboard:
	//
	//    * AvailabilityStatus for AdHocFilteringOption - This status can be either
	//    ENABLED or DISABLED. When this is set to DISABLED, Amazon QuickSight disables
	//    the left filter pane on the published dashboard, which can be used for
	//    ad hoc (one-time) filtering. This option is ENABLED by default.
	//
	//    * AvailabilityStatus for ExportToCSVOption - This status can be either
	//    ENABLED or DISABLED. The visual option to export data to .CSV format isn't
	//    enabled when this is set to DISABLED. This option is ENABLED by default.
	//
	//    * VisibilityState for SheetControlsOption - This visibility state can
	//    be either COLLAPSED or EXPANDED. This option is COLLAPSED by default.
	DashboardPublishOptions *DashboardPublishOptions `type:"structure"`

	// The definition of a dashboard.
	//
	// A definition is the data model of all features in a Dashboard, Template,
	// or Analysis.
	Definition *DashboardVersionDefinition `type:"structure"`

	// Errors associated with this dashboard version.
	Errors []*DashboardError `min:"1" type:"list"`

	// The display name of the dashboard.
	Name *string `min:"1" type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// Status associated with the dashboard version.
	//
	//    * CREATION_IN_PROGRESS
	//
	//    * CREATION_SUCCESSFUL
	//
	//    * CREATION_FAILED
	//
	//    * UPDATE_IN_PROGRESS
	//
	//    * UPDATE_SUCCESSFUL
	//
	//    * UPDATE_FAILED
	//
	//    * DELETED
	ResourceStatus *string `type:"string" enum:"ResourceStatus"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The ARN of the theme of the dashboard.
	ThemeArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeDashboardDefinitionOutput) 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 DescribeDashboardDefinitionOutput) GoString() string {
	return s.String()
}

// SetDashboardId sets the DashboardId field's value.
func (s *DescribeDashboardDefinitionOutput) SetDashboardId(v string) *DescribeDashboardDefinitionOutput {
	s.DashboardId = &v
	return s
}

// SetDashboardPublishOptions sets the DashboardPublishOptions field's value.
func (s *DescribeDashboardDefinitionOutput) SetDashboardPublishOptions(v *DashboardPublishOptions) *DescribeDashboardDefinitionOutput {
	s.DashboardPublishOptions = v
	return s
}

// SetDefinition sets the Definition field's value.
func (s *DescribeDashboardDefinitionOutput) SetDefinition(v *DashboardVersionDefinition) *DescribeDashboardDefinitionOutput {
	s.Definition = v
	return s
}

// SetErrors sets the Errors field's value.
func (s *DescribeDashboardDefinitionOutput) SetErrors(v []*DashboardError) *DescribeDashboardDefinitionOutput {
	s.Errors = v
	return s
}

// SetName sets the Name field's value.
func (s *DescribeDashboardDefinitionOutput) SetName(v string) *DescribeDashboardDefinitionOutput {
	s.Name = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeDashboardDefinitionOutput) SetRequestId(v string) *DescribeDashboardDefinitionOutput {
	s.RequestId = &v
	return s
}

// SetResourceStatus sets the ResourceStatus field's value.
func (s *DescribeDashboardDefinitionOutput) SetResourceStatus(v string) *DescribeDashboardDefinitionOutput {
	s.ResourceStatus = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeDashboardDefinitionOutput) SetStatus(v int64) *DescribeDashboardDefinitionOutput {
	s.Status = &v
	return s
}

// SetThemeArn sets the ThemeArn field's value.
func (s *DescribeDashboardDefinitionOutput) SetThemeArn(v string) *DescribeDashboardDefinitionOutput {
	s.ThemeArn = &v
	return s
}

type DescribeDashboardInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The alias name.
	AliasName *string `location:"querystring" locationName:"alias-name" min:"1" type:"string"`

	// The ID of the Amazon Web Services account that contains the dashboard that
	// you're describing.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the dashboard.
	//
	// DashboardId is a required field
	DashboardId *string `location:"uri" locationName:"DashboardId" min:"1" type:"string" required:"true"`

	// The version number for the dashboard. If a version number isn't passed, the
	// latest published dashboard version is described.
	VersionNumber *int64 `location:"querystring" locationName:"version-number" min:"1" type:"long"`
}

// 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 DescribeDashboardInput) 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 DescribeDashboardInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDashboardInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDashboardInput"}
	if s.AliasName != nil && len(*s.AliasName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AliasName", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DashboardId == nil {
		invalidParams.Add(request.NewErrParamRequired("DashboardId"))
	}
	if s.DashboardId != nil && len(*s.DashboardId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DashboardId", 1))
	}
	if s.VersionNumber != nil && *s.VersionNumber < 1 {
		invalidParams.Add(request.NewErrParamMinValue("VersionNumber", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAliasName sets the AliasName field's value.
func (s *DescribeDashboardInput) SetAliasName(v string) *DescribeDashboardInput {
	s.AliasName = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeDashboardInput) SetAwsAccountId(v string) *DescribeDashboardInput {
	s.AwsAccountId = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *DescribeDashboardInput) SetDashboardId(v string) *DescribeDashboardInput {
	s.DashboardId = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *DescribeDashboardInput) SetVersionNumber(v int64) *DescribeDashboardInput {
	s.VersionNumber = &v
	return s
}

type DescribeDashboardOutput struct {
	_ struct{} `type:"structure"`

	// Information about the dashboard.
	Dashboard *Dashboard `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of this request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeDashboardOutput) 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 DescribeDashboardOutput) GoString() string {
	return s.String()
}

// SetDashboard sets the Dashboard field's value.
func (s *DescribeDashboardOutput) SetDashboard(v *Dashboard) *DescribeDashboardOutput {
	s.Dashboard = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeDashboardOutput) SetRequestId(v string) *DescribeDashboardOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeDashboardOutput) SetStatus(v int64) *DescribeDashboardOutput {
	s.Status = &v
	return s
}

type DescribeDashboardPermissionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the dashboard that
	// you're describing permissions for.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the dashboard, also added to the IAM policy.
	//
	// DashboardId is a required field
	DashboardId *string `location:"uri" locationName:"DashboardId" 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 DescribeDashboardPermissionsInput) 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 DescribeDashboardPermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDashboardPermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDashboardPermissionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DashboardId == nil {
		invalidParams.Add(request.NewErrParamRequired("DashboardId"))
	}
	if s.DashboardId != nil && len(*s.DashboardId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DashboardId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeDashboardPermissionsInput) SetAwsAccountId(v string) *DescribeDashboardPermissionsInput {
	s.AwsAccountId = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *DescribeDashboardPermissionsInput) SetDashboardId(v string) *DescribeDashboardPermissionsInput {
	s.DashboardId = &v
	return s
}

type DescribeDashboardPermissionsOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the dashboard.
	DashboardArn *string `type:"string"`

	// The ID for the dashboard.
	DashboardId *string `min:"1" type:"string"`

	// A structure that contains the configuration of a shareable link that grants
	// access to the dashboard. Your users can use the link to view and interact
	// with the dashboard, if the dashboard has been shared with them. For more
	// information about sharing dashboards, see Sharing Dashboards (https://docs.aws.amazon.com/quicksight/latest/user/sharing-a-dashboard.html).
	LinkSharingConfiguration *LinkSharingConfiguration `type:"structure"`

	// A structure that contains the permissions for the dashboard.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeDashboardPermissionsOutput) 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 DescribeDashboardPermissionsOutput) GoString() string {
	return s.String()
}

// SetDashboardArn sets the DashboardArn field's value.
func (s *DescribeDashboardPermissionsOutput) SetDashboardArn(v string) *DescribeDashboardPermissionsOutput {
	s.DashboardArn = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *DescribeDashboardPermissionsOutput) SetDashboardId(v string) *DescribeDashboardPermissionsOutput {
	s.DashboardId = &v
	return s
}

// SetLinkSharingConfiguration sets the LinkSharingConfiguration field's value.
func (s *DescribeDashboardPermissionsOutput) SetLinkSharingConfiguration(v *LinkSharingConfiguration) *DescribeDashboardPermissionsOutput {
	s.LinkSharingConfiguration = v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *DescribeDashboardPermissionsOutput) SetPermissions(v []*ResourcePermission) *DescribeDashboardPermissionsOutput {
	s.Permissions = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeDashboardPermissionsOutput) SetRequestId(v string) *DescribeDashboardPermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeDashboardPermissionsOutput) SetStatus(v int64) *DescribeDashboardPermissionsOutput {
	s.Status = &v
	return s
}

type DescribeDashboardSnapshotJobInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that the dashboard snapshot job
	// is executed in.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dashboard that you have started a snapshot job for.
	//
	// DashboardId is a required field
	DashboardId *string `location:"uri" locationName:"DashboardId" min:"1" type:"string" required:"true"`

	// The ID of the job to be described. The job ID is set when you start a new
	// job with a StartDashboardSnapshotJob API call.
	//
	// SnapshotJobId is a required field
	SnapshotJobId *string `location:"uri" locationName:"SnapshotJobId" 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 DescribeDashboardSnapshotJobInput) 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 DescribeDashboardSnapshotJobInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDashboardSnapshotJobInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDashboardSnapshotJobInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DashboardId == nil {
		invalidParams.Add(request.NewErrParamRequired("DashboardId"))
	}
	if s.DashboardId != nil && len(*s.DashboardId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DashboardId", 1))
	}
	if s.SnapshotJobId == nil {
		invalidParams.Add(request.NewErrParamRequired("SnapshotJobId"))
	}
	if s.SnapshotJobId != nil && len(*s.SnapshotJobId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SnapshotJobId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeDashboardSnapshotJobInput) SetAwsAccountId(v string) *DescribeDashboardSnapshotJobInput {
	s.AwsAccountId = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *DescribeDashboardSnapshotJobInput) SetDashboardId(v string) *DescribeDashboardSnapshotJobInput {
	s.DashboardId = &v
	return s
}

// SetSnapshotJobId sets the SnapshotJobId field's value.
func (s *DescribeDashboardSnapshotJobInput) SetSnapshotJobId(v string) *DescribeDashboardSnapshotJobInput {
	s.SnapshotJobId = &v
	return s
}

type DescribeDashboardSnapshotJobOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the snapshot job. The job ARN is generated
	// when you start a new job with a StartDashboardSnapshotJob API call.
	Arn *string `type:"string"`

	// The ID of the Amazon Web Services account that the dashboard snapshot job
	// is executed in.
	AwsAccountId *string `min:"12" type:"string"`

	// The time that the snapshot job was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The ID of the dashboard that you have started a snapshot job for.
	DashboardId *string `min:"1" type:"string"`

	// Indicates the status of a job. The status updates as the job executes. This
	// shows one of the following values.
	//
	//    * COMPLETED - The job was completed successfully.
	//
	//    * FAILED - The job failed to execute.
	//
	//    * QUEUED - The job is queued and hasn't started yet.
	//
	//    * RUNNING - The job is still running.
	JobStatus *string `type:"string" enum:"SnapshotJobStatus"`

	// The time that the snapshot job status was last updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The snapshot configuration of the job. This information is provided when
	// you make a StartDashboardSnapshotJob API call.
	SnapshotConfiguration *SnapshotConfiguration `type:"structure"`

	// The ID of the job to be described. The job ID is set when you start a new
	// job with a StartDashboardSnapshotJob API call.
	SnapshotJobId *string `min:"1" type:"string"`

	// The HTTP status of the request
	Status *int64 `type:"integer"`

	// The user configuration for the snapshot job. This information is provided
	// when you make a StartDashboardSnapshotJob API call.
	UserConfiguration *SnapshotUserConfigurationRedacted `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 DescribeDashboardSnapshotJobOutput) 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 DescribeDashboardSnapshotJobOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DescribeDashboardSnapshotJobOutput) SetArn(v string) *DescribeDashboardSnapshotJobOutput {
	s.Arn = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeDashboardSnapshotJobOutput) SetAwsAccountId(v string) *DescribeDashboardSnapshotJobOutput {
	s.AwsAccountId = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *DescribeDashboardSnapshotJobOutput) SetCreatedTime(v time.Time) *DescribeDashboardSnapshotJobOutput {
	s.CreatedTime = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *DescribeDashboardSnapshotJobOutput) SetDashboardId(v string) *DescribeDashboardSnapshotJobOutput {
	s.DashboardId = &v
	return s
}

// SetJobStatus sets the JobStatus field's value.
func (s *DescribeDashboardSnapshotJobOutput) SetJobStatus(v string) *DescribeDashboardSnapshotJobOutput {
	s.JobStatus = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *DescribeDashboardSnapshotJobOutput) SetLastUpdatedTime(v time.Time) *DescribeDashboardSnapshotJobOutput {
	s.LastUpdatedTime = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeDashboardSnapshotJobOutput) SetRequestId(v string) *DescribeDashboardSnapshotJobOutput {
	s.RequestId = &v
	return s
}

// SetSnapshotConfiguration sets the SnapshotConfiguration field's value.
func (s *DescribeDashboardSnapshotJobOutput) SetSnapshotConfiguration(v *SnapshotConfiguration) *DescribeDashboardSnapshotJobOutput {
	s.SnapshotConfiguration = v
	return s
}

// SetSnapshotJobId sets the SnapshotJobId field's value.
func (s *DescribeDashboardSnapshotJobOutput) SetSnapshotJobId(v string) *DescribeDashboardSnapshotJobOutput {
	s.SnapshotJobId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeDashboardSnapshotJobOutput) SetStatus(v int64) *DescribeDashboardSnapshotJobOutput {
	s.Status = &v
	return s
}

// SetUserConfiguration sets the UserConfiguration field's value.
func (s *DescribeDashboardSnapshotJobOutput) SetUserConfiguration(v *SnapshotUserConfigurationRedacted) *DescribeDashboardSnapshotJobOutput {
	s.UserConfiguration = v
	return s
}

type DescribeDashboardSnapshotJobResultInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that the dashboard snapshot job
	// is executed in.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dashboard that you have started a snapshot job for.
	//
	// DashboardId is a required field
	DashboardId *string `location:"uri" locationName:"DashboardId" min:"1" type:"string" required:"true"`

	// The ID of the job to be described. The job ID is set when you start a new
	// job with a StartDashboardSnapshotJob API call.
	//
	// SnapshotJobId is a required field
	SnapshotJobId *string `location:"uri" locationName:"SnapshotJobId" 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 DescribeDashboardSnapshotJobResultInput) 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 DescribeDashboardSnapshotJobResultInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDashboardSnapshotJobResultInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDashboardSnapshotJobResultInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DashboardId == nil {
		invalidParams.Add(request.NewErrParamRequired("DashboardId"))
	}
	if s.DashboardId != nil && len(*s.DashboardId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DashboardId", 1))
	}
	if s.SnapshotJobId == nil {
		invalidParams.Add(request.NewErrParamRequired("SnapshotJobId"))
	}
	if s.SnapshotJobId != nil && len(*s.SnapshotJobId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SnapshotJobId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeDashboardSnapshotJobResultInput) SetAwsAccountId(v string) *DescribeDashboardSnapshotJobResultInput {
	s.AwsAccountId = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *DescribeDashboardSnapshotJobResultInput) SetDashboardId(v string) *DescribeDashboardSnapshotJobResultInput {
	s.DashboardId = &v
	return s
}

// SetSnapshotJobId sets the SnapshotJobId field's value.
func (s *DescribeDashboardSnapshotJobResultInput) SetSnapshotJobId(v string) *DescribeDashboardSnapshotJobResultInput {
	s.SnapshotJobId = &v
	return s
}

type DescribeDashboardSnapshotJobResultOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the snapshot job. The job ARN is generated
	// when you start a new job with a StartDashboardSnapshotJob API call.
	Arn *string `type:"string"`

	// The time that a snapshot job was created.
	CreatedTime *time.Time `type:"timestamp"`

	// Displays information for the error that caused a job to fail.
	ErrorInfo *SnapshotJobErrorInfo `type:"structure"`

	// Indicates the status of a job after it has reached a terminal state. A finished
	// snapshot job will retuen a COMPLETED or FAILED status.
	JobStatus *string `type:"string" enum:"SnapshotJobStatus"`

	// The time that a snapshot job status was last updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The result of the snapshot job. Jobs that have successfully completed will
	// return the S3Uri where they are located. Jobs that have failedwill return
	// information on the error that caused the job to fail.
	Result *SnapshotJobResult `type:"structure"`

	// The HTTP status of the request
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeDashboardSnapshotJobResultOutput) 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 DescribeDashboardSnapshotJobResultOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DescribeDashboardSnapshotJobResultOutput) SetArn(v string) *DescribeDashboardSnapshotJobResultOutput {
	s.Arn = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *DescribeDashboardSnapshotJobResultOutput) SetCreatedTime(v time.Time) *DescribeDashboardSnapshotJobResultOutput {
	s.CreatedTime = &v
	return s
}

// SetErrorInfo sets the ErrorInfo field's value.
func (s *DescribeDashboardSnapshotJobResultOutput) SetErrorInfo(v *SnapshotJobErrorInfo) *DescribeDashboardSnapshotJobResultOutput {
	s.ErrorInfo = v
	return s
}

// SetJobStatus sets the JobStatus field's value.
func (s *DescribeDashboardSnapshotJobResultOutput) SetJobStatus(v string) *DescribeDashboardSnapshotJobResultOutput {
	s.JobStatus = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *DescribeDashboardSnapshotJobResultOutput) SetLastUpdatedTime(v time.Time) *DescribeDashboardSnapshotJobResultOutput {
	s.LastUpdatedTime = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeDashboardSnapshotJobResultOutput) SetRequestId(v string) *DescribeDashboardSnapshotJobResultOutput {
	s.RequestId = &v
	return s
}

// SetResult sets the Result field's value.
func (s *DescribeDashboardSnapshotJobResultOutput) SetResult(v *SnapshotJobResult) *DescribeDashboardSnapshotJobResultOutput {
	s.Result = v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeDashboardSnapshotJobResultOutput) SetStatus(v int64) *DescribeDashboardSnapshotJobResultOutput {
	s.Status = &v
	return s
}

type DescribeDataSetInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the dataset that you want to create. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" 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 DescribeDataSetInput) 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 DescribeDataSetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDataSetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDataSetInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeDataSetInput) SetAwsAccountId(v string) *DescribeDataSetInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *DescribeDataSetInput) SetDataSetId(v string) *DescribeDataSetInput {
	s.DataSetId = &v
	return s
}

type DescribeDataSetOutput struct {
	_ struct{} `type:"structure"`

	// Information on the dataset.
	DataSet *DataSet `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeDataSetOutput) 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 DescribeDataSetOutput) GoString() string {
	return s.String()
}

// SetDataSet sets the DataSet field's value.
func (s *DescribeDataSetOutput) SetDataSet(v *DataSet) *DescribeDataSetOutput {
	s.DataSet = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeDataSetOutput) SetRequestId(v string) *DescribeDataSetOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeDataSetOutput) SetStatus(v int64) *DescribeDataSetOutput {
	s.Status = &v
	return s
}

type DescribeDataSetPermissionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the dataset that you want to create. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" 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 DescribeDataSetPermissionsInput) 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 DescribeDataSetPermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDataSetPermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDataSetPermissionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeDataSetPermissionsInput) SetAwsAccountId(v string) *DescribeDataSetPermissionsInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *DescribeDataSetPermissionsInput) SetDataSetId(v string) *DescribeDataSetPermissionsInput {
	s.DataSetId = &v
	return s
}

type DescribeDataSetPermissionsOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the dataset.
	DataSetArn *string `type:"string"`

	// The ID for the dataset that you want to create. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	DataSetId *string `type:"string"`

	// A list of resource permissions on the dataset.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeDataSetPermissionsOutput) 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 DescribeDataSetPermissionsOutput) GoString() string {
	return s.String()
}

// SetDataSetArn sets the DataSetArn field's value.
func (s *DescribeDataSetPermissionsOutput) SetDataSetArn(v string) *DescribeDataSetPermissionsOutput {
	s.DataSetArn = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *DescribeDataSetPermissionsOutput) SetDataSetId(v string) *DescribeDataSetPermissionsOutput {
	s.DataSetId = &v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *DescribeDataSetPermissionsOutput) SetPermissions(v []*ResourcePermission) *DescribeDataSetPermissionsOutput {
	s.Permissions = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeDataSetPermissionsOutput) SetRequestId(v string) *DescribeDataSetPermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeDataSetPermissionsOutput) SetStatus(v int64) *DescribeDataSetPermissionsOutput {
	s.Status = &v
	return s
}

type DescribeDataSetRefreshPropertiesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dataset.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" 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 DescribeDataSetRefreshPropertiesInput) 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 DescribeDataSetRefreshPropertiesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDataSetRefreshPropertiesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDataSetRefreshPropertiesInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeDataSetRefreshPropertiesInput) SetAwsAccountId(v string) *DescribeDataSetRefreshPropertiesInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *DescribeDataSetRefreshPropertiesInput) SetDataSetId(v string) *DescribeDataSetRefreshPropertiesInput {
	s.DataSetId = &v
	return s
}

type DescribeDataSetRefreshPropertiesOutput struct {
	_ struct{} `type:"structure"`

	// The dataset refresh properties.
	DataSetRefreshProperties *DataSetRefreshProperties `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeDataSetRefreshPropertiesOutput) 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 DescribeDataSetRefreshPropertiesOutput) GoString() string {
	return s.String()
}

// SetDataSetRefreshProperties sets the DataSetRefreshProperties field's value.
func (s *DescribeDataSetRefreshPropertiesOutput) SetDataSetRefreshProperties(v *DataSetRefreshProperties) *DescribeDataSetRefreshPropertiesOutput {
	s.DataSetRefreshProperties = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeDataSetRefreshPropertiesOutput) SetRequestId(v string) *DescribeDataSetRefreshPropertiesOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeDataSetRefreshPropertiesOutput) SetStatus(v int64) *DescribeDataSetRefreshPropertiesOutput {
	s.Status = &v
	return s
}

type DescribeDataSourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the data source. This ID is unique per Amazon Web Services Region
	// for each Amazon Web Services account.
	//
	// DataSourceId is a required field
	DataSourceId *string `location:"uri" locationName:"DataSourceId" 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 DescribeDataSourceInput) 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 DescribeDataSourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDataSourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDataSourceInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSourceId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSourceId"))
	}
	if s.DataSourceId != nil && len(*s.DataSourceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSourceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeDataSourceInput) SetAwsAccountId(v string) *DescribeDataSourceInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *DescribeDataSourceInput) SetDataSourceId(v string) *DescribeDataSourceInput {
	s.DataSourceId = &v
	return s
}

type DescribeDataSourceOutput struct {
	_ struct{} `type:"structure"`

	// The information on the data source.
	DataSource *DataSource `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeDataSourceOutput) 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 DescribeDataSourceOutput) GoString() string {
	return s.String()
}

// SetDataSource sets the DataSource field's value.
func (s *DescribeDataSourceOutput) SetDataSource(v *DataSource) *DescribeDataSourceOutput {
	s.DataSource = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeDataSourceOutput) SetRequestId(v string) *DescribeDataSourceOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeDataSourceOutput) SetStatus(v int64) *DescribeDataSourceOutput {
	s.Status = &v
	return s
}

type DescribeDataSourcePermissionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the data source. This ID is unique per Amazon Web Services Region
	// for each Amazon Web Services account.
	//
	// DataSourceId is a required field
	DataSourceId *string `location:"uri" locationName:"DataSourceId" 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 DescribeDataSourcePermissionsInput) 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 DescribeDataSourcePermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeDataSourcePermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeDataSourcePermissionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSourceId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSourceId"))
	}
	if s.DataSourceId != nil && len(*s.DataSourceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSourceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeDataSourcePermissionsInput) SetAwsAccountId(v string) *DescribeDataSourcePermissionsInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *DescribeDataSourcePermissionsInput) SetDataSourceId(v string) *DescribeDataSourcePermissionsInput {
	s.DataSourceId = &v
	return s
}

type DescribeDataSourcePermissionsOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the data source.
	DataSourceArn *string `type:"string"`

	// The ID of the data source. This ID is unique per Amazon Web Services Region
	// for each Amazon Web Services account.
	DataSourceId *string `type:"string"`

	// A list of resource permissions on the data source.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeDataSourcePermissionsOutput) 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 DescribeDataSourcePermissionsOutput) GoString() string {
	return s.String()
}

// SetDataSourceArn sets the DataSourceArn field's value.
func (s *DescribeDataSourcePermissionsOutput) SetDataSourceArn(v string) *DescribeDataSourcePermissionsOutput {
	s.DataSourceArn = &v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *DescribeDataSourcePermissionsOutput) SetDataSourceId(v string) *DescribeDataSourcePermissionsOutput {
	s.DataSourceId = &v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *DescribeDataSourcePermissionsOutput) SetPermissions(v []*ResourcePermission) *DescribeDataSourcePermissionsOutput {
	s.Permissions = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeDataSourcePermissionsOutput) SetRequestId(v string) *DescribeDataSourcePermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeDataSourcePermissionsOutput) SetStatus(v int64) *DescribeDataSourcePermissionsOutput {
	s.Status = &v
	return s
}

type DescribeFolderInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that contains the folder.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the folder.
	//
	// FolderId is a required field
	FolderId *string `location:"uri" locationName:"FolderId" 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 DescribeFolderInput) 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 DescribeFolderInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeFolderInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeFolderInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.FolderId == nil {
		invalidParams.Add(request.NewErrParamRequired("FolderId"))
	}
	if s.FolderId != nil && len(*s.FolderId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FolderId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeFolderInput) SetAwsAccountId(v string) *DescribeFolderInput {
	s.AwsAccountId = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *DescribeFolderInput) SetFolderId(v string) *DescribeFolderInput {
	s.FolderId = &v
	return s
}

type DescribeFolderOutput struct {
	_ struct{} `type:"structure"`

	// Information about the folder.
	Folder *Folder `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeFolderOutput) 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 DescribeFolderOutput) GoString() string {
	return s.String()
}

// SetFolder sets the Folder field's value.
func (s *DescribeFolderOutput) SetFolder(v *Folder) *DescribeFolderOutput {
	s.Folder = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeFolderOutput) SetRequestId(v string) *DescribeFolderOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeFolderOutput) SetStatus(v int64) *DescribeFolderOutput {
	s.Status = &v
	return s
}

type DescribeFolderPermissionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that contains the folder.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the folder.
	//
	// FolderId is a required field
	FolderId *string `location:"uri" locationName:"FolderId" min:"1" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The namespace of the folder whose permissions you want described.
	Namespace *string `location:"querystring" locationName:"namespace" type:"string"`

	// A pagination token for the next set of results.
	NextToken *string `location:"querystring" locationName:"next-token" 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 DescribeFolderPermissionsInput) 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 DescribeFolderPermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeFolderPermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeFolderPermissionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.FolderId == nil {
		invalidParams.Add(request.NewErrParamRequired("FolderId"))
	}
	if s.FolderId != nil && len(*s.FolderId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FolderId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeFolderPermissionsInput) SetAwsAccountId(v string) *DescribeFolderPermissionsInput {
	s.AwsAccountId = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *DescribeFolderPermissionsInput) SetFolderId(v string) *DescribeFolderPermissionsInput {
	s.FolderId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeFolderPermissionsInput) SetMaxResults(v int64) *DescribeFolderPermissionsInput {
	s.MaxResults = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DescribeFolderPermissionsInput) SetNamespace(v string) *DescribeFolderPermissionsInput {
	s.Namespace = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeFolderPermissionsInput) SetNextToken(v string) *DescribeFolderPermissionsInput {
	s.NextToken = &v
	return s
}

type DescribeFolderPermissionsOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the folder.
	Arn *string `type:"string"`

	// The ID of the folder.
	FolderId *string `min:"1" type:"string"`

	// The pagination token for the next set of results, or null if there are no
	// more results.
	NextToken *string `type:"string"`

	// Information about the permissions on the folder.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeFolderPermissionsOutput) 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 DescribeFolderPermissionsOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DescribeFolderPermissionsOutput) SetArn(v string) *DescribeFolderPermissionsOutput {
	s.Arn = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *DescribeFolderPermissionsOutput) SetFolderId(v string) *DescribeFolderPermissionsOutput {
	s.FolderId = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeFolderPermissionsOutput) SetNextToken(v string) *DescribeFolderPermissionsOutput {
	s.NextToken = &v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *DescribeFolderPermissionsOutput) SetPermissions(v []*ResourcePermission) *DescribeFolderPermissionsOutput {
	s.Permissions = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeFolderPermissionsOutput) SetRequestId(v string) *DescribeFolderPermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeFolderPermissionsOutput) SetStatus(v int64) *DescribeFolderPermissionsOutput {
	s.Status = &v
	return s
}

type DescribeFolderResolvedPermissionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that contains the folder.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the folder.
	//
	// FolderId is a required field
	FolderId *string `location:"uri" locationName:"FolderId" min:"1" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The namespace of the folder whose permissions you want described.
	Namespace *string `location:"querystring" locationName:"namespace" type:"string"`

	// A pagination token for the next set of results.
	NextToken *string `location:"querystring" locationName:"next-token" 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 DescribeFolderResolvedPermissionsInput) 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 DescribeFolderResolvedPermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeFolderResolvedPermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeFolderResolvedPermissionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.FolderId == nil {
		invalidParams.Add(request.NewErrParamRequired("FolderId"))
	}
	if s.FolderId != nil && len(*s.FolderId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FolderId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeFolderResolvedPermissionsInput) SetAwsAccountId(v string) *DescribeFolderResolvedPermissionsInput {
	s.AwsAccountId = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *DescribeFolderResolvedPermissionsInput) SetFolderId(v string) *DescribeFolderResolvedPermissionsInput {
	s.FolderId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *DescribeFolderResolvedPermissionsInput) SetMaxResults(v int64) *DescribeFolderResolvedPermissionsInput {
	s.MaxResults = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DescribeFolderResolvedPermissionsInput) SetNamespace(v string) *DescribeFolderResolvedPermissionsInput {
	s.Namespace = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeFolderResolvedPermissionsInput) SetNextToken(v string) *DescribeFolderResolvedPermissionsInput {
	s.NextToken = &v
	return s
}

type DescribeFolderResolvedPermissionsOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the folder.
	Arn *string `type:"string"`

	// The ID of the folder.
	FolderId *string `min:"1" type:"string"`

	// A pagination token for the next set of results, or null if there are no more
	// results.
	NextToken *string `type:"string"`

	// Information about the permissions for the folder.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeFolderResolvedPermissionsOutput) 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 DescribeFolderResolvedPermissionsOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DescribeFolderResolvedPermissionsOutput) SetArn(v string) *DescribeFolderResolvedPermissionsOutput {
	s.Arn = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *DescribeFolderResolvedPermissionsOutput) SetFolderId(v string) *DescribeFolderResolvedPermissionsOutput {
	s.FolderId = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *DescribeFolderResolvedPermissionsOutput) SetNextToken(v string) *DescribeFolderResolvedPermissionsOutput {
	s.NextToken = &v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *DescribeFolderResolvedPermissionsOutput) SetPermissions(v []*ResourcePermission) *DescribeFolderResolvedPermissionsOutput {
	s.Permissions = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeFolderResolvedPermissionsOutput) SetRequestId(v string) *DescribeFolderResolvedPermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeFolderResolvedPermissionsOutput) SetStatus(v int64) *DescribeFolderResolvedPermissionsOutput {
	s.Status = &v
	return s
}

type DescribeGroupInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that the group is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The name of the group that you want to describe.
	//
	// GroupName is a required field
	GroupName *string `location:"uri" locationName:"GroupName" min:"1" type:"string" required:"true"`

	// The namespace of the group that you want described.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" 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 DescribeGroupInput) 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 DescribeGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeGroupInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.GroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("GroupName"))
	}
	if s.GroupName != nil && len(*s.GroupName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeGroupInput) SetAwsAccountId(v string) *DescribeGroupInput {
	s.AwsAccountId = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *DescribeGroupInput) SetGroupName(v string) *DescribeGroupInput {
	s.GroupName = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DescribeGroupInput) SetNamespace(v string) *DescribeGroupInput {
	s.Namespace = &v
	return s
}

type DescribeGroupMembershipInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that the group is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The name of the group that you want to search.
	//
	// GroupName is a required field
	GroupName *string `location:"uri" locationName:"GroupName" min:"1" type:"string" required:"true"`

	// The user name of the user that you want to search for.
	//
	// MemberName is a required field
	MemberName *string `location:"uri" locationName:"MemberName" min:"1" type:"string" required:"true"`

	// The namespace that includes the group you are searching within.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" 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 DescribeGroupMembershipInput) 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 DescribeGroupMembershipInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeGroupMembershipInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeGroupMembershipInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.GroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("GroupName"))
	}
	if s.GroupName != nil && len(*s.GroupName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
	}
	if s.MemberName == nil {
		invalidParams.Add(request.NewErrParamRequired("MemberName"))
	}
	if s.MemberName != nil && len(*s.MemberName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("MemberName", 1))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeGroupMembershipInput) SetAwsAccountId(v string) *DescribeGroupMembershipInput {
	s.AwsAccountId = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *DescribeGroupMembershipInput) SetGroupName(v string) *DescribeGroupMembershipInput {
	s.GroupName = &v
	return s
}

// SetMemberName sets the MemberName field's value.
func (s *DescribeGroupMembershipInput) SetMemberName(v string) *DescribeGroupMembershipInput {
	s.MemberName = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DescribeGroupMembershipInput) SetNamespace(v string) *DescribeGroupMembershipInput {
	s.Namespace = &v
	return s
}

type DescribeGroupMembershipOutput struct {
	_ struct{} `type:"structure"`

	// A member of an Amazon QuickSight group. Currently, group members must be
	// users. Groups can't be members of another group. .
	GroupMember *GroupMember `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeGroupMembershipOutput) 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 DescribeGroupMembershipOutput) GoString() string {
	return s.String()
}

// SetGroupMember sets the GroupMember field's value.
func (s *DescribeGroupMembershipOutput) SetGroupMember(v *GroupMember) *DescribeGroupMembershipOutput {
	s.GroupMember = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeGroupMembershipOutput) SetRequestId(v string) *DescribeGroupMembershipOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeGroupMembershipOutput) SetStatus(v int64) *DescribeGroupMembershipOutput {
	s.Status = &v
	return s
}

type DescribeGroupOutput struct {
	_ struct{} `type:"structure"`

	// The name of the group.
	Group *Group `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeGroupOutput) 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 DescribeGroupOutput) GoString() string {
	return s.String()
}

// SetGroup sets the Group field's value.
func (s *DescribeGroupOutput) SetGroup(v *Group) *DescribeGroupOutput {
	s.Group = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeGroupOutput) SetRequestId(v string) *DescribeGroupOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeGroupOutput) SetStatus(v int64) *DescribeGroupOutput {
	s.Status = &v
	return s
}

type DescribeIAMPolicyAssignmentInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The name of the assignment, also called a rule.
	//
	// AssignmentName is a required field
	AssignmentName *string `location:"uri" locationName:"AssignmentName" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account that contains the assignment that
	// you want to describe.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The namespace that contains the assignment.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" 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 DescribeIAMPolicyAssignmentInput) 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 DescribeIAMPolicyAssignmentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeIAMPolicyAssignmentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeIAMPolicyAssignmentInput"}
	if s.AssignmentName == nil {
		invalidParams.Add(request.NewErrParamRequired("AssignmentName"))
	}
	if s.AssignmentName != nil && len(*s.AssignmentName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssignmentName", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssignmentName sets the AssignmentName field's value.
func (s *DescribeIAMPolicyAssignmentInput) SetAssignmentName(v string) *DescribeIAMPolicyAssignmentInput {
	s.AssignmentName = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeIAMPolicyAssignmentInput) SetAwsAccountId(v string) *DescribeIAMPolicyAssignmentInput {
	s.AwsAccountId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DescribeIAMPolicyAssignmentInput) SetNamespace(v string) *DescribeIAMPolicyAssignmentInput {
	s.Namespace = &v
	return s
}

type DescribeIAMPolicyAssignmentOutput struct {
	_ struct{} `type:"structure"`

	// Information describing the IAM policy assignment.
	IAMPolicyAssignment *IAMPolicyAssignment `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeIAMPolicyAssignmentOutput) 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 DescribeIAMPolicyAssignmentOutput) GoString() string {
	return s.String()
}

// SetIAMPolicyAssignment sets the IAMPolicyAssignment field's value.
func (s *DescribeIAMPolicyAssignmentOutput) SetIAMPolicyAssignment(v *IAMPolicyAssignment) *DescribeIAMPolicyAssignmentOutput {
	s.IAMPolicyAssignment = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeIAMPolicyAssignmentOutput) SetRequestId(v string) *DescribeIAMPolicyAssignmentOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeIAMPolicyAssignmentOutput) SetStatus(v int64) *DescribeIAMPolicyAssignmentOutput {
	s.Status = &v
	return s
}

type DescribeIngestionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dataset used in the ingestion.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" type:"string" required:"true"`

	// An ID for the ingestion.
	//
	// IngestionId is a required field
	IngestionId *string `location:"uri" locationName:"IngestionId" 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 DescribeIngestionInput) 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 DescribeIngestionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeIngestionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeIngestionInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}
	if s.IngestionId == nil {
		invalidParams.Add(request.NewErrParamRequired("IngestionId"))
	}
	if s.IngestionId != nil && len(*s.IngestionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("IngestionId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeIngestionInput) SetAwsAccountId(v string) *DescribeIngestionInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *DescribeIngestionInput) SetDataSetId(v string) *DescribeIngestionInput {
	s.DataSetId = &v
	return s
}

// SetIngestionId sets the IngestionId field's value.
func (s *DescribeIngestionInput) SetIngestionId(v string) *DescribeIngestionInput {
	s.IngestionId = &v
	return s
}

type DescribeIngestionOutput struct {
	_ struct{} `type:"structure"`

	// Information about the ingestion.
	Ingestion *Ingestion `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeIngestionOutput) 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 DescribeIngestionOutput) GoString() string {
	return s.String()
}

// SetIngestion sets the Ingestion field's value.
func (s *DescribeIngestionOutput) SetIngestion(v *Ingestion) *DescribeIngestionOutput {
	s.Ingestion = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeIngestionOutput) SetRequestId(v string) *DescribeIngestionOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeIngestionOutput) SetStatus(v int64) *DescribeIngestionOutput {
	s.Status = &v
	return s
}

type DescribeIpRestrictionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the IP rules.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeIpRestrictionInput) 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 DescribeIpRestrictionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeIpRestrictionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeIpRestrictionInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeIpRestrictionInput) SetAwsAccountId(v string) *DescribeIpRestrictionInput {
	s.AwsAccountId = &v
	return s
}

type DescribeIpRestrictionOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the IP rules.
	AwsAccountId *string `min:"12" type:"string"`

	// A value that specifies whether IP rules are turned on.
	Enabled *bool `type:"boolean"`

	// A map that describes the IP rules with CIDR range and description.
	IpRestrictionRuleMap map[string]*string `type:"map"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// A map of allowed VPC endpoint IDs and their rule descriptions.
	VpcEndpointIdRestrictionRuleMap map[string]*string `type:"map"`

	// A map of allowed VPC IDs and their rule descriptions.
	VpcIdRestrictionRuleMap map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeIpRestrictionOutput) 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 DescribeIpRestrictionOutput) GoString() string {
	return s.String()
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeIpRestrictionOutput) SetAwsAccountId(v string) *DescribeIpRestrictionOutput {
	s.AwsAccountId = &v
	return s
}

// SetEnabled sets the Enabled field's value.
func (s *DescribeIpRestrictionOutput) SetEnabled(v bool) *DescribeIpRestrictionOutput {
	s.Enabled = &v
	return s
}

// SetIpRestrictionRuleMap sets the IpRestrictionRuleMap field's value.
func (s *DescribeIpRestrictionOutput) SetIpRestrictionRuleMap(v map[string]*string) *DescribeIpRestrictionOutput {
	s.IpRestrictionRuleMap = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeIpRestrictionOutput) SetRequestId(v string) *DescribeIpRestrictionOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeIpRestrictionOutput) SetStatus(v int64) *DescribeIpRestrictionOutput {
	s.Status = &v
	return s
}

// SetVpcEndpointIdRestrictionRuleMap sets the VpcEndpointIdRestrictionRuleMap field's value.
func (s *DescribeIpRestrictionOutput) SetVpcEndpointIdRestrictionRuleMap(v map[string]*string) *DescribeIpRestrictionOutput {
	s.VpcEndpointIdRestrictionRuleMap = v
	return s
}

// SetVpcIdRestrictionRuleMap sets the VpcIdRestrictionRuleMap field's value.
func (s *DescribeIpRestrictionOutput) SetVpcIdRestrictionRuleMap(v map[string]*string) *DescribeIpRestrictionOutput {
	s.VpcIdRestrictionRuleMap = v
	return s
}

type DescribeKeyRegistrationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the customer managed
	// key registration that you want to describe.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// Determines whether the request returns the default key only.
	DefaultKeyOnly *bool `location:"querystring" locationName:"default-key-only" type:"boolean"`
}

// 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 DescribeKeyRegistrationInput) 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 DescribeKeyRegistrationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeKeyRegistrationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeKeyRegistrationInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeKeyRegistrationInput) SetAwsAccountId(v string) *DescribeKeyRegistrationInput {
	s.AwsAccountId = &v
	return s
}

// SetDefaultKeyOnly sets the DefaultKeyOnly field's value.
func (s *DescribeKeyRegistrationInput) SetDefaultKeyOnly(v bool) *DescribeKeyRegistrationInput {
	s.DefaultKeyOnly = &v
	return s
}

type DescribeKeyRegistrationOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the customer managed
	// key registration specified in the request.
	AwsAccountId *string `min:"12" type:"string"`

	// A list of RegisteredCustomerManagedKey objects in a Amazon QuickSight account.
	KeyRegistration []*RegisteredCustomerManagedKey `type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `type:"integer"`
}

// 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 DescribeKeyRegistrationOutput) 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 DescribeKeyRegistrationOutput) GoString() string {
	return s.String()
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeKeyRegistrationOutput) SetAwsAccountId(v string) *DescribeKeyRegistrationOutput {
	s.AwsAccountId = &v
	return s
}

// SetKeyRegistration sets the KeyRegistration field's value.
func (s *DescribeKeyRegistrationOutput) SetKeyRegistration(v []*RegisteredCustomerManagedKey) *DescribeKeyRegistrationOutput {
	s.KeyRegistration = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeKeyRegistrationOutput) SetRequestId(v string) *DescribeKeyRegistrationOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeKeyRegistrationOutput) SetStatus(v int64) *DescribeKeyRegistrationOutput {
	s.Status = &v
	return s
}

type DescribeNamespaceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that contains the Amazon QuickSight
	// namespace that you want to describe.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The namespace that you want to describe.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" 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 DescribeNamespaceInput) 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 DescribeNamespaceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeNamespaceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeNamespaceInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeNamespaceInput) SetAwsAccountId(v string) *DescribeNamespaceInput {
	s.AwsAccountId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DescribeNamespaceInput) SetNamespace(v string) *DescribeNamespaceInput {
	s.Namespace = &v
	return s
}

type DescribeNamespaceOutput struct {
	_ struct{} `type:"structure"`

	// The information about the namespace that you're describing. The response
	// includes the namespace ARN, name, Amazon Web Services Region, creation status,
	// and identity store. DescribeNamespace also works for namespaces that are
	// in the process of being created. For incomplete namespaces, this API operation
	// lists the namespace error types and messages associated with the creation
	// process.
	Namespace *NamespaceInfoV2 `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeNamespaceOutput) 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 DescribeNamespaceOutput) GoString() string {
	return s.String()
}

// SetNamespace sets the Namespace field's value.
func (s *DescribeNamespaceOutput) SetNamespace(v *NamespaceInfoV2) *DescribeNamespaceOutput {
	s.Namespace = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeNamespaceOutput) SetRequestId(v string) *DescribeNamespaceOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeNamespaceOutput) SetStatus(v int64) *DescribeNamespaceOutput {
	s.Status = &v
	return s
}

type DescribeRefreshScheduleInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dataset.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" type:"string" required:"true"`

	// The ID of the refresh schedule.
	//
	// ScheduleId is a required field
	ScheduleId *string `location:"uri" locationName:"ScheduleId" 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 DescribeRefreshScheduleInput) 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 DescribeRefreshScheduleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeRefreshScheduleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeRefreshScheduleInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}
	if s.ScheduleId == nil {
		invalidParams.Add(request.NewErrParamRequired("ScheduleId"))
	}
	if s.ScheduleId != nil && len(*s.ScheduleId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ScheduleId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeRefreshScheduleInput) SetAwsAccountId(v string) *DescribeRefreshScheduleInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *DescribeRefreshScheduleInput) SetDataSetId(v string) *DescribeRefreshScheduleInput {
	s.DataSetId = &v
	return s
}

// SetScheduleId sets the ScheduleId field's value.
func (s *DescribeRefreshScheduleInput) SetScheduleId(v string) *DescribeRefreshScheduleInput {
	s.ScheduleId = &v
	return s
}

type DescribeRefreshScheduleOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the refresh schedule.
	Arn *string `type:"string"`

	// The refresh schedule.
	RefreshSchedule *RefreshSchedule `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeRefreshScheduleOutput) 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 DescribeRefreshScheduleOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DescribeRefreshScheduleOutput) SetArn(v string) *DescribeRefreshScheduleOutput {
	s.Arn = &v
	return s
}

// SetRefreshSchedule sets the RefreshSchedule field's value.
func (s *DescribeRefreshScheduleOutput) SetRefreshSchedule(v *RefreshSchedule) *DescribeRefreshScheduleOutput {
	s.RefreshSchedule = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeRefreshScheduleOutput) SetRequestId(v string) *DescribeRefreshScheduleOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeRefreshScheduleOutput) SetStatus(v int64) *DescribeRefreshScheduleOutput {
	s.Status = &v
	return s
}

type DescribeRoleCustomPermissionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that you want to create a group
	// in. The Amazon Web Services account ID that you provide must be the same
	// Amazon Web Services account that contains your Amazon QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The namespace that contains the role.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// The name of the role whose permissions you want described.
	//
	// Role is a required field
	Role *string `location:"uri" locationName:"Role" type:"string" required:"true" enum:"Role"`
}

// 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 DescribeRoleCustomPermissionInput) 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 DescribeRoleCustomPermissionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeRoleCustomPermissionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeRoleCustomPermissionInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}
	if s.Role == nil {
		invalidParams.Add(request.NewErrParamRequired("Role"))
	}
	if s.Role != nil && len(*s.Role) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Role", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeRoleCustomPermissionInput) SetAwsAccountId(v string) *DescribeRoleCustomPermissionInput {
	s.AwsAccountId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DescribeRoleCustomPermissionInput) SetNamespace(v string) *DescribeRoleCustomPermissionInput {
	s.Namespace = &v
	return s
}

// SetRole sets the Role field's value.
func (s *DescribeRoleCustomPermissionInput) SetRole(v string) *DescribeRoleCustomPermissionInput {
	s.Role = &v
	return s
}

type DescribeRoleCustomPermissionOutput struct {
	_ struct{} `type:"structure"`

	// The name of the custom permission that is described.
	CustomPermissionsName *string `min:"1" type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `type:"integer"`
}

// 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 DescribeRoleCustomPermissionOutput) 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 DescribeRoleCustomPermissionOutput) GoString() string {
	return s.String()
}

// SetCustomPermissionsName sets the CustomPermissionsName field's value.
func (s *DescribeRoleCustomPermissionOutput) SetCustomPermissionsName(v string) *DescribeRoleCustomPermissionOutput {
	s.CustomPermissionsName = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeRoleCustomPermissionOutput) SetRequestId(v string) *DescribeRoleCustomPermissionOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeRoleCustomPermissionOutput) SetStatus(v int64) *DescribeRoleCustomPermissionOutput {
	s.Status = &v
	return s
}

type DescribeTemplateAliasInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The name of the template alias that you want to describe. If you name a specific
	// alias, you describe the version that the alias points to. You can specify
	// the latest version of the template by providing the keyword $LATEST in the
	// AliasName parameter. The keyword $PUBLISHED doesn't apply to templates.
	//
	// AliasName is a required field
	AliasName *string `location:"uri" locationName:"AliasName" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account that contains the template alias
	// that you're describing.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the template.
	//
	// TemplateId is a required field
	TemplateId *string `location:"uri" locationName:"TemplateId" 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 DescribeTemplateAliasInput) 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 DescribeTemplateAliasInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeTemplateAliasInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeTemplateAliasInput"}
	if s.AliasName == nil {
		invalidParams.Add(request.NewErrParamRequired("AliasName"))
	}
	if s.AliasName != nil && len(*s.AliasName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AliasName", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.TemplateId == nil {
		invalidParams.Add(request.NewErrParamRequired("TemplateId"))
	}
	if s.TemplateId != nil && len(*s.TemplateId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TemplateId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAliasName sets the AliasName field's value.
func (s *DescribeTemplateAliasInput) SetAliasName(v string) *DescribeTemplateAliasInput {
	s.AliasName = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeTemplateAliasInput) SetAwsAccountId(v string) *DescribeTemplateAliasInput {
	s.AwsAccountId = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *DescribeTemplateAliasInput) SetTemplateId(v string) *DescribeTemplateAliasInput {
	s.TemplateId = &v
	return s
}

type DescribeTemplateAliasOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// Information about the template alias.
	TemplateAlias *TemplateAlias `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 DescribeTemplateAliasOutput) 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 DescribeTemplateAliasOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeTemplateAliasOutput) SetRequestId(v string) *DescribeTemplateAliasOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeTemplateAliasOutput) SetStatus(v int64) *DescribeTemplateAliasOutput {
	s.Status = &v
	return s
}

// SetTemplateAlias sets the TemplateAlias field's value.
func (s *DescribeTemplateAliasOutput) SetTemplateAlias(v *TemplateAlias) *DescribeTemplateAliasOutput {
	s.TemplateAlias = v
	return s
}

type DescribeTemplateDefinitionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The alias of the template that you want to describe. If you name a specific
	// alias, you describe the version that the alias points to. You can specify
	// the latest version of the template by providing the keyword $LATEST in the
	// AliasName parameter. The keyword $PUBLISHED doesn't apply to templates.
	AliasName *string `location:"querystring" locationName:"alias-name" min:"1" type:"string"`

	// The ID of the Amazon Web Services account that contains the template. You
	// must be using the Amazon Web Services account that the template is in.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the template that you're describing.
	//
	// TemplateId is a required field
	TemplateId *string `location:"uri" locationName:"TemplateId" min:"1" type:"string" required:"true"`

	// The version number of the template.
	VersionNumber *int64 `location:"querystring" locationName:"version-number" min:"1" type:"long"`
}

// 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 DescribeTemplateDefinitionInput) 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 DescribeTemplateDefinitionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeTemplateDefinitionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeTemplateDefinitionInput"}
	if s.AliasName != nil && len(*s.AliasName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AliasName", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.TemplateId == nil {
		invalidParams.Add(request.NewErrParamRequired("TemplateId"))
	}
	if s.TemplateId != nil && len(*s.TemplateId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TemplateId", 1))
	}
	if s.VersionNumber != nil && *s.VersionNumber < 1 {
		invalidParams.Add(request.NewErrParamMinValue("VersionNumber", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAliasName sets the AliasName field's value.
func (s *DescribeTemplateDefinitionInput) SetAliasName(v string) *DescribeTemplateDefinitionInput {
	s.AliasName = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeTemplateDefinitionInput) SetAwsAccountId(v string) *DescribeTemplateDefinitionInput {
	s.AwsAccountId = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *DescribeTemplateDefinitionInput) SetTemplateId(v string) *DescribeTemplateDefinitionInput {
	s.TemplateId = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *DescribeTemplateDefinitionInput) SetVersionNumber(v int64) *DescribeTemplateDefinitionInput {
	s.VersionNumber = &v
	return s
}

type DescribeTemplateDefinitionOutput struct {
	_ struct{} `type:"structure"`

	// The definition of the template.
	//
	// A definition is the data model of all features in a Dashboard, Template,
	// or Analysis.
	Definition *TemplateVersionDefinition `type:"structure"`

	// Errors associated with the template version.
	Errors []*TemplateError `min:"1" type:"list"`

	// The descriptive name of the template.
	Name *string `min:"1" type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// Status associated with the template.
	//
	//    * CREATION_IN_PROGRESS
	//
	//    * CREATION_SUCCESSFUL
	//
	//    * CREATION_FAILED
	//
	//    * UPDATE_IN_PROGRESS
	//
	//    * UPDATE_SUCCESSFUL
	//
	//    * UPDATE_FAILED
	//
	//    * DELETED
	ResourceStatus *string `type:"string" enum:"ResourceStatus"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The ID of the template described.
	TemplateId *string `min:"1" type:"string"`

	// The ARN of the theme of the template.
	ThemeArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeTemplateDefinitionOutput) 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 DescribeTemplateDefinitionOutput) GoString() string {
	return s.String()
}

// SetDefinition sets the Definition field's value.
func (s *DescribeTemplateDefinitionOutput) SetDefinition(v *TemplateVersionDefinition) *DescribeTemplateDefinitionOutput {
	s.Definition = v
	return s
}

// SetErrors sets the Errors field's value.
func (s *DescribeTemplateDefinitionOutput) SetErrors(v []*TemplateError) *DescribeTemplateDefinitionOutput {
	s.Errors = v
	return s
}

// SetName sets the Name field's value.
func (s *DescribeTemplateDefinitionOutput) SetName(v string) *DescribeTemplateDefinitionOutput {
	s.Name = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeTemplateDefinitionOutput) SetRequestId(v string) *DescribeTemplateDefinitionOutput {
	s.RequestId = &v
	return s
}

// SetResourceStatus sets the ResourceStatus field's value.
func (s *DescribeTemplateDefinitionOutput) SetResourceStatus(v string) *DescribeTemplateDefinitionOutput {
	s.ResourceStatus = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeTemplateDefinitionOutput) SetStatus(v int64) *DescribeTemplateDefinitionOutput {
	s.Status = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *DescribeTemplateDefinitionOutput) SetTemplateId(v string) *DescribeTemplateDefinitionOutput {
	s.TemplateId = &v
	return s
}

// SetThemeArn sets the ThemeArn field's value.
func (s *DescribeTemplateDefinitionOutput) SetThemeArn(v string) *DescribeTemplateDefinitionOutput {
	s.ThemeArn = &v
	return s
}

type DescribeTemplateInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The alias of the template that you want to describe. If you name a specific
	// alias, you describe the version that the alias points to. You can specify
	// the latest version of the template by providing the keyword $LATEST in the
	// AliasName parameter. The keyword $PUBLISHED doesn't apply to templates.
	AliasName *string `location:"querystring" locationName:"alias-name" min:"1" type:"string"`

	// The ID of the Amazon Web Services account that contains the template that
	// you're describing.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the template.
	//
	// TemplateId is a required field
	TemplateId *string `location:"uri" locationName:"TemplateId" min:"1" type:"string" required:"true"`

	// (Optional) The number for the version to describe. If a VersionNumber parameter
	// value isn't provided, the latest version of the template is described.
	VersionNumber *int64 `location:"querystring" locationName:"version-number" min:"1" type:"long"`
}

// 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 DescribeTemplateInput) 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 DescribeTemplateInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeTemplateInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeTemplateInput"}
	if s.AliasName != nil && len(*s.AliasName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AliasName", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.TemplateId == nil {
		invalidParams.Add(request.NewErrParamRequired("TemplateId"))
	}
	if s.TemplateId != nil && len(*s.TemplateId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TemplateId", 1))
	}
	if s.VersionNumber != nil && *s.VersionNumber < 1 {
		invalidParams.Add(request.NewErrParamMinValue("VersionNumber", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAliasName sets the AliasName field's value.
func (s *DescribeTemplateInput) SetAliasName(v string) *DescribeTemplateInput {
	s.AliasName = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeTemplateInput) SetAwsAccountId(v string) *DescribeTemplateInput {
	s.AwsAccountId = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *DescribeTemplateInput) SetTemplateId(v string) *DescribeTemplateInput {
	s.TemplateId = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *DescribeTemplateInput) SetVersionNumber(v int64) *DescribeTemplateInput {
	s.VersionNumber = &v
	return s
}

type DescribeTemplateOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The template structure for the object you want to describe.
	Template *Template `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 DescribeTemplateOutput) 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 DescribeTemplateOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeTemplateOutput) SetRequestId(v string) *DescribeTemplateOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeTemplateOutput) SetStatus(v int64) *DescribeTemplateOutput {
	s.Status = &v
	return s
}

// SetTemplate sets the Template field's value.
func (s *DescribeTemplateOutput) SetTemplate(v *Template) *DescribeTemplateOutput {
	s.Template = v
	return s
}

type DescribeTemplatePermissionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the template that
	// you're describing.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the template.
	//
	// TemplateId is a required field
	TemplateId *string `location:"uri" locationName:"TemplateId" 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 DescribeTemplatePermissionsInput) 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 DescribeTemplatePermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeTemplatePermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeTemplatePermissionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.TemplateId == nil {
		invalidParams.Add(request.NewErrParamRequired("TemplateId"))
	}
	if s.TemplateId != nil && len(*s.TemplateId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TemplateId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeTemplatePermissionsInput) SetAwsAccountId(v string) *DescribeTemplatePermissionsInput {
	s.AwsAccountId = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *DescribeTemplatePermissionsInput) SetTemplateId(v string) *DescribeTemplatePermissionsInput {
	s.TemplateId = &v
	return s
}

type DescribeTemplatePermissionsOutput struct {
	_ struct{} `type:"structure"`

	// A list of resource permissions to be set on the template.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The Amazon Resource Name (ARN) of the template.
	TemplateArn *string `type:"string"`

	// The ID for the template.
	TemplateId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeTemplatePermissionsOutput) 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 DescribeTemplatePermissionsOutput) GoString() string {
	return s.String()
}

// SetPermissions sets the Permissions field's value.
func (s *DescribeTemplatePermissionsOutput) SetPermissions(v []*ResourcePermission) *DescribeTemplatePermissionsOutput {
	s.Permissions = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeTemplatePermissionsOutput) SetRequestId(v string) *DescribeTemplatePermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeTemplatePermissionsOutput) SetStatus(v int64) *DescribeTemplatePermissionsOutput {
	s.Status = &v
	return s
}

// SetTemplateArn sets the TemplateArn field's value.
func (s *DescribeTemplatePermissionsOutput) SetTemplateArn(v string) *DescribeTemplatePermissionsOutput {
	s.TemplateArn = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *DescribeTemplatePermissionsOutput) SetTemplateId(v string) *DescribeTemplatePermissionsOutput {
	s.TemplateId = &v
	return s
}

type DescribeThemeAliasInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The name of the theme alias that you want to describe.
	//
	// AliasName is a required field
	AliasName *string `location:"uri" locationName:"AliasName" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account that contains the theme alias that
	// you're describing.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the theme.
	//
	// ThemeId is a required field
	ThemeId *string `location:"uri" locationName:"ThemeId" 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 DescribeThemeAliasInput) 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 DescribeThemeAliasInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeThemeAliasInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeThemeAliasInput"}
	if s.AliasName == nil {
		invalidParams.Add(request.NewErrParamRequired("AliasName"))
	}
	if s.AliasName != nil && len(*s.AliasName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AliasName", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.ThemeId == nil {
		invalidParams.Add(request.NewErrParamRequired("ThemeId"))
	}
	if s.ThemeId != nil && len(*s.ThemeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ThemeId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAliasName sets the AliasName field's value.
func (s *DescribeThemeAliasInput) SetAliasName(v string) *DescribeThemeAliasInput {
	s.AliasName = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeThemeAliasInput) SetAwsAccountId(v string) *DescribeThemeAliasInput {
	s.AwsAccountId = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *DescribeThemeAliasInput) SetThemeId(v string) *DescribeThemeAliasInput {
	s.ThemeId = &v
	return s
}

type DescribeThemeAliasOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// Information about the theme alias.
	ThemeAlias *ThemeAlias `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 DescribeThemeAliasOutput) 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 DescribeThemeAliasOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeThemeAliasOutput) SetRequestId(v string) *DescribeThemeAliasOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeThemeAliasOutput) SetStatus(v int64) *DescribeThemeAliasOutput {
	s.Status = &v
	return s
}

// SetThemeAlias sets the ThemeAlias field's value.
func (s *DescribeThemeAliasOutput) SetThemeAlias(v *ThemeAlias) *DescribeThemeAliasOutput {
	s.ThemeAlias = v
	return s
}

type DescribeThemeInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The alias of the theme that you want to describe. If you name a specific
	// alias, you describe the version that the alias points to. You can specify
	// the latest version of the theme by providing the keyword $LATEST in the AliasName
	// parameter. The keyword $PUBLISHED doesn't apply to themes.
	AliasName *string `location:"querystring" locationName:"alias-name" min:"1" type:"string"`

	// The ID of the Amazon Web Services account that contains the theme that you're
	// describing.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" type:"string" required:"true"`

	// The ID for the theme.
	//
	// ThemeId is a required field
	ThemeId *string `location:"uri" locationName:"ThemeId" min:"1" type:"string" required:"true"`

	// The version number for the version to describe. If a VersionNumber parameter
	// value isn't provided, the latest version of the theme is described.
	VersionNumber *int64 `location:"querystring" locationName:"version-number" min:"1" type:"long"`
}

// 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 DescribeThemeInput) 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 DescribeThemeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeThemeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeThemeInput"}
	if s.AliasName != nil && len(*s.AliasName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AliasName", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 1))
	}
	if s.ThemeId == nil {
		invalidParams.Add(request.NewErrParamRequired("ThemeId"))
	}
	if s.ThemeId != nil && len(*s.ThemeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ThemeId", 1))
	}
	if s.VersionNumber != nil && *s.VersionNumber < 1 {
		invalidParams.Add(request.NewErrParamMinValue("VersionNumber", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAliasName sets the AliasName field's value.
func (s *DescribeThemeInput) SetAliasName(v string) *DescribeThemeInput {
	s.AliasName = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeThemeInput) SetAwsAccountId(v string) *DescribeThemeInput {
	s.AwsAccountId = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *DescribeThemeInput) SetThemeId(v string) *DescribeThemeInput {
	s.ThemeId = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *DescribeThemeInput) SetVersionNumber(v int64) *DescribeThemeInput {
	s.VersionNumber = &v
	return s
}

type DescribeThemeOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The information about the theme that you are describing.
	Theme *Theme `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 DescribeThemeOutput) 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 DescribeThemeOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeThemeOutput) SetRequestId(v string) *DescribeThemeOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeThemeOutput) SetStatus(v int64) *DescribeThemeOutput {
	s.Status = &v
	return s
}

// SetTheme sets the Theme field's value.
func (s *DescribeThemeOutput) SetTheme(v *Theme) *DescribeThemeOutput {
	s.Theme = v
	return s
}

type DescribeThemePermissionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the theme that you're
	// describing.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the theme that you want to describe permissions for.
	//
	// ThemeId is a required field
	ThemeId *string `location:"uri" locationName:"ThemeId" 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 DescribeThemePermissionsInput) 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 DescribeThemePermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeThemePermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeThemePermissionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.ThemeId == nil {
		invalidParams.Add(request.NewErrParamRequired("ThemeId"))
	}
	if s.ThemeId != nil && len(*s.ThemeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ThemeId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeThemePermissionsInput) SetAwsAccountId(v string) *DescribeThemePermissionsInput {
	s.AwsAccountId = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *DescribeThemePermissionsInput) SetThemeId(v string) *DescribeThemePermissionsInput {
	s.ThemeId = &v
	return s
}

type DescribeThemePermissionsOutput struct {
	_ struct{} `type:"structure"`

	// A list of resource permissions set on the theme.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The Amazon Resource Name (ARN) of the theme.
	ThemeArn *string `type:"string"`

	// The ID for the theme.
	ThemeId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeThemePermissionsOutput) 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 DescribeThemePermissionsOutput) GoString() string {
	return s.String()
}

// SetPermissions sets the Permissions field's value.
func (s *DescribeThemePermissionsOutput) SetPermissions(v []*ResourcePermission) *DescribeThemePermissionsOutput {
	s.Permissions = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeThemePermissionsOutput) SetRequestId(v string) *DescribeThemePermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeThemePermissionsOutput) SetStatus(v int64) *DescribeThemePermissionsOutput {
	s.Status = &v
	return s
}

// SetThemeArn sets the ThemeArn field's value.
func (s *DescribeThemePermissionsOutput) SetThemeArn(v string) *DescribeThemePermissionsOutput {
	s.ThemeArn = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *DescribeThemePermissionsOutput) SetThemeId(v string) *DescribeThemePermissionsOutput {
	s.ThemeId = &v
	return s
}

type DescribeTopicInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the topic that you want to describe. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	//
	// TopicId is a required field
	TopicId *string `location:"uri" locationName:"TopicId" 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 DescribeTopicInput) 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 DescribeTopicInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeTopicInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeTopicInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.TopicId == nil {
		invalidParams.Add(request.NewErrParamRequired("TopicId"))
	}
	if s.TopicId != nil && len(*s.TopicId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TopicId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeTopicInput) SetAwsAccountId(v string) *DescribeTopicInput {
	s.AwsAccountId = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *DescribeTopicInput) SetTopicId(v string) *DescribeTopicInput {
	s.TopicId = &v
	return s
}

type DescribeTopicOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the topic.
	Arn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The definition of a topic.
	Topic *TopicDetails `type:"structure"`

	// The ID of the topic that you want to describe. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	TopicId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeTopicOutput) 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 DescribeTopicOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *DescribeTopicOutput) SetArn(v string) *DescribeTopicOutput {
	s.Arn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeTopicOutput) SetRequestId(v string) *DescribeTopicOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeTopicOutput) SetStatus(v int64) *DescribeTopicOutput {
	s.Status = &v
	return s
}

// SetTopic sets the Topic field's value.
func (s *DescribeTopicOutput) SetTopic(v *TopicDetails) *DescribeTopicOutput {
	s.Topic = v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *DescribeTopicOutput) SetTopicId(v string) *DescribeTopicOutput {
	s.TopicId = &v
	return s
}

type DescribeTopicPermissionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the topic that you
	// want described.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the topic that you want to describe. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	//
	// TopicId is a required field
	TopicId *string `location:"uri" locationName:"TopicId" 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 DescribeTopicPermissionsInput) 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 DescribeTopicPermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeTopicPermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeTopicPermissionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.TopicId == nil {
		invalidParams.Add(request.NewErrParamRequired("TopicId"))
	}
	if s.TopicId != nil && len(*s.TopicId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TopicId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeTopicPermissionsInput) SetAwsAccountId(v string) *DescribeTopicPermissionsInput {
	s.AwsAccountId = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *DescribeTopicPermissionsInput) SetTopicId(v string) *DescribeTopicPermissionsInput {
	s.TopicId = &v
	return s
}

type DescribeTopicPermissionsOutput struct {
	_ struct{} `type:"structure"`

	// A list of resource permissions that are configured to the topic.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The Amazon Resource Name (ARN) of the topic.
	TopicArn *string `type:"string"`

	// The ID of the topic that you want to describe. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	TopicId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeTopicPermissionsOutput) 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 DescribeTopicPermissionsOutput) GoString() string {
	return s.String()
}

// SetPermissions sets the Permissions field's value.
func (s *DescribeTopicPermissionsOutput) SetPermissions(v []*ResourcePermission) *DescribeTopicPermissionsOutput {
	s.Permissions = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeTopicPermissionsOutput) SetRequestId(v string) *DescribeTopicPermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeTopicPermissionsOutput) SetStatus(v int64) *DescribeTopicPermissionsOutput {
	s.Status = &v
	return s
}

// SetTopicArn sets the TopicArn field's value.
func (s *DescribeTopicPermissionsOutput) SetTopicArn(v string) *DescribeTopicPermissionsOutput {
	s.TopicArn = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *DescribeTopicPermissionsOutput) SetTopicId(v string) *DescribeTopicPermissionsOutput {
	s.TopicId = &v
	return s
}

type DescribeTopicRefreshInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the topic whose refresh
	// you want to describe.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the refresh, which is performed when the topic is created or updated.
	//
	// RefreshId is a required field
	RefreshId *string `location:"uri" locationName:"RefreshId" type:"string" required:"true"`

	// The ID of the topic that you want to describe. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	//
	// TopicId is a required field
	TopicId *string `location:"uri" locationName:"TopicId" 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 DescribeTopicRefreshInput) 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 DescribeTopicRefreshInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeTopicRefreshInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeTopicRefreshInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.RefreshId == nil {
		invalidParams.Add(request.NewErrParamRequired("RefreshId"))
	}
	if s.RefreshId != nil && len(*s.RefreshId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RefreshId", 1))
	}
	if s.TopicId == nil {
		invalidParams.Add(request.NewErrParamRequired("TopicId"))
	}
	if s.TopicId != nil && len(*s.TopicId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TopicId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeTopicRefreshInput) SetAwsAccountId(v string) *DescribeTopicRefreshInput {
	s.AwsAccountId = &v
	return s
}

// SetRefreshId sets the RefreshId field's value.
func (s *DescribeTopicRefreshInput) SetRefreshId(v string) *DescribeTopicRefreshInput {
	s.RefreshId = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *DescribeTopicRefreshInput) SetTopicId(v string) *DescribeTopicRefreshInput {
	s.TopicId = &v
	return s
}

type DescribeTopicRefreshOutput struct {
	_ struct{} `type:"structure"`

	// Details of the refresh, which is performed when the topic is created or updated.
	RefreshDetails *TopicRefreshDetails `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 DescribeTopicRefreshOutput) 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 DescribeTopicRefreshOutput) GoString() string {
	return s.String()
}

// SetRefreshDetails sets the RefreshDetails field's value.
func (s *DescribeTopicRefreshOutput) SetRefreshDetails(v *TopicRefreshDetails) *DescribeTopicRefreshOutput {
	s.RefreshDetails = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeTopicRefreshOutput) SetRequestId(v string) *DescribeTopicRefreshOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeTopicRefreshOutput) SetStatus(v int64) *DescribeTopicRefreshOutput {
	s.Status = &v
	return s
}

type DescribeTopicRefreshScheduleInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dataset.
	//
	// DatasetId is a required field
	DatasetId *string `location:"uri" locationName:"DatasetId" type:"string" required:"true"`

	// The ID of the topic that contains the refresh schedule that you want to describe.
	// This ID is unique per Amazon Web Services Region for each Amazon Web Services
	// account.
	//
	// TopicId is a required field
	TopicId *string `location:"uri" locationName:"TopicId" 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 DescribeTopicRefreshScheduleInput) 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 DescribeTopicRefreshScheduleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeTopicRefreshScheduleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeTopicRefreshScheduleInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DatasetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DatasetId"))
	}
	if s.DatasetId != nil && len(*s.DatasetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatasetId", 1))
	}
	if s.TopicId == nil {
		invalidParams.Add(request.NewErrParamRequired("TopicId"))
	}
	if s.TopicId != nil && len(*s.TopicId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TopicId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeTopicRefreshScheduleInput) SetAwsAccountId(v string) *DescribeTopicRefreshScheduleInput {
	s.AwsAccountId = &v
	return s
}

// SetDatasetId sets the DatasetId field's value.
func (s *DescribeTopicRefreshScheduleInput) SetDatasetId(v string) *DescribeTopicRefreshScheduleInput {
	s.DatasetId = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *DescribeTopicRefreshScheduleInput) SetTopicId(v string) *DescribeTopicRefreshScheduleInput {
	s.TopicId = &v
	return s
}

type DescribeTopicRefreshScheduleOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the dataset.
	DatasetArn *string `type:"string"`

	// The definition of a refresh schedule.
	RefreshSchedule *TopicRefreshSchedule `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The Amazon Resource Name (ARN) of the topic.
	TopicArn *string `type:"string"`

	// The ID of the topic that contains the refresh schedule that you want to describe.
	// This ID is unique per Amazon Web Services Region for each Amazon Web Services
	// account.
	TopicId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DescribeTopicRefreshScheduleOutput) 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 DescribeTopicRefreshScheduleOutput) GoString() string {
	return s.String()
}

// SetDatasetArn sets the DatasetArn field's value.
func (s *DescribeTopicRefreshScheduleOutput) SetDatasetArn(v string) *DescribeTopicRefreshScheduleOutput {
	s.DatasetArn = &v
	return s
}

// SetRefreshSchedule sets the RefreshSchedule field's value.
func (s *DescribeTopicRefreshScheduleOutput) SetRefreshSchedule(v *TopicRefreshSchedule) *DescribeTopicRefreshScheduleOutput {
	s.RefreshSchedule = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeTopicRefreshScheduleOutput) SetRequestId(v string) *DescribeTopicRefreshScheduleOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeTopicRefreshScheduleOutput) SetStatus(v int64) *DescribeTopicRefreshScheduleOutput {
	s.Status = &v
	return s
}

// SetTopicArn sets the TopicArn field's value.
func (s *DescribeTopicRefreshScheduleOutput) SetTopicArn(v string) *DescribeTopicRefreshScheduleOutput {
	s.TopicArn = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *DescribeTopicRefreshScheduleOutput) SetTopicId(v string) *DescribeTopicRefreshScheduleOutput {
	s.TopicId = &v
	return s
}

type DescribeUserInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that the user is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The namespace. Currently, you should set this to default.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// The name of the user that you want to describe.
	//
	// UserName is a required field
	UserName *string `location:"uri" locationName:"UserName" 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 DescribeUserInput) 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 DescribeUserInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeUserInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeUserInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}
	if s.UserName == nil {
		invalidParams.Add(request.NewErrParamRequired("UserName"))
	}
	if s.UserName != nil && len(*s.UserName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeUserInput) SetAwsAccountId(v string) *DescribeUserInput {
	s.AwsAccountId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *DescribeUserInput) SetNamespace(v string) *DescribeUserInput {
	s.Namespace = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *DescribeUserInput) SetUserName(v string) *DescribeUserInput {
	s.UserName = &v
	return s
}

type DescribeUserOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The user name.
	User *User `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 DescribeUserOutput) 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 DescribeUserOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeUserOutput) SetRequestId(v string) *DescribeUserOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeUserOutput) SetStatus(v int64) *DescribeUserOutput {
	s.Status = &v
	return s
}

// SetUser sets the User field's value.
func (s *DescribeUserOutput) SetUser(v *User) *DescribeUserOutput {
	s.User = v
	return s
}

type DescribeVPCConnectionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID of the account that contains the VPC connection
	// that you want described.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the VPC connection that you're creating. This ID is a unique identifier
	// for each Amazon Web Services Region in an Amazon Web Services account.
	//
	// VPCConnectionId is a required field
	VPCConnectionId *string `location:"uri" locationName:"VPCConnectionId" 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 DescribeVPCConnectionInput) 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 DescribeVPCConnectionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DescribeVPCConnectionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DescribeVPCConnectionInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.VPCConnectionId == nil {
		invalidParams.Add(request.NewErrParamRequired("VPCConnectionId"))
	}
	if s.VPCConnectionId != nil && len(*s.VPCConnectionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VPCConnectionId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *DescribeVPCConnectionInput) SetAwsAccountId(v string) *DescribeVPCConnectionInput {
	s.AwsAccountId = &v
	return s
}

// SetVPCConnectionId sets the VPCConnectionId field's value.
func (s *DescribeVPCConnectionInput) SetVPCConnectionId(v string) *DescribeVPCConnectionInput {
	s.VPCConnectionId = &v
	return s
}

type DescribeVPCConnectionOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `type:"integer"`

	// A response object that provides information for the specified VPC connection.
	VPCConnection *VPCConnection `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 DescribeVPCConnectionOutput) 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 DescribeVPCConnectionOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *DescribeVPCConnectionOutput) SetRequestId(v string) *DescribeVPCConnectionOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DescribeVPCConnectionOutput) SetStatus(v int64) *DescribeVPCConnectionOutput {
	s.Status = &v
	return s
}

// SetVPCConnection sets the VPCConnection field's value.
func (s *DescribeVPCConnectionOutput) SetVPCConnection(v *VPCConnection) *DescribeVPCConnectionOutput {
	s.VPCConnection = v
	return s
}

// The configuration of destination parameter values.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type DestinationParameterValueConfiguration struct {
	_ struct{} `type:"structure"`

	// The configuration of custom values for destination parameter in DestinationParameterValueConfiguration.
	CustomValuesConfiguration *CustomValuesConfiguration `type:"structure"`

	// The configuration that selects all options.
	SelectAllValueOptions *string `type:"string" enum:"SelectAllValueOptions"`

	// A column of a data set.
	SourceColumn *ColumnIdentifier `type:"structure"`

	// The source field ID of the destination parameter.
	SourceField *string `min:"1" type:"string"`

	// The source parameter name of the destination parameter.
	SourceParameterName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DestinationParameterValueConfiguration) 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 DestinationParameterValueConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DestinationParameterValueConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DestinationParameterValueConfiguration"}
	if s.SourceField != nil && len(*s.SourceField) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceField", 1))
	}
	if s.CustomValuesConfiguration != nil {
		if err := s.CustomValuesConfiguration.Validate(); err != nil {
			invalidParams.AddNested("CustomValuesConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.SourceColumn != nil {
		if err := s.SourceColumn.Validate(); err != nil {
			invalidParams.AddNested("SourceColumn", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCustomValuesConfiguration sets the CustomValuesConfiguration field's value.
func (s *DestinationParameterValueConfiguration) SetCustomValuesConfiguration(v *CustomValuesConfiguration) *DestinationParameterValueConfiguration {
	s.CustomValuesConfiguration = v
	return s
}

// SetSelectAllValueOptions sets the SelectAllValueOptions field's value.
func (s *DestinationParameterValueConfiguration) SetSelectAllValueOptions(v string) *DestinationParameterValueConfiguration {
	s.SelectAllValueOptions = &v
	return s
}

// SetSourceColumn sets the SourceColumn field's value.
func (s *DestinationParameterValueConfiguration) SetSourceColumn(v *ColumnIdentifier) *DestinationParameterValueConfiguration {
	s.SourceColumn = v
	return s
}

// SetSourceField sets the SourceField field's value.
func (s *DestinationParameterValueConfiguration) SetSourceField(v string) *DestinationParameterValueConfiguration {
	s.SourceField = &v
	return s
}

// SetSourceParameterName sets the SourceParameterName field's value.
func (s *DestinationParameterValueConfiguration) SetSourceParameterName(v string) *DestinationParameterValueConfiguration {
	s.SourceParameterName = &v
	return s
}

// The dimension type field.
type DimensionField struct {
	_ struct{} `type:"structure"`

	// The dimension type field with categorical type columns.
	CategoricalDimensionField *CategoricalDimensionField `type:"structure"`

	// The dimension type field with date type columns.
	DateDimensionField *DateDimensionField `type:"structure"`

	// The dimension type field with numerical type columns.
	NumericalDimensionField *NumericalDimensionField `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 DimensionField) 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 DimensionField) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DimensionField) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DimensionField"}
	if s.CategoricalDimensionField != nil {
		if err := s.CategoricalDimensionField.Validate(); err != nil {
			invalidParams.AddNested("CategoricalDimensionField", err.(request.ErrInvalidParams))
		}
	}
	if s.DateDimensionField != nil {
		if err := s.DateDimensionField.Validate(); err != nil {
			invalidParams.AddNested("DateDimensionField", err.(request.ErrInvalidParams))
		}
	}
	if s.NumericalDimensionField != nil {
		if err := s.NumericalDimensionField.Validate(); err != nil {
			invalidParams.AddNested("NumericalDimensionField", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategoricalDimensionField sets the CategoricalDimensionField field's value.
func (s *DimensionField) SetCategoricalDimensionField(v *CategoricalDimensionField) *DimensionField {
	s.CategoricalDimensionField = v
	return s
}

// SetDateDimensionField sets the DateDimensionField field's value.
func (s *DimensionField) SetDateDimensionField(v *DateDimensionField) *DimensionField {
	s.DateDimensionField = v
	return s
}

// SetNumericalDimensionField sets the NumericalDimensionField field's value.
func (s *DimensionField) SetNumericalDimensionField(v *NumericalDimensionField) *DimensionField {
	s.NumericalDimensionField = v
	return s
}

// A structure that represents additional options for display formatting.
type DisplayFormatOptions struct {
	_ struct{} `type:"structure"`

	// Determines the blank cell format.
	BlankCellFormat *string `type:"string"`

	// The currency symbol, such as USD.
	CurrencySymbol *string `type:"string"`

	// Determines the DateTime format.
	DateFormat *string `type:"string"`

	// Determines the decimal separator.
	DecimalSeparator *string `type:"string" enum:"TopicNumericSeparatorSymbol"`

	// Determines the number of fraction digits.
	FractionDigits *int64 `type:"integer"`

	// Determines the grouping separator.
	GroupingSeparator *string `type:"string"`

	// The negative format.
	NegativeFormat *NegativeFormat `type:"structure"`

	// The prefix value for a display format.
	Prefix *string `type:"string"`

	// The suffix value for a display format.
	Suffix *string `type:"string"`

	// The unit scaler. Valid values for this structure are: NONE, AUTO, THOUSANDS,
	// MILLIONS, BILLIONS, and TRILLIONS.
	UnitScaler *string `type:"string" enum:"NumberScale"`

	// A Boolean value that indicates whether to use blank cell format.
	UseBlankCellFormat *bool `type:"boolean"`

	// A Boolean value that indicates whether to use grouping.
	UseGrouping *bool `type:"boolean"`
}

// 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 DisplayFormatOptions) 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 DisplayFormatOptions) GoString() string {
	return s.String()
}

// SetBlankCellFormat sets the BlankCellFormat field's value.
func (s *DisplayFormatOptions) SetBlankCellFormat(v string) *DisplayFormatOptions {
	s.BlankCellFormat = &v
	return s
}

// SetCurrencySymbol sets the CurrencySymbol field's value.
func (s *DisplayFormatOptions) SetCurrencySymbol(v string) *DisplayFormatOptions {
	s.CurrencySymbol = &v
	return s
}

// SetDateFormat sets the DateFormat field's value.
func (s *DisplayFormatOptions) SetDateFormat(v string) *DisplayFormatOptions {
	s.DateFormat = &v
	return s
}

// SetDecimalSeparator sets the DecimalSeparator field's value.
func (s *DisplayFormatOptions) SetDecimalSeparator(v string) *DisplayFormatOptions {
	s.DecimalSeparator = &v
	return s
}

// SetFractionDigits sets the FractionDigits field's value.
func (s *DisplayFormatOptions) SetFractionDigits(v int64) *DisplayFormatOptions {
	s.FractionDigits = &v
	return s
}

// SetGroupingSeparator sets the GroupingSeparator field's value.
func (s *DisplayFormatOptions) SetGroupingSeparator(v string) *DisplayFormatOptions {
	s.GroupingSeparator = &v
	return s
}

// SetNegativeFormat sets the NegativeFormat field's value.
func (s *DisplayFormatOptions) SetNegativeFormat(v *NegativeFormat) *DisplayFormatOptions {
	s.NegativeFormat = v
	return s
}

// SetPrefix sets the Prefix field's value.
func (s *DisplayFormatOptions) SetPrefix(v string) *DisplayFormatOptions {
	s.Prefix = &v
	return s
}

// SetSuffix sets the Suffix field's value.
func (s *DisplayFormatOptions) SetSuffix(v string) *DisplayFormatOptions {
	s.Suffix = &v
	return s
}

// SetUnitScaler sets the UnitScaler field's value.
func (s *DisplayFormatOptions) SetUnitScaler(v string) *DisplayFormatOptions {
	s.UnitScaler = &v
	return s
}

// SetUseBlankCellFormat sets the UseBlankCellFormat field's value.
func (s *DisplayFormatOptions) SetUseBlankCellFormat(v bool) *DisplayFormatOptions {
	s.UseBlankCellFormat = &v
	return s
}

// SetUseGrouping sets the UseGrouping field's value.
func (s *DisplayFormatOptions) SetUseGrouping(v bool) *DisplayFormatOptions {
	s.UseGrouping = &v
	return s
}

// The domain specified isn't on the allow list. All domains for embedded dashboards
// must be added to the approved list by an Amazon QuickSight admin.
type DomainNotWhitelistedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DomainNotWhitelistedException) 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 DomainNotWhitelistedException) GoString() string {
	return s.String()
}

func newErrorDomainNotWhitelistedException(v protocol.ResponseMetadata) error {
	return &DomainNotWhitelistedException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *DomainNotWhitelistedException) Code() string {
	return "DomainNotWhitelistedException"
}

// Message returns the exception's message.
func (s *DomainNotWhitelistedException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *DomainNotWhitelistedException) OrigErr() error {
	return nil
}

func (s *DomainNotWhitelistedException) 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 *DomainNotWhitelistedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *DomainNotWhitelistedException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The label options of the label that is displayed in the center of a donut
// chart. This option isn't available for pie charts.
type DonutCenterOptions struct {
	_ struct{} `type:"structure"`

	// Determines the visibility of the label in a donut chart. In the Amazon QuickSight
	// console, this option is called 'Show total'.
	LabelVisibility *string `type:"string" enum:"Visibility"`
}

// 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 DonutCenterOptions) 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 DonutCenterOptions) GoString() string {
	return s.String()
}

// SetLabelVisibility sets the LabelVisibility field's value.
func (s *DonutCenterOptions) SetLabelVisibility(v string) *DonutCenterOptions {
	s.LabelVisibility = &v
	return s
}

// The options for configuring a donut chart or pie chart.
type DonutOptions struct {
	_ struct{} `type:"structure"`

	// The option for define the arc of the chart shape. Valid values are as follows:
	//
	//    * WHOLE - A pie chart
	//
	//    * SMALL- A small-sized donut chart
	//
	//    * MEDIUM- A medium-sized donut chart
	//
	//    * LARGE- A large-sized donut chart
	ArcOptions *ArcOptions `type:"structure"`

	// The label options of the label that is displayed in the center of a donut
	// chart. This option isn't available for pie charts.
	DonutCenterOptions *DonutCenterOptions `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 DonutOptions) 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 DonutOptions) GoString() string {
	return s.String()
}

// SetArcOptions sets the ArcOptions field's value.
func (s *DonutOptions) SetArcOptions(v *ArcOptions) *DonutOptions {
	s.ArcOptions = v
	return s
}

// SetDonutCenterOptions sets the DonutCenterOptions field's value.
func (s *DonutOptions) SetDonutCenterOptions(v *DonutCenterOptions) *DonutOptions {
	s.DonutCenterOptions = v
	return s
}

// The drill down filter for the column hierarchies.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type DrillDownFilter struct {
	_ struct{} `type:"structure"`

	// The category type drill down filter. This filter is used for string type
	// columns.
	CategoryFilter *CategoryDrillDownFilter `type:"structure"`

	// The numeric equality type drill down filter. This filter is used for number
	// type columns.
	NumericEqualityFilter *NumericEqualityDrillDownFilter `type:"structure"`

	// The time range drill down filter. This filter is used for date time columns.
	TimeRangeFilter *TimeRangeDrillDownFilter `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 DrillDownFilter) 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 DrillDownFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DrillDownFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DrillDownFilter"}
	if s.CategoryFilter != nil {
		if err := s.CategoryFilter.Validate(); err != nil {
			invalidParams.AddNested("CategoryFilter", err.(request.ErrInvalidParams))
		}
	}
	if s.NumericEqualityFilter != nil {
		if err := s.NumericEqualityFilter.Validate(); err != nil {
			invalidParams.AddNested("NumericEqualityFilter", err.(request.ErrInvalidParams))
		}
	}
	if s.TimeRangeFilter != nil {
		if err := s.TimeRangeFilter.Validate(); err != nil {
			invalidParams.AddNested("TimeRangeFilter", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategoryFilter sets the CategoryFilter field's value.
func (s *DrillDownFilter) SetCategoryFilter(v *CategoryDrillDownFilter) *DrillDownFilter {
	s.CategoryFilter = v
	return s
}

// SetNumericEqualityFilter sets the NumericEqualityFilter field's value.
func (s *DrillDownFilter) SetNumericEqualityFilter(v *NumericEqualityDrillDownFilter) *DrillDownFilter {
	s.NumericEqualityFilter = v
	return s
}

// SetTimeRangeFilter sets the TimeRangeFilter field's value.
func (s *DrillDownFilter) SetTimeRangeFilter(v *TimeRangeDrillDownFilter) *DrillDownFilter {
	s.TimeRangeFilter = v
	return s
}

// The display options of a control.
type DropDownControlDisplayOptions struct {
	_ struct{} `type:"structure"`

	// The configuration of info icon label options.
	InfoIconLabelOptions *SheetControlInfoIconLabelOptions `type:"structure"`

	// The configuration of the Select all options in a dropdown control.
	SelectAllOptions *ListControlSelectAllOptions `type:"structure"`

	// The options to configure the title visibility, name, and font size.
	TitleOptions *LabelOptions `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 DropDownControlDisplayOptions) 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 DropDownControlDisplayOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DropDownControlDisplayOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DropDownControlDisplayOptions"}
	if s.InfoIconLabelOptions != nil {
		if err := s.InfoIconLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("InfoIconLabelOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInfoIconLabelOptions sets the InfoIconLabelOptions field's value.
func (s *DropDownControlDisplayOptions) SetInfoIconLabelOptions(v *SheetControlInfoIconLabelOptions) *DropDownControlDisplayOptions {
	s.InfoIconLabelOptions = v
	return s
}

// SetSelectAllOptions sets the SelectAllOptions field's value.
func (s *DropDownControlDisplayOptions) SetSelectAllOptions(v *ListControlSelectAllOptions) *DropDownControlDisplayOptions {
	s.SelectAllOptions = v
	return s
}

// SetTitleOptions sets the TitleOptions field's value.
func (s *DropDownControlDisplayOptions) SetTitleOptions(v *LabelOptions) *DropDownControlDisplayOptions {
	s.TitleOptions = v
	return s
}

// Defines different defaults to the users or groups based on mapping.
type DynamicDefaultValue struct {
	_ struct{} `type:"structure"`

	// The column that contains the default value of each user or group.
	//
	// DefaultValueColumn is a required field
	DefaultValueColumn *ColumnIdentifier `type:"structure" required:"true"`

	// The column that contains the group name.
	GroupNameColumn *ColumnIdentifier `type:"structure"`

	// The column that contains the username.
	UserNameColumn *ColumnIdentifier `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 DynamicDefaultValue) 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 DynamicDefaultValue) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DynamicDefaultValue) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DynamicDefaultValue"}
	if s.DefaultValueColumn == nil {
		invalidParams.Add(request.NewErrParamRequired("DefaultValueColumn"))
	}
	if s.DefaultValueColumn != nil {
		if err := s.DefaultValueColumn.Validate(); err != nil {
			invalidParams.AddNested("DefaultValueColumn", err.(request.ErrInvalidParams))
		}
	}
	if s.GroupNameColumn != nil {
		if err := s.GroupNameColumn.Validate(); err != nil {
			invalidParams.AddNested("GroupNameColumn", err.(request.ErrInvalidParams))
		}
	}
	if s.UserNameColumn != nil {
		if err := s.UserNameColumn.Validate(); err != nil {
			invalidParams.AddNested("UserNameColumn", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDefaultValueColumn sets the DefaultValueColumn field's value.
func (s *DynamicDefaultValue) SetDefaultValueColumn(v *ColumnIdentifier) *DynamicDefaultValue {
	s.DefaultValueColumn = v
	return s
}

// SetGroupNameColumn sets the GroupNameColumn field's value.
func (s *DynamicDefaultValue) SetGroupNameColumn(v *ColumnIdentifier) *DynamicDefaultValue {
	s.GroupNameColumn = v
	return s
}

// SetUserNameColumn sets the UserNameColumn field's value.
func (s *DynamicDefaultValue) SetUserNameColumn(v *ColumnIdentifier) *DynamicDefaultValue {
	s.UserNameColumn = v
	return s
}

// An empty visual.
//
// Empty visuals are used in layouts but have not been configured to show any
// data. A new visual created in the Amazon QuickSight console is considered
// an EmptyVisual until a visual type is selected.
type EmptyVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The data set that is used in the empty visual. Every visual requires a dataset
	// to render.
	//
	// DataSetIdentifier is a required field
	DataSetIdentifier *string `min:"1" type:"string" required:"true"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers.
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EmptyVisual) 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 EmptyVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EmptyVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EmptyVisual"}
	if s.DataSetIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetIdentifier"))
	}
	if s.DataSetIdentifier != nil && len(*s.DataSetIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetIdentifier", 1))
	}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *EmptyVisual) SetActions(v []*VisualCustomAction) *EmptyVisual {
	s.Actions = v
	return s
}

// SetDataSetIdentifier sets the DataSetIdentifier field's value.
func (s *EmptyVisual) SetDataSetIdentifier(v string) *EmptyVisual {
	s.DataSetIdentifier = &v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *EmptyVisual) SetVisualId(v string) *EmptyVisual {
	s.VisualId = &v
	return s
}

// An object, structure, or sub-structure of an analysis, template, or dashboard.
type Entity struct {
	_ struct{} `type:"structure"`

	// The hierarchical path of the entity within the analysis, template, or dashboard
	// definition tree.
	Path *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Entity) 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 Entity) GoString() string {
	return s.String()
}

// SetPath sets the Path field's value.
func (s *Entity) SetPath(v string) *Entity {
	s.Path = &v
	return s
}

// Error information for the SPICE ingestion of a dataset.
type ErrorInfo struct {
	_ struct{} `type:"structure"`

	// Error message.
	Message *string `type:"string"`

	// Error type.
	Type *string `type:"string" enum:"IngestionErrorType"`
}

// 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 ErrorInfo) 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 ErrorInfo) GoString() string {
	return s.String()
}

// SetMessage sets the Message field's value.
func (s *ErrorInfo) SetMessage(v string) *ErrorInfo {
	s.Message = &v
	return s
}

// SetType sets the Type field's value.
func (s *ErrorInfo) SetType(v string) *ErrorInfo {
	s.Type = &v
	return s
}

// The required parameters for connecting to an Exasol data source.
type ExasolParameters struct {
	_ struct{} `type:"structure"`

	// The hostname or IP address of the Exasol data source.
	//
	// Host is a required field
	Host *string `min:"1" type:"string" required:"true"`

	// The port for the Exasol data source.
	//
	// Port is a required field
	Port *int64 `min:"1" type:"integer" 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 ExasolParameters) 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 ExasolParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ExasolParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ExasolParameters"}
	if s.Host == nil {
		invalidParams.Add(request.NewErrParamRequired("Host"))
	}
	if s.Host != nil && len(*s.Host) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Host", 1))
	}
	if s.Port == nil {
		invalidParams.Add(request.NewErrParamRequired("Port"))
	}
	if s.Port != nil && *s.Port < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHost sets the Host field's value.
func (s *ExasolParameters) SetHost(v string) *ExasolParameters {
	s.Host = &v
	return s
}

// SetPort sets the Port field's value.
func (s *ExasolParameters) SetPort(v int64) *ExasolParameters {
	s.Port = &v
	return s
}

// The exclude period of TimeRangeFilter or RelativeDatesFilter.
type ExcludePeriodConfiguration struct {
	_ struct{} `type:"structure"`

	// The amount or number of the exclude period.
	//
	// Amount is a required field
	Amount *int64 `type:"integer" required:"true"`

	// The granularity or unit (day, month, year) of the exclude period.
	//
	// Granularity is a required field
	Granularity *string `type:"string" required:"true" enum:"TimeGranularity"`

	// The status of the exclude period. Choose from the following options:
	//
	//    * ENABLED
	//
	//    * DISABLED
	Status *string `type:"string" enum:"WidgetStatus"`
}

// 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 ExcludePeriodConfiguration) 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 ExcludePeriodConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ExcludePeriodConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ExcludePeriodConfiguration"}
	if s.Amount == nil {
		invalidParams.Add(request.NewErrParamRequired("Amount"))
	}
	if s.Granularity == nil {
		invalidParams.Add(request.NewErrParamRequired("Granularity"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAmount sets the Amount field's value.
func (s *ExcludePeriodConfiguration) SetAmount(v int64) *ExcludePeriodConfiguration {
	s.Amount = &v
	return s
}

// SetGranularity sets the Granularity field's value.
func (s *ExcludePeriodConfiguration) SetGranularity(v string) *ExcludePeriodConfiguration {
	s.Granularity = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ExcludePeriodConfiguration) SetStatus(v string) *ExcludePeriodConfiguration {
	s.Status = &v
	return s
}

// The option that determines the hierarchy of the fields that are built within
// a visual's field wells. These fields can't be duplicated to other visuals.
type ExplicitHierarchy struct {
	_ struct{} `type:"structure"`

	// The list of columns that define the explicit hierarchy.
	//
	// Columns is a required field
	Columns []*ColumnIdentifier `min:"2" type:"list" required:"true"`

	// The option that determines the drill down filters for the explicit hierarchy.
	DrillDownFilters []*DrillDownFilter `type:"list"`

	// The hierarchy ID of the explicit hierarchy.
	//
	// HierarchyId is a required field
	HierarchyId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExplicitHierarchy) 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 ExplicitHierarchy) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ExplicitHierarchy) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ExplicitHierarchy"}
	if s.Columns == nil {
		invalidParams.Add(request.NewErrParamRequired("Columns"))
	}
	if s.Columns != nil && len(s.Columns) < 2 {
		invalidParams.Add(request.NewErrParamMinLen("Columns", 2))
	}
	if s.HierarchyId == nil {
		invalidParams.Add(request.NewErrParamRequired("HierarchyId"))
	}
	if s.HierarchyId != nil && len(*s.HierarchyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("HierarchyId", 1))
	}
	if s.Columns != nil {
		for i, v := range s.Columns {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Columns", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.DrillDownFilters != nil {
		for i, v := range s.DrillDownFilters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DrillDownFilters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumns sets the Columns field's value.
func (s *ExplicitHierarchy) SetColumns(v []*ColumnIdentifier) *ExplicitHierarchy {
	s.Columns = v
	return s
}

// SetDrillDownFilters sets the DrillDownFilters field's value.
func (s *ExplicitHierarchy) SetDrillDownFilters(v []*DrillDownFilter) *ExplicitHierarchy {
	s.DrillDownFilters = v
	return s
}

// SetHierarchyId sets the HierarchyId field's value.
func (s *ExplicitHierarchy) SetHierarchyId(v string) *ExplicitHierarchy {
	s.HierarchyId = &v
	return s
}

// Determines if hidden fields are included in an exported dashboard.
type ExportHiddenFieldsOption struct {
	_ struct{} `type:"structure"`

	// The status of the export hidden fields options of a dashbaord.
	AvailabilityStatus *string `type:"string" enum:"DashboardBehavior"`
}

// 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 ExportHiddenFieldsOption) 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 ExportHiddenFieldsOption) GoString() string {
	return s.String()
}

// SetAvailabilityStatus sets the AvailabilityStatus field's value.
func (s *ExportHiddenFieldsOption) SetAvailabilityStatus(v string) *ExportHiddenFieldsOption {
	s.AvailabilityStatus = &v
	return s
}

// Export to .csv option.
type ExportToCSVOption struct {
	_ struct{} `type:"structure"`

	// Availability status.
	AvailabilityStatus *string `type:"string" enum:"DashboardBehavior"`
}

// 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 ExportToCSVOption) 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 ExportToCSVOption) GoString() string {
	return s.String()
}

// SetAvailabilityStatus sets the AvailabilityStatus field's value.
func (s *ExportToCSVOption) SetAvailabilityStatus(v string) *ExportToCSVOption {
	s.AvailabilityStatus = &v
	return s
}

// Determines whether or not hidden fields are visible on exported dashbaords.
type ExportWithHiddenFieldsOption struct {
	_ struct{} `type:"structure"`

	// The status of the export with hidden fields options.
	AvailabilityStatus *string `type:"string" enum:"DashboardBehavior"`
}

// 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 ExportWithHiddenFieldsOption) 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 ExportWithHiddenFieldsOption) GoString() string {
	return s.String()
}

// SetAvailabilityStatus sets the AvailabilityStatus field's value.
func (s *ExportWithHiddenFieldsOption) SetAvailabilityStatus(v string) *ExportWithHiddenFieldsOption {
	s.AvailabilityStatus = &v
	return s
}

// An entry that appears when a KeyRegistration update to Amazon QuickSight
// fails.
type FailedKeyRegistrationEntry struct {
	_ struct{} `type:"structure"`

	// The ARN of the KMS key that failed to update.
	KeyArn *string `type:"string"`

	// A message that provides information about why a FailedKeyRegistrationEntry
	// error occurred.
	//
	// Message is a required field
	Message *string `type:"string" required:"true"`

	// A boolean that indicates whether a FailedKeyRegistrationEntry resulted from
	// user error. If the value of this property is True, the error was caused by
	// user error. If the value of this property is False, the error occurred on
	// the backend. If your job continues fail and with a False SenderFault value,
	// contact Amazon Web Services Support.
	//
	// SenderFault is a required field
	SenderFault *bool `type:"boolean" required:"true"`

	// The HTTP status of a FailedKeyRegistrationEntry error.
	//
	// StatusCode is a required field
	StatusCode *int64 `type:"integer" 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 FailedKeyRegistrationEntry) 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 FailedKeyRegistrationEntry) GoString() string {
	return s.String()
}

// SetKeyArn sets the KeyArn field's value.
func (s *FailedKeyRegistrationEntry) SetKeyArn(v string) *FailedKeyRegistrationEntry {
	s.KeyArn = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *FailedKeyRegistrationEntry) SetMessage(v string) *FailedKeyRegistrationEntry {
	s.Message = &v
	return s
}

// SetSenderFault sets the SenderFault field's value.
func (s *FailedKeyRegistrationEntry) SetSenderFault(v bool) *FailedKeyRegistrationEntry {
	s.SenderFault = &v
	return s
}

// SetStatusCode sets the StatusCode field's value.
func (s *FailedKeyRegistrationEntry) SetStatusCode(v int64) *FailedKeyRegistrationEntry {
	s.StatusCode = &v
	return s
}

// The setup for the detailed tooltip.
type FieldBasedTooltip struct {
	_ struct{} `type:"structure"`

	// The visibility of Show aggregations.
	AggregationVisibility *string `type:"string" enum:"Visibility"`

	// The fields configuration in the tooltip.
	TooltipFields []*TooltipItem `type:"list"`

	// The type for the >tooltip title. Choose one of the following options:
	//
	//    * NONE: Doesn't use the primary value as the title.
	//
	//    * PRIMARY_VALUE: Uses primary value as the title.
	TooltipTitleType *string `type:"string" enum:"TooltipTitleType"`
}

// 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 FieldBasedTooltip) 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 FieldBasedTooltip) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FieldBasedTooltip) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FieldBasedTooltip"}
	if s.TooltipFields != nil {
		for i, v := range s.TooltipFields {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TooltipFields", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAggregationVisibility sets the AggregationVisibility field's value.
func (s *FieldBasedTooltip) SetAggregationVisibility(v string) *FieldBasedTooltip {
	s.AggregationVisibility = &v
	return s
}

// SetTooltipFields sets the TooltipFields field's value.
func (s *FieldBasedTooltip) SetTooltipFields(v []*TooltipItem) *FieldBasedTooltip {
	s.TooltipFields = v
	return s
}

// SetTooltipTitleType sets the TooltipTitleType field's value.
func (s *FieldBasedTooltip) SetTooltipTitleType(v string) *FieldBasedTooltip {
	s.TooltipTitleType = &v
	return s
}

// A FieldFolder element is a folder that contains fields and nested subfolders.
type FieldFolder struct {
	_ struct{} `type:"structure"`

	// A folder has a list of columns. A column can only be in one folder.
	Columns []*string `locationName:"columns" type:"list"`

	// The description for a field folder.
	Description *string `locationName:"description" 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 FieldFolder) 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 FieldFolder) GoString() string {
	return s.String()
}

// SetColumns sets the Columns field's value.
func (s *FieldFolder) SetColumns(v []*string) *FieldFolder {
	s.Columns = v
	return s
}

// SetDescription sets the Description field's value.
func (s *FieldFolder) SetDescription(v string) *FieldFolder {
	s.Description = &v
	return s
}

// The field label type.
type FieldLabelType struct {
	_ struct{} `type:"structure"`

	// Indicates the field that is targeted by the field label.
	FieldId *string `min:"1" type:"string"`

	// The visibility of the field label.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 FieldLabelType) 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 FieldLabelType) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FieldLabelType) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FieldLabelType"}
	if s.FieldId != nil && len(*s.FieldId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FieldId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldId sets the FieldId field's value.
func (s *FieldLabelType) SetFieldId(v string) *FieldLabelType {
	s.FieldId = &v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *FieldLabelType) SetVisibility(v string) *FieldLabelType {
	s.Visibility = &v
	return s
}

// The field series item configuration of a line chart.
type FieldSeriesItem struct {
	_ struct{} `type:"structure"`

	// The axis that you are binding the field to.
	//
	// AxisBinding is a required field
	AxisBinding *string `type:"string" required:"true" enum:"AxisBinding"`

	// The field ID of the field for which you are setting the axis binding.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The options that determine the presentation of line series associated to
	// the field.
	Settings *LineChartSeriesSettings `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 FieldSeriesItem) 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 FieldSeriesItem) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FieldSeriesItem) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FieldSeriesItem"}
	if s.AxisBinding == nil {
		invalidParams.Add(request.NewErrParamRequired("AxisBinding"))
	}
	if s.FieldId == nil {
		invalidParams.Add(request.NewErrParamRequired("FieldId"))
	}
	if s.FieldId != nil && len(*s.FieldId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FieldId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAxisBinding sets the AxisBinding field's value.
func (s *FieldSeriesItem) SetAxisBinding(v string) *FieldSeriesItem {
	s.AxisBinding = &v
	return s
}

// SetFieldId sets the FieldId field's value.
func (s *FieldSeriesItem) SetFieldId(v string) *FieldSeriesItem {
	s.FieldId = &v
	return s
}

// SetSettings sets the Settings field's value.
func (s *FieldSeriesItem) SetSettings(v *LineChartSeriesSettings) *FieldSeriesItem {
	s.Settings = v
	return s
}

// The sort configuration for a field in a field well.
type FieldSort struct {
	_ struct{} `type:"structure"`

	// The sort direction. Choose one of the following options:
	//
	//    * ASC: Ascending
	//
	//    * DESC: Descending
	//
	// Direction is a required field
	Direction *string `type:"string" required:"true" enum:"SortDirection"`

	// The sort configuration target field.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FieldSort) 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 FieldSort) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FieldSort) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FieldSort"}
	if s.Direction == nil {
		invalidParams.Add(request.NewErrParamRequired("Direction"))
	}
	if s.FieldId == nil {
		invalidParams.Add(request.NewErrParamRequired("FieldId"))
	}
	if s.FieldId != nil && len(*s.FieldId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FieldId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDirection sets the Direction field's value.
func (s *FieldSort) SetDirection(v string) *FieldSort {
	s.Direction = &v
	return s
}

// SetFieldId sets the FieldId field's value.
func (s *FieldSort) SetFieldId(v string) *FieldSort {
	s.FieldId = &v
	return s
}

// The field sort options in a chart configuration.
type FieldSortOptions struct {
	_ struct{} `type:"structure"`

	// The sort configuration for a column that is not used in a field well.
	ColumnSort *ColumnSort `type:"structure"`

	// The sort configuration for a field in a field well.
	FieldSort *FieldSort `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 FieldSortOptions) 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 FieldSortOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FieldSortOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FieldSortOptions"}
	if s.ColumnSort != nil {
		if err := s.ColumnSort.Validate(); err != nil {
			invalidParams.AddNested("ColumnSort", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldSort != nil {
		if err := s.FieldSort.Validate(); err != nil {
			invalidParams.AddNested("FieldSort", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumnSort sets the ColumnSort field's value.
func (s *FieldSortOptions) SetColumnSort(v *ColumnSort) *FieldSortOptions {
	s.ColumnSort = v
	return s
}

// SetFieldSort sets the FieldSort field's value.
func (s *FieldSortOptions) SetFieldSort(v *FieldSort) *FieldSortOptions {
	s.FieldSort = v
	return s
}

// The tooltip item for the fields.
type FieldTooltipItem struct {
	_ struct{} `type:"structure"`

	// The unique ID of the field that is targeted by the tooltip.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The label of the tooltip item.
	Label *string `type:"string"`

	// Determines the target of the field tooltip item in a combo chart visual.
	TooltipTarget *string `type:"string" enum:"TooltipTarget"`

	// The visibility of the tooltip item.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 FieldTooltipItem) 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 FieldTooltipItem) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FieldTooltipItem) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FieldTooltipItem"}
	if s.FieldId == nil {
		invalidParams.Add(request.NewErrParamRequired("FieldId"))
	}
	if s.FieldId != nil && len(*s.FieldId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FieldId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldId sets the FieldId field's value.
func (s *FieldTooltipItem) SetFieldId(v string) *FieldTooltipItem {
	s.FieldId = &v
	return s
}

// SetLabel sets the Label field's value.
func (s *FieldTooltipItem) SetLabel(v string) *FieldTooltipItem {
	s.Label = &v
	return s
}

// SetTooltipTarget sets the TooltipTarget field's value.
func (s *FieldTooltipItem) SetTooltipTarget(v string) *FieldTooltipItem {
	s.TooltipTarget = &v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *FieldTooltipItem) SetVisibility(v string) *FieldTooltipItem {
	s.Visibility = &v
	return s
}

// The aggregated field well of the filled map.
type FilledMapAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The aggregated location field well of the filled map. Values are grouped
	// by location fields.
	Geospatial []*DimensionField `type:"list"`

	// The aggregated color field well of a filled map. Values are aggregated based
	// on location fields.
	Values []*MeasureField `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 FilledMapAggregatedFieldWells) 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 FilledMapAggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilledMapAggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilledMapAggregatedFieldWells"}
	if s.Geospatial != nil {
		for i, v := range s.Geospatial {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Geospatial", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Values != nil {
		for i, v := range s.Values {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Values", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetGeospatial sets the Geospatial field's value.
func (s *FilledMapAggregatedFieldWells) SetGeospatial(v []*DimensionField) *FilledMapAggregatedFieldWells {
	s.Geospatial = v
	return s
}

// SetValues sets the Values field's value.
func (s *FilledMapAggregatedFieldWells) SetValues(v []*MeasureField) *FilledMapAggregatedFieldWells {
	s.Values = v
	return s
}

// The conditional formatting of a FilledMapVisual.
type FilledMapConditionalFormatting struct {
	_ struct{} `type:"structure"`

	// Conditional formatting options of a FilledMapVisual.
	//
	// ConditionalFormattingOptions is a required field
	ConditionalFormattingOptions []*FilledMapConditionalFormattingOption `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 FilledMapConditionalFormatting) 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 FilledMapConditionalFormatting) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilledMapConditionalFormatting) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilledMapConditionalFormatting"}
	if s.ConditionalFormattingOptions == nil {
		invalidParams.Add(request.NewErrParamRequired("ConditionalFormattingOptions"))
	}
	if s.ConditionalFormattingOptions != nil {
		for i, v := range s.ConditionalFormattingOptions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ConditionalFormattingOptions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConditionalFormattingOptions sets the ConditionalFormattingOptions field's value.
func (s *FilledMapConditionalFormatting) SetConditionalFormattingOptions(v []*FilledMapConditionalFormattingOption) *FilledMapConditionalFormatting {
	s.ConditionalFormattingOptions = v
	return s
}

// Conditional formatting options of a FilledMapVisual.
type FilledMapConditionalFormattingOption struct {
	_ struct{} `type:"structure"`

	// The conditional formatting that determines the shape of the filled map.
	//
	// Shape is a required field
	Shape *FilledMapShapeConditionalFormatting `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 FilledMapConditionalFormattingOption) 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 FilledMapConditionalFormattingOption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilledMapConditionalFormattingOption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilledMapConditionalFormattingOption"}
	if s.Shape == nil {
		invalidParams.Add(request.NewErrParamRequired("Shape"))
	}
	if s.Shape != nil {
		if err := s.Shape.Validate(); err != nil {
			invalidParams.AddNested("Shape", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetShape sets the Shape field's value.
func (s *FilledMapConditionalFormattingOption) SetShape(v *FilledMapShapeConditionalFormatting) *FilledMapConditionalFormattingOption {
	s.Shape = v
	return s
}

// The configuration for a FilledMapVisual.
type FilledMapConfiguration struct {
	_ struct{} `type:"structure"`

	// The field wells of the visual.
	FieldWells *FilledMapFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The legend display setup of the visual.
	Legend *LegendOptions `type:"structure"`

	// The map style options of the filled map visual.
	MapStyleOptions *GeospatialMapStyleOptions `type:"structure"`

	// The sort configuration of a FilledMapVisual.
	SortConfiguration *FilledMapSortConfiguration `type:"structure"`

	// The tooltip display setup of the visual.
	Tooltip *TooltipOptions `type:"structure"`

	// The window options of the filled map visual.
	WindowOptions *GeospatialWindowOptions `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 FilledMapConfiguration) 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 FilledMapConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilledMapConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilledMapConfiguration"}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.SortConfiguration != nil {
		if err := s.SortConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SortConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Tooltip != nil {
		if err := s.Tooltip.Validate(); err != nil {
			invalidParams.AddNested("Tooltip", err.(request.ErrInvalidParams))
		}
	}
	if s.WindowOptions != nil {
		if err := s.WindowOptions.Validate(); err != nil {
			invalidParams.AddNested("WindowOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldWells sets the FieldWells field's value.
func (s *FilledMapConfiguration) SetFieldWells(v *FilledMapFieldWells) *FilledMapConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *FilledMapConfiguration) SetInteractions(v *VisualInteractionOptions) *FilledMapConfiguration {
	s.Interactions = v
	return s
}

// SetLegend sets the Legend field's value.
func (s *FilledMapConfiguration) SetLegend(v *LegendOptions) *FilledMapConfiguration {
	s.Legend = v
	return s
}

// SetMapStyleOptions sets the MapStyleOptions field's value.
func (s *FilledMapConfiguration) SetMapStyleOptions(v *GeospatialMapStyleOptions) *FilledMapConfiguration {
	s.MapStyleOptions = v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *FilledMapConfiguration) SetSortConfiguration(v *FilledMapSortConfiguration) *FilledMapConfiguration {
	s.SortConfiguration = v
	return s
}

// SetTooltip sets the Tooltip field's value.
func (s *FilledMapConfiguration) SetTooltip(v *TooltipOptions) *FilledMapConfiguration {
	s.Tooltip = v
	return s
}

// SetWindowOptions sets the WindowOptions field's value.
func (s *FilledMapConfiguration) SetWindowOptions(v *GeospatialWindowOptions) *FilledMapConfiguration {
	s.WindowOptions = v
	return s
}

// The field wells of a FilledMapVisual.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type FilledMapFieldWells struct {
	_ struct{} `type:"structure"`

	// The aggregated field well of the filled map.
	FilledMapAggregatedFieldWells *FilledMapAggregatedFieldWells `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 FilledMapFieldWells) 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 FilledMapFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilledMapFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilledMapFieldWells"}
	if s.FilledMapAggregatedFieldWells != nil {
		if err := s.FilledMapAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("FilledMapAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilledMapAggregatedFieldWells sets the FilledMapAggregatedFieldWells field's value.
func (s *FilledMapFieldWells) SetFilledMapAggregatedFieldWells(v *FilledMapAggregatedFieldWells) *FilledMapFieldWells {
	s.FilledMapAggregatedFieldWells = v
	return s
}

// The conditional formatting that determines the shape of the filled map.
type FilledMapShapeConditionalFormatting struct {
	_ struct{} `type:"structure"`

	// The field ID of the filled map shape.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The conditional formatting that determines the background color of a filled
	// map's shape.
	Format *ShapeConditionalFormat `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 FilledMapShapeConditionalFormatting) 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 FilledMapShapeConditionalFormatting) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilledMapShapeConditionalFormatting) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilledMapShapeConditionalFormatting"}
	if s.FieldId == nil {
		invalidParams.Add(request.NewErrParamRequired("FieldId"))
	}
	if s.FieldId != nil && len(*s.FieldId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FieldId", 1))
	}
	if s.Format != nil {
		if err := s.Format.Validate(); err != nil {
			invalidParams.AddNested("Format", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldId sets the FieldId field's value.
func (s *FilledMapShapeConditionalFormatting) SetFieldId(v string) *FilledMapShapeConditionalFormatting {
	s.FieldId = &v
	return s
}

// SetFormat sets the Format field's value.
func (s *FilledMapShapeConditionalFormatting) SetFormat(v *ShapeConditionalFormat) *FilledMapShapeConditionalFormatting {
	s.Format = v
	return s
}

// The sort configuration of a FilledMapVisual.
type FilledMapSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The sort configuration of the location fields.
	CategorySort []*FieldSortOptions `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 FilledMapSortConfiguration) 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 FilledMapSortConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilledMapSortConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilledMapSortConfiguration"}
	if s.CategorySort != nil {
		for i, v := range s.CategorySort {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CategorySort", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategorySort sets the CategorySort field's value.
func (s *FilledMapSortConfiguration) SetCategorySort(v []*FieldSortOptions) *FilledMapSortConfiguration {
	s.CategorySort = v
	return s
}

// A filled map.
//
// For more information, see Creating filled maps (https://docs.aws.amazon.com/quicksight/latest/user/filled-maps.html)
// in the Amazon QuickSight User Guide.
type FilledMapVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration settings of the visual.
	ChartConfiguration *FilledMapConfiguration `type:"structure"`

	// The column hierarchy that is used during drill-downs and drill-ups.
	ColumnHierarchies []*ColumnHierarchy `type:"list"`

	// The conditional formatting of a FilledMapVisual.
	ConditionalFormatting *FilledMapConditionalFormatting `type:"structure"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers..
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FilledMapVisual) 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 FilledMapVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilledMapVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilledMapVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ColumnHierarchies != nil {
		for i, v := range s.ColumnHierarchies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnHierarchies", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ConditionalFormatting != nil {
		if err := s.ConditionalFormatting.Validate(); err != nil {
			invalidParams.AddNested("ConditionalFormatting", err.(request.ErrInvalidParams))
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *FilledMapVisual) SetActions(v []*VisualCustomAction) *FilledMapVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *FilledMapVisual) SetChartConfiguration(v *FilledMapConfiguration) *FilledMapVisual {
	s.ChartConfiguration = v
	return s
}

// SetColumnHierarchies sets the ColumnHierarchies field's value.
func (s *FilledMapVisual) SetColumnHierarchies(v []*ColumnHierarchy) *FilledMapVisual {
	s.ColumnHierarchies = v
	return s
}

// SetConditionalFormatting sets the ConditionalFormatting field's value.
func (s *FilledMapVisual) SetConditionalFormatting(v *FilledMapConditionalFormatting) *FilledMapVisual {
	s.ConditionalFormatting = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *FilledMapVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *FilledMapVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *FilledMapVisual) SetTitle(v *VisualTitleLabelOptions) *FilledMapVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *FilledMapVisual) SetVisualId(v string) *FilledMapVisual {
	s.VisualId = &v
	return s
}

// With a Filter, you can remove portions of data from a particular visual or
// view.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type Filter struct {
	_ struct{} `type:"structure"`

	// A CategoryFilter filters text values.
	//
	// For more information, see Adding text filters (https://docs.aws.amazon.com/quicksight/latest/user/add-a-text-filter-data-prep.html)
	// in the Amazon QuickSight User Guide.
	CategoryFilter *CategoryFilter `type:"structure"`

	// A NestedFilter filters data with a subset of data that is defined by the
	// nested inner filter.
	NestedFilter *NestedFilter `type:"structure"`

	// A NumericEqualityFilter filters numeric values that equal or do not equal
	// a given numeric value.
	NumericEqualityFilter *NumericEqualityFilter `type:"structure"`

	// A NumericRangeFilter filters numeric values that are either inside or outside
	// a given numeric range.
	NumericRangeFilter *NumericRangeFilter `type:"structure"`

	// A RelativeDatesFilter filters date values that are relative to a given date.
	RelativeDatesFilter *RelativeDatesFilter `type:"structure"`

	// A TimeEqualityFilter filters date-time values that equal or do not equal
	// a given date/time value.
	TimeEqualityFilter *TimeEqualityFilter `type:"structure"`

	// A TimeRangeFilter filters date-time values that are either inside or outside
	// a given date/time range.
	TimeRangeFilter *TimeRangeFilter `type:"structure"`

	// A TopBottomFilter filters data to the top or bottom values for a given column.
	TopBottomFilter *TopBottomFilter `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 Filter) 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 Filter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Filter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Filter"}
	if s.CategoryFilter != nil {
		if err := s.CategoryFilter.Validate(); err != nil {
			invalidParams.AddNested("CategoryFilter", err.(request.ErrInvalidParams))
		}
	}
	if s.NestedFilter != nil {
		if err := s.NestedFilter.Validate(); err != nil {
			invalidParams.AddNested("NestedFilter", err.(request.ErrInvalidParams))
		}
	}
	if s.NumericEqualityFilter != nil {
		if err := s.NumericEqualityFilter.Validate(); err != nil {
			invalidParams.AddNested("NumericEqualityFilter", err.(request.ErrInvalidParams))
		}
	}
	if s.NumericRangeFilter != nil {
		if err := s.NumericRangeFilter.Validate(); err != nil {
			invalidParams.AddNested("NumericRangeFilter", err.(request.ErrInvalidParams))
		}
	}
	if s.RelativeDatesFilter != nil {
		if err := s.RelativeDatesFilter.Validate(); err != nil {
			invalidParams.AddNested("RelativeDatesFilter", err.(request.ErrInvalidParams))
		}
	}
	if s.TimeEqualityFilter != nil {
		if err := s.TimeEqualityFilter.Validate(); err != nil {
			invalidParams.AddNested("TimeEqualityFilter", err.(request.ErrInvalidParams))
		}
	}
	if s.TimeRangeFilter != nil {
		if err := s.TimeRangeFilter.Validate(); err != nil {
			invalidParams.AddNested("TimeRangeFilter", err.(request.ErrInvalidParams))
		}
	}
	if s.TopBottomFilter != nil {
		if err := s.TopBottomFilter.Validate(); err != nil {
			invalidParams.AddNested("TopBottomFilter", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategoryFilter sets the CategoryFilter field's value.
func (s *Filter) SetCategoryFilter(v *CategoryFilter) *Filter {
	s.CategoryFilter = v
	return s
}

// SetNestedFilter sets the NestedFilter field's value.
func (s *Filter) SetNestedFilter(v *NestedFilter) *Filter {
	s.NestedFilter = v
	return s
}

// SetNumericEqualityFilter sets the NumericEqualityFilter field's value.
func (s *Filter) SetNumericEqualityFilter(v *NumericEqualityFilter) *Filter {
	s.NumericEqualityFilter = v
	return s
}

// SetNumericRangeFilter sets the NumericRangeFilter field's value.
func (s *Filter) SetNumericRangeFilter(v *NumericRangeFilter) *Filter {
	s.NumericRangeFilter = v
	return s
}

// SetRelativeDatesFilter sets the RelativeDatesFilter field's value.
func (s *Filter) SetRelativeDatesFilter(v *RelativeDatesFilter) *Filter {
	s.RelativeDatesFilter = v
	return s
}

// SetTimeEqualityFilter sets the TimeEqualityFilter field's value.
func (s *Filter) SetTimeEqualityFilter(v *TimeEqualityFilter) *Filter {
	s.TimeEqualityFilter = v
	return s
}

// SetTimeRangeFilter sets the TimeRangeFilter field's value.
func (s *Filter) SetTimeRangeFilter(v *TimeRangeFilter) *Filter {
	s.TimeRangeFilter = v
	return s
}

// SetTopBottomFilter sets the TopBottomFilter field's value.
func (s *Filter) SetTopBottomFilter(v *TopBottomFilter) *Filter {
	s.TopBottomFilter = v
	return s
}

// The definition for the FilterAggMetrics.
type FilterAggMetrics struct {
	_ struct{} `type:"structure"`

	// The function for the FilterAggMetrics.
	Function *string `type:"string" enum:"AggType"`

	// The metric operand of the FilterAggMetrics.
	MetricOperand *Identifier `type:"structure"`

	// The sort direction for FilterAggMetrics.
	SortDirection *string `type:"string" enum:"TopicSortDirection"`
}

// 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 FilterAggMetrics) 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 FilterAggMetrics) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterAggMetrics) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterAggMetrics"}
	if s.MetricOperand != nil {
		if err := s.MetricOperand.Validate(); err != nil {
			invalidParams.AddNested("MetricOperand", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFunction sets the Function field's value.
func (s *FilterAggMetrics) SetFunction(v string) *FilterAggMetrics {
	s.Function = &v
	return s
}

// SetMetricOperand sets the MetricOperand field's value.
func (s *FilterAggMetrics) SetMetricOperand(v *Identifier) *FilterAggMetrics {
	s.MetricOperand = v
	return s
}

// SetSortDirection sets the SortDirection field's value.
func (s *FilterAggMetrics) SetSortDirection(v string) *FilterAggMetrics {
	s.SortDirection = &v
	return s
}

// The control of a filter that is used to interact with a dashboard or an analysis.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type FilterControl struct {
	_ struct{} `type:"structure"`

	// A control from a filter that is scoped across more than one sheet. This represents
	// your filter control on a sheet
	CrossSheet *FilterCrossSheetControl `type:"structure"`

	// A control from a date filter that is used to specify date and time.
	DateTimePicker *FilterDateTimePickerControl `type:"structure"`

	// A control to display a dropdown list with buttons that are used to select
	// a single value.
	Dropdown *FilterDropDownControl `type:"structure"`

	// A control to display a list of buttons or boxes. This is used to select either
	// a single value or multiple values.
	List *FilterListControl `type:"structure"`

	// A control from a date filter that is used to specify the relative date.
	RelativeDateTime *FilterRelativeDateTimeControl `type:"structure"`

	// A control to display a horizontal toggle bar. This is used to change a value
	// by sliding the toggle.
	Slider *FilterSliderControl `type:"structure"`

	// A control to display a text box that is used to enter multiple entries.
	TextArea *FilterTextAreaControl `type:"structure"`

	// A control to display a text box that is used to enter a single entry.
	TextField *FilterTextFieldControl `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 FilterControl) 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 FilterControl) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterControl) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterControl"}
	if s.CrossSheet != nil {
		if err := s.CrossSheet.Validate(); err != nil {
			invalidParams.AddNested("CrossSheet", err.(request.ErrInvalidParams))
		}
	}
	if s.DateTimePicker != nil {
		if err := s.DateTimePicker.Validate(); err != nil {
			invalidParams.AddNested("DateTimePicker", err.(request.ErrInvalidParams))
		}
	}
	if s.Dropdown != nil {
		if err := s.Dropdown.Validate(); err != nil {
			invalidParams.AddNested("Dropdown", err.(request.ErrInvalidParams))
		}
	}
	if s.List != nil {
		if err := s.List.Validate(); err != nil {
			invalidParams.AddNested("List", err.(request.ErrInvalidParams))
		}
	}
	if s.RelativeDateTime != nil {
		if err := s.RelativeDateTime.Validate(); err != nil {
			invalidParams.AddNested("RelativeDateTime", err.(request.ErrInvalidParams))
		}
	}
	if s.Slider != nil {
		if err := s.Slider.Validate(); err != nil {
			invalidParams.AddNested("Slider", err.(request.ErrInvalidParams))
		}
	}
	if s.TextArea != nil {
		if err := s.TextArea.Validate(); err != nil {
			invalidParams.AddNested("TextArea", err.(request.ErrInvalidParams))
		}
	}
	if s.TextField != nil {
		if err := s.TextField.Validate(); err != nil {
			invalidParams.AddNested("TextField", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCrossSheet sets the CrossSheet field's value.
func (s *FilterControl) SetCrossSheet(v *FilterCrossSheetControl) *FilterControl {
	s.CrossSheet = v
	return s
}

// SetDateTimePicker sets the DateTimePicker field's value.
func (s *FilterControl) SetDateTimePicker(v *FilterDateTimePickerControl) *FilterControl {
	s.DateTimePicker = v
	return s
}

// SetDropdown sets the Dropdown field's value.
func (s *FilterControl) SetDropdown(v *FilterDropDownControl) *FilterControl {
	s.Dropdown = v
	return s
}

// SetList sets the List field's value.
func (s *FilterControl) SetList(v *FilterListControl) *FilterControl {
	s.List = v
	return s
}

// SetRelativeDateTime sets the RelativeDateTime field's value.
func (s *FilterControl) SetRelativeDateTime(v *FilterRelativeDateTimeControl) *FilterControl {
	s.RelativeDateTime = v
	return s
}

// SetSlider sets the Slider field's value.
func (s *FilterControl) SetSlider(v *FilterSliderControl) *FilterControl {
	s.Slider = v
	return s
}

// SetTextArea sets the TextArea field's value.
func (s *FilterControl) SetTextArea(v *FilterTextAreaControl) *FilterControl {
	s.TextArea = v
	return s
}

// SetTextField sets the TextField field's value.
func (s *FilterControl) SetTextField(v *FilterTextFieldControl) *FilterControl {
	s.TextField = v
	return s
}

// A control from a filter that is scoped across more than one sheet. This represents
// your filter control on a sheet
type FilterCrossSheetControl struct {
	_ struct{} `type:"structure"`

	// The values that are displayed in a control can be configured to only show
	// values that are valid based on what's selected in other controls.
	CascadingControlConfiguration *CascadingControlConfiguration `type:"structure"`

	// The ID of the FilterCrossSheetControl.
	//
	// FilterControlId is a required field
	FilterControlId *string `min:"1" type:"string" required:"true"`

	// The source filter ID of the FilterCrossSheetControl.
	//
	// SourceFilterId is a required field
	SourceFilterId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FilterCrossSheetControl) 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 FilterCrossSheetControl) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterCrossSheetControl) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterCrossSheetControl"}
	if s.FilterControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterControlId"))
	}
	if s.FilterControlId != nil && len(*s.FilterControlId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterControlId", 1))
	}
	if s.SourceFilterId == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceFilterId"))
	}
	if s.SourceFilterId != nil && len(*s.SourceFilterId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceFilterId", 1))
	}
	if s.CascadingControlConfiguration != nil {
		if err := s.CascadingControlConfiguration.Validate(); err != nil {
			invalidParams.AddNested("CascadingControlConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCascadingControlConfiguration sets the CascadingControlConfiguration field's value.
func (s *FilterCrossSheetControl) SetCascadingControlConfiguration(v *CascadingControlConfiguration) *FilterCrossSheetControl {
	s.CascadingControlConfiguration = v
	return s
}

// SetFilterControlId sets the FilterControlId field's value.
func (s *FilterCrossSheetControl) SetFilterControlId(v string) *FilterCrossSheetControl {
	s.FilterControlId = &v
	return s
}

// SetSourceFilterId sets the SourceFilterId field's value.
func (s *FilterCrossSheetControl) SetSourceFilterId(v string) *FilterCrossSheetControl {
	s.SourceFilterId = &v
	return s
}

// A control from a date filter that is used to specify date and time.
type FilterDateTimePickerControl struct {
	_ struct{} `type:"structure"`

	// The display options of a control.
	DisplayOptions *DateTimePickerControlDisplayOptions `type:"structure"`

	// The ID of the FilterDateTimePickerControl.
	//
	// FilterControlId is a required field
	FilterControlId *string `min:"1" type:"string" required:"true"`

	// The source filter ID of the FilterDateTimePickerControl.
	//
	// SourceFilterId is a required field
	SourceFilterId *string `min:"1" type:"string" required:"true"`

	// The title of the FilterDateTimePickerControl.
	//
	// Title is a required field
	Title *string `min:"1" type:"string" required:"true"`

	// The type of the FilterDropDownControl. Choose one of the following options:
	//
	//    * MULTI_SELECT: The user can select multiple entries from a dropdown menu.
	//
	//    * SINGLE_SELECT: The user can select a single entry from a dropdown menu.
	Type *string `type:"string" enum:"SheetControlDateTimePickerType"`
}

// 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 FilterDateTimePickerControl) 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 FilterDateTimePickerControl) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterDateTimePickerControl) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterDateTimePickerControl"}
	if s.FilterControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterControlId"))
	}
	if s.FilterControlId != nil && len(*s.FilterControlId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterControlId", 1))
	}
	if s.SourceFilterId == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceFilterId"))
	}
	if s.SourceFilterId != nil && len(*s.SourceFilterId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceFilterId", 1))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.Title != nil && len(*s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *FilterDateTimePickerControl) SetDisplayOptions(v *DateTimePickerControlDisplayOptions) *FilterDateTimePickerControl {
	s.DisplayOptions = v
	return s
}

// SetFilterControlId sets the FilterControlId field's value.
func (s *FilterDateTimePickerControl) SetFilterControlId(v string) *FilterDateTimePickerControl {
	s.FilterControlId = &v
	return s
}

// SetSourceFilterId sets the SourceFilterId field's value.
func (s *FilterDateTimePickerControl) SetSourceFilterId(v string) *FilterDateTimePickerControl {
	s.SourceFilterId = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *FilterDateTimePickerControl) SetTitle(v string) *FilterDateTimePickerControl {
	s.Title = &v
	return s
}

// SetType sets the Type field's value.
func (s *FilterDateTimePickerControl) SetType(v string) *FilterDateTimePickerControl {
	s.Type = &v
	return s
}

// A control to display a dropdown list with buttons that are used to select
// a single value.
type FilterDropDownControl struct {
	_ struct{} `type:"structure"`

	// The values that are displayed in a control can be configured to only show
	// values that are valid based on what's selected in other controls.
	CascadingControlConfiguration *CascadingControlConfiguration `type:"structure"`

	// The display options of the FilterDropDownControl.
	DisplayOptions *DropDownControlDisplayOptions `type:"structure"`

	// The ID of the FilterDropDownControl.
	//
	// FilterControlId is a required field
	FilterControlId *string `min:"1" type:"string" required:"true"`

	// A list of selectable values that are used in a control.
	SelectableValues *FilterSelectableValues `type:"structure"`

	// The source filter ID of the FilterDropDownControl.
	//
	// SourceFilterId is a required field
	SourceFilterId *string `min:"1" type:"string" required:"true"`

	// The title of the FilterDropDownControl.
	//
	// Title is a required field
	Title *string `min:"1" type:"string" required:"true"`

	// The type of the FilterDropDownControl. Choose one of the following options:
	//
	//    * MULTI_SELECT: The user can select multiple entries from a dropdown menu.
	//
	//    * SINGLE_SELECT: The user can select a single entry from a dropdown menu.
	Type *string `type:"string" enum:"SheetControlListType"`
}

// 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 FilterDropDownControl) 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 FilterDropDownControl) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterDropDownControl) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterDropDownControl"}
	if s.FilterControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterControlId"))
	}
	if s.FilterControlId != nil && len(*s.FilterControlId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterControlId", 1))
	}
	if s.SourceFilterId == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceFilterId"))
	}
	if s.SourceFilterId != nil && len(*s.SourceFilterId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceFilterId", 1))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.Title != nil && len(*s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.CascadingControlConfiguration != nil {
		if err := s.CascadingControlConfiguration.Validate(); err != nil {
			invalidParams.AddNested("CascadingControlConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCascadingControlConfiguration sets the CascadingControlConfiguration field's value.
func (s *FilterDropDownControl) SetCascadingControlConfiguration(v *CascadingControlConfiguration) *FilterDropDownControl {
	s.CascadingControlConfiguration = v
	return s
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *FilterDropDownControl) SetDisplayOptions(v *DropDownControlDisplayOptions) *FilterDropDownControl {
	s.DisplayOptions = v
	return s
}

// SetFilterControlId sets the FilterControlId field's value.
func (s *FilterDropDownControl) SetFilterControlId(v string) *FilterDropDownControl {
	s.FilterControlId = &v
	return s
}

// SetSelectableValues sets the SelectableValues field's value.
func (s *FilterDropDownControl) SetSelectableValues(v *FilterSelectableValues) *FilterDropDownControl {
	s.SelectableValues = v
	return s
}

// SetSourceFilterId sets the SourceFilterId field's value.
func (s *FilterDropDownControl) SetSourceFilterId(v string) *FilterDropDownControl {
	s.SourceFilterId = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *FilterDropDownControl) SetTitle(v string) *FilterDropDownControl {
	s.Title = &v
	return s
}

// SetType sets the Type field's value.
func (s *FilterDropDownControl) SetType(v string) *FilterDropDownControl {
	s.Type = &v
	return s
}

// A grouping of individual filters. Filter groups are applied to the same group
// of visuals.
//
// For more information, see Adding filter conditions (group filters) with AND
// and OR operators (https://docs.aws.amazon.com/quicksight/latest/user/add-a-compound-filter.html)
// in the Amazon QuickSight User Guide.
type FilterGroup struct {
	_ struct{} `type:"structure"`

	// The filter new feature which can apply filter group to all data sets. Choose
	// one of the following options:
	//
	//    * ALL_DATASETS
	//
	//    * SINGLE_DATASET
	//
	// CrossDataset is a required field
	CrossDataset *string `type:"string" required:"true" enum:"CrossDatasetTypes"`

	// The value that uniquely identifies a FilterGroup within a dashboard, template,
	// or analysis.
	//
	// FilterGroupId is a required field
	FilterGroupId *string `min:"1" type:"string" required:"true"`

	// The list of filters that are present in a FilterGroup.
	//
	// Filters is a required field
	Filters []*Filter `type:"list" required:"true"`

	// The configuration that specifies what scope to apply to a FilterGroup.
	//
	// This is a union type structure. For this structure to be valid, only one
	// of the attributes can be defined.
	//
	// ScopeConfiguration is a required field
	ScopeConfiguration *FilterScopeConfiguration `type:"structure" required:"true"`

	// The status of the FilterGroup.
	Status *string `type:"string" enum:"WidgetStatus"`
}

// 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 FilterGroup) 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 FilterGroup) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterGroup) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterGroup"}
	if s.CrossDataset == nil {
		invalidParams.Add(request.NewErrParamRequired("CrossDataset"))
	}
	if s.FilterGroupId == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterGroupId"))
	}
	if s.FilterGroupId != nil && len(*s.FilterGroupId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterGroupId", 1))
	}
	if s.Filters == nil {
		invalidParams.Add(request.NewErrParamRequired("Filters"))
	}
	if s.ScopeConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("ScopeConfiguration"))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ScopeConfiguration != nil {
		if err := s.ScopeConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ScopeConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCrossDataset sets the CrossDataset field's value.
func (s *FilterGroup) SetCrossDataset(v string) *FilterGroup {
	s.CrossDataset = &v
	return s
}

// SetFilterGroupId sets the FilterGroupId field's value.
func (s *FilterGroup) SetFilterGroupId(v string) *FilterGroup {
	s.FilterGroupId = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *FilterGroup) SetFilters(v []*Filter) *FilterGroup {
	s.Filters = v
	return s
}

// SetScopeConfiguration sets the ScopeConfiguration field's value.
func (s *FilterGroup) SetScopeConfiguration(v *FilterScopeConfiguration) *FilterGroup {
	s.ScopeConfiguration = v
	return s
}

// SetStatus sets the Status field's value.
func (s *FilterGroup) SetStatus(v string) *FilterGroup {
	s.Status = &v
	return s
}

// A list of filter configurations.
type FilterListConfiguration struct {
	_ struct{} `type:"structure"`

	// The list of category values for the filter.
	CategoryValues []*string `type:"list"`

	// The match operator that is used to determine if a filter should be applied.
	//
	// MatchOperator is a required field
	MatchOperator *string `type:"string" required:"true" enum:"CategoryFilterMatchOperator"`

	// This option determines how null values should be treated when filtering data.
	//
	//    * ALL_VALUES: Include null values in filtered results.
	//
	//    * NULLS_ONLY: Only include null values in filtered results.
	//
	//    * NON_NULLS_ONLY: Exclude null values from filtered results.
	NullOption *string `type:"string" enum:"FilterNullOption"`

	// Select all of the values. Null is not the assigned value of select all.
	//
	//    * FILTER_ALL_VALUES
	SelectAllOptions *string `type:"string" enum:"CategoryFilterSelectAllOptions"`
}

// 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 FilterListConfiguration) 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 FilterListConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterListConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterListConfiguration"}
	if s.MatchOperator == nil {
		invalidParams.Add(request.NewErrParamRequired("MatchOperator"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategoryValues sets the CategoryValues field's value.
func (s *FilterListConfiguration) SetCategoryValues(v []*string) *FilterListConfiguration {
	s.CategoryValues = v
	return s
}

// SetMatchOperator sets the MatchOperator field's value.
func (s *FilterListConfiguration) SetMatchOperator(v string) *FilterListConfiguration {
	s.MatchOperator = &v
	return s
}

// SetNullOption sets the NullOption field's value.
func (s *FilterListConfiguration) SetNullOption(v string) *FilterListConfiguration {
	s.NullOption = &v
	return s
}

// SetSelectAllOptions sets the SelectAllOptions field's value.
func (s *FilterListConfiguration) SetSelectAllOptions(v string) *FilterListConfiguration {
	s.SelectAllOptions = &v
	return s
}

// A control to display a list of buttons or boxes. This is used to select either
// a single value or multiple values.
type FilterListControl struct {
	_ struct{} `type:"structure"`

	// The values that are displayed in a control can be configured to only show
	// values that are valid based on what's selected in other controls.
	CascadingControlConfiguration *CascadingControlConfiguration `type:"structure"`

	// The display options of a control.
	DisplayOptions *ListControlDisplayOptions `type:"structure"`

	// The ID of the FilterListControl.
	//
	// FilterControlId is a required field
	FilterControlId *string `min:"1" type:"string" required:"true"`

	// A list of selectable values that are used in a control.
	SelectableValues *FilterSelectableValues `type:"structure"`

	// The source filter ID of the FilterListControl.
	//
	// SourceFilterId is a required field
	SourceFilterId *string `min:"1" type:"string" required:"true"`

	// The title of the FilterListControl.
	//
	// Title is a required field
	Title *string `min:"1" type:"string" required:"true"`

	// The type of the FilterListControl. Choose one of the following options:
	//
	//    * MULTI_SELECT: The user can select multiple entries from the list.
	//
	//    * SINGLE_SELECT: The user can select a single entry from the list.
	Type *string `type:"string" enum:"SheetControlListType"`
}

// 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 FilterListControl) 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 FilterListControl) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterListControl) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterListControl"}
	if s.FilterControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterControlId"))
	}
	if s.FilterControlId != nil && len(*s.FilterControlId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterControlId", 1))
	}
	if s.SourceFilterId == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceFilterId"))
	}
	if s.SourceFilterId != nil && len(*s.SourceFilterId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceFilterId", 1))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.Title != nil && len(*s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.CascadingControlConfiguration != nil {
		if err := s.CascadingControlConfiguration.Validate(); err != nil {
			invalidParams.AddNested("CascadingControlConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCascadingControlConfiguration sets the CascadingControlConfiguration field's value.
func (s *FilterListControl) SetCascadingControlConfiguration(v *CascadingControlConfiguration) *FilterListControl {
	s.CascadingControlConfiguration = v
	return s
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *FilterListControl) SetDisplayOptions(v *ListControlDisplayOptions) *FilterListControl {
	s.DisplayOptions = v
	return s
}

// SetFilterControlId sets the FilterControlId field's value.
func (s *FilterListControl) SetFilterControlId(v string) *FilterListControl {
	s.FilterControlId = &v
	return s
}

// SetSelectableValues sets the SelectableValues field's value.
func (s *FilterListControl) SetSelectableValues(v *FilterSelectableValues) *FilterListControl {
	s.SelectableValues = v
	return s
}

// SetSourceFilterId sets the SourceFilterId field's value.
func (s *FilterListControl) SetSourceFilterId(v string) *FilterListControl {
	s.SourceFilterId = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *FilterListControl) SetTitle(v string) *FilterListControl {
	s.Title = &v
	return s
}

// SetType sets the Type field's value.
func (s *FilterListControl) SetType(v string) *FilterListControl {
	s.Type = &v
	return s
}

// A transform operation that filters rows based on a condition.
type FilterOperation struct {
	_ struct{} `type:"structure"`

	// An expression that must evaluate to a Boolean value. Rows for which the expression
	// evaluates to true are kept in the dataset.
	//
	// ConditionExpression is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by FilterOperation's
	// String and GoString methods.
	//
	// ConditionExpression is a required field
	ConditionExpression *string `min:"1" type:"string" required:"true" sensitive:"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 FilterOperation) 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 FilterOperation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterOperation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterOperation"}
	if s.ConditionExpression == nil {
		invalidParams.Add(request.NewErrParamRequired("ConditionExpression"))
	}
	if s.ConditionExpression != nil && len(*s.ConditionExpression) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ConditionExpression", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConditionExpression sets the ConditionExpression field's value.
func (s *FilterOperation) SetConditionExpression(v string) *FilterOperation {
	s.ConditionExpression = &v
	return s
}

// The configuration of selected fields in theCustomActionFilterOperation.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type FilterOperationSelectedFieldsConfiguration struct {
	_ struct{} `type:"structure"`

	// The selected columns of a dataset.
	SelectedColumns []*ColumnIdentifier `type:"list"`

	// A structure that contains the options that choose which fields are filtered
	// in the CustomActionFilterOperation.
	//
	// Valid values are defined as follows:
	//
	//    * ALL_FIELDS: Applies the filter operation to all fields.
	SelectedFieldOptions *string `type:"string" enum:"SelectedFieldOptions"`

	// Chooses the fields that are filtered in CustomActionFilterOperation.
	SelectedFields []*string `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FilterOperationSelectedFieldsConfiguration) 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 FilterOperationSelectedFieldsConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterOperationSelectedFieldsConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterOperationSelectedFieldsConfiguration"}
	if s.SelectedFields != nil && len(s.SelectedFields) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SelectedFields", 1))
	}
	if s.SelectedColumns != nil {
		for i, v := range s.SelectedColumns {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SelectedColumns", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSelectedColumns sets the SelectedColumns field's value.
func (s *FilterOperationSelectedFieldsConfiguration) SetSelectedColumns(v []*ColumnIdentifier) *FilterOperationSelectedFieldsConfiguration {
	s.SelectedColumns = v
	return s
}

// SetSelectedFieldOptions sets the SelectedFieldOptions field's value.
func (s *FilterOperationSelectedFieldsConfiguration) SetSelectedFieldOptions(v string) *FilterOperationSelectedFieldsConfiguration {
	s.SelectedFieldOptions = &v
	return s
}

// SetSelectedFields sets the SelectedFields field's value.
func (s *FilterOperationSelectedFieldsConfiguration) SetSelectedFields(v []*string) *FilterOperationSelectedFieldsConfiguration {
	s.SelectedFields = v
	return s
}

// The configuration of target visuals that you want to be filtered.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type FilterOperationTargetVisualsConfiguration struct {
	_ struct{} `type:"structure"`

	// The configuration of the same-sheet target visuals that you want to be filtered.
	SameSheetTargetVisualConfiguration *SameSheetTargetVisualConfiguration `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 FilterOperationTargetVisualsConfiguration) 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 FilterOperationTargetVisualsConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterOperationTargetVisualsConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterOperationTargetVisualsConfiguration"}
	if s.SameSheetTargetVisualConfiguration != nil {
		if err := s.SameSheetTargetVisualConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SameSheetTargetVisualConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSameSheetTargetVisualConfiguration sets the SameSheetTargetVisualConfiguration field's value.
func (s *FilterOperationTargetVisualsConfiguration) SetSameSheetTargetVisualConfiguration(v *SameSheetTargetVisualConfiguration) *FilterOperationTargetVisualsConfiguration {
	s.SameSheetTargetVisualConfiguration = v
	return s
}

// A control from a date filter that is used to specify the relative date.
type FilterRelativeDateTimeControl struct {
	_ struct{} `type:"structure"`

	// The display options of a control.
	DisplayOptions *RelativeDateTimeControlDisplayOptions `type:"structure"`

	// The ID of the FilterTextAreaControl.
	//
	// FilterControlId is a required field
	FilterControlId *string `min:"1" type:"string" required:"true"`

	// The source filter ID of the FilterTextAreaControl.
	//
	// SourceFilterId is a required field
	SourceFilterId *string `min:"1" type:"string" required:"true"`

	// The title of the FilterTextAreaControl.
	//
	// Title is a required field
	Title *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FilterRelativeDateTimeControl) 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 FilterRelativeDateTimeControl) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterRelativeDateTimeControl) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterRelativeDateTimeControl"}
	if s.FilterControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterControlId"))
	}
	if s.FilterControlId != nil && len(*s.FilterControlId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterControlId", 1))
	}
	if s.SourceFilterId == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceFilterId"))
	}
	if s.SourceFilterId != nil && len(*s.SourceFilterId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceFilterId", 1))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.Title != nil && len(*s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *FilterRelativeDateTimeControl) SetDisplayOptions(v *RelativeDateTimeControlDisplayOptions) *FilterRelativeDateTimeControl {
	s.DisplayOptions = v
	return s
}

// SetFilterControlId sets the FilterControlId field's value.
func (s *FilterRelativeDateTimeControl) SetFilterControlId(v string) *FilterRelativeDateTimeControl {
	s.FilterControlId = &v
	return s
}

// SetSourceFilterId sets the SourceFilterId field's value.
func (s *FilterRelativeDateTimeControl) SetSourceFilterId(v string) *FilterRelativeDateTimeControl {
	s.SourceFilterId = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *FilterRelativeDateTimeControl) SetTitle(v string) *FilterRelativeDateTimeControl {
	s.Title = &v
	return s
}

// The scope configuration for a FilterGroup.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type FilterScopeConfiguration struct {
	_ struct{} `type:"structure"`

	// The configuration that applies a filter to all sheets. When you choose AllSheets
	// as the value for a FilterScopeConfiguration, this filter is applied to all
	// visuals of all sheets in an Analysis, Dashboard, or Template. The AllSheetsFilterScopeConfiguration
	// is chosen.
	AllSheets *AllSheetsFilterScopeConfiguration `type:"structure"`

	// The configuration for applying a filter to specific sheets.
	SelectedSheets *SelectedSheetsFilterScopeConfiguration `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 FilterScopeConfiguration) 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 FilterScopeConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterScopeConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterScopeConfiguration"}
	if s.SelectedSheets != nil {
		if err := s.SelectedSheets.Validate(); err != nil {
			invalidParams.AddNested("SelectedSheets", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllSheets sets the AllSheets field's value.
func (s *FilterScopeConfiguration) SetAllSheets(v *AllSheetsFilterScopeConfiguration) *FilterScopeConfiguration {
	s.AllSheets = v
	return s
}

// SetSelectedSheets sets the SelectedSheets field's value.
func (s *FilterScopeConfiguration) SetSelectedSheets(v *SelectedSheetsFilterScopeConfiguration) *FilterScopeConfiguration {
	s.SelectedSheets = v
	return s
}

// A list of selectable values that are used in a control.
type FilterSelectableValues struct {
	_ struct{} `type:"structure"`

	// The values that are used in the FilterSelectableValues.
	Values []*string `type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FilterSelectableValues) 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 FilterSelectableValues) GoString() string {
	return s.String()
}

// SetValues sets the Values field's value.
func (s *FilterSelectableValues) SetValues(v []*string) *FilterSelectableValues {
	s.Values = v
	return s
}

// A control to display a horizontal toggle bar. This is used to change a value
// by sliding the toggle.
type FilterSliderControl struct {
	_ struct{} `type:"structure"`

	// The display options of a control.
	DisplayOptions *SliderControlDisplayOptions `type:"structure"`

	// The ID of the FilterSliderControl.
	//
	// FilterControlId is a required field
	FilterControlId *string `min:"1" type:"string" required:"true"`

	// The larger value that is displayed at the right of the slider.
	//
	// MaximumValue is a required field
	MaximumValue *float64 `type:"double" required:"true"`

	// The smaller value that is displayed at the left of the slider.
	//
	// MinimumValue is a required field
	MinimumValue *float64 `type:"double" required:"true"`

	// The source filter ID of the FilterSliderControl.
	//
	// SourceFilterId is a required field
	SourceFilterId *string `min:"1" type:"string" required:"true"`

	// The number of increments that the slider bar is divided into.
	//
	// StepSize is a required field
	StepSize *float64 `type:"double" required:"true"`

	// The title of the FilterSliderControl.
	//
	// Title is a required field
	Title *string `min:"1" type:"string" required:"true"`

	// The type of the FilterSliderControl. Choose one of the following options:
	//
	//    * SINGLE_POINT: Filter against(equals) a single data point.
	//
	//    * RANGE: Filter data that is in a specified range.
	Type *string `type:"string" enum:"SheetControlSliderType"`
}

// 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 FilterSliderControl) 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 FilterSliderControl) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterSliderControl) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterSliderControl"}
	if s.FilterControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterControlId"))
	}
	if s.FilterControlId != nil && len(*s.FilterControlId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterControlId", 1))
	}
	if s.MaximumValue == nil {
		invalidParams.Add(request.NewErrParamRequired("MaximumValue"))
	}
	if s.MinimumValue == nil {
		invalidParams.Add(request.NewErrParamRequired("MinimumValue"))
	}
	if s.SourceFilterId == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceFilterId"))
	}
	if s.SourceFilterId != nil && len(*s.SourceFilterId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceFilterId", 1))
	}
	if s.StepSize == nil {
		invalidParams.Add(request.NewErrParamRequired("StepSize"))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.Title != nil && len(*s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *FilterSliderControl) SetDisplayOptions(v *SliderControlDisplayOptions) *FilterSliderControl {
	s.DisplayOptions = v
	return s
}

// SetFilterControlId sets the FilterControlId field's value.
func (s *FilterSliderControl) SetFilterControlId(v string) *FilterSliderControl {
	s.FilterControlId = &v
	return s
}

// SetMaximumValue sets the MaximumValue field's value.
func (s *FilterSliderControl) SetMaximumValue(v float64) *FilterSliderControl {
	s.MaximumValue = &v
	return s
}

// SetMinimumValue sets the MinimumValue field's value.
func (s *FilterSliderControl) SetMinimumValue(v float64) *FilterSliderControl {
	s.MinimumValue = &v
	return s
}

// SetSourceFilterId sets the SourceFilterId field's value.
func (s *FilterSliderControl) SetSourceFilterId(v string) *FilterSliderControl {
	s.SourceFilterId = &v
	return s
}

// SetStepSize sets the StepSize field's value.
func (s *FilterSliderControl) SetStepSize(v float64) *FilterSliderControl {
	s.StepSize = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *FilterSliderControl) SetTitle(v string) *FilterSliderControl {
	s.Title = &v
	return s
}

// SetType sets the Type field's value.
func (s *FilterSliderControl) SetType(v string) *FilterSliderControl {
	s.Type = &v
	return s
}

// A control to display a text box that is used to enter multiple entries.
type FilterTextAreaControl struct {
	_ struct{} `type:"structure"`

	// The delimiter that is used to separate the lines in text.
	Delimiter *string `min:"1" type:"string"`

	// The display options of a control.
	DisplayOptions *TextAreaControlDisplayOptions `type:"structure"`

	// The ID of the FilterTextAreaControl.
	//
	// FilterControlId is a required field
	FilterControlId *string `min:"1" type:"string" required:"true"`

	// The source filter ID of the FilterTextAreaControl.
	//
	// SourceFilterId is a required field
	SourceFilterId *string `min:"1" type:"string" required:"true"`

	// The title of the FilterTextAreaControl.
	//
	// Title is a required field
	Title *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FilterTextAreaControl) 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 FilterTextAreaControl) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterTextAreaControl) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterTextAreaControl"}
	if s.Delimiter != nil && len(*s.Delimiter) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Delimiter", 1))
	}
	if s.FilterControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterControlId"))
	}
	if s.FilterControlId != nil && len(*s.FilterControlId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterControlId", 1))
	}
	if s.SourceFilterId == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceFilterId"))
	}
	if s.SourceFilterId != nil && len(*s.SourceFilterId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceFilterId", 1))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.Title != nil && len(*s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDelimiter sets the Delimiter field's value.
func (s *FilterTextAreaControl) SetDelimiter(v string) *FilterTextAreaControl {
	s.Delimiter = &v
	return s
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *FilterTextAreaControl) SetDisplayOptions(v *TextAreaControlDisplayOptions) *FilterTextAreaControl {
	s.DisplayOptions = v
	return s
}

// SetFilterControlId sets the FilterControlId field's value.
func (s *FilterTextAreaControl) SetFilterControlId(v string) *FilterTextAreaControl {
	s.FilterControlId = &v
	return s
}

// SetSourceFilterId sets the SourceFilterId field's value.
func (s *FilterTextAreaControl) SetSourceFilterId(v string) *FilterTextAreaControl {
	s.SourceFilterId = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *FilterTextAreaControl) SetTitle(v string) *FilterTextAreaControl {
	s.Title = &v
	return s
}

// A control to display a text box that is used to enter a single entry.
type FilterTextFieldControl struct {
	_ struct{} `type:"structure"`

	// The display options of a control.
	DisplayOptions *TextFieldControlDisplayOptions `type:"structure"`

	// The ID of the FilterTextFieldControl.
	//
	// FilterControlId is a required field
	FilterControlId *string `min:"1" type:"string" required:"true"`

	// The source filter ID of the FilterTextFieldControl.
	//
	// SourceFilterId is a required field
	SourceFilterId *string `min:"1" type:"string" required:"true"`

	// The title of the FilterTextFieldControl.
	//
	// Title is a required field
	Title *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FilterTextFieldControl) 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 FilterTextFieldControl) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterTextFieldControl) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterTextFieldControl"}
	if s.FilterControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterControlId"))
	}
	if s.FilterControlId != nil && len(*s.FilterControlId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterControlId", 1))
	}
	if s.SourceFilterId == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceFilterId"))
	}
	if s.SourceFilterId != nil && len(*s.SourceFilterId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceFilterId", 1))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.Title != nil && len(*s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *FilterTextFieldControl) SetDisplayOptions(v *TextFieldControlDisplayOptions) *FilterTextFieldControl {
	s.DisplayOptions = v
	return s
}

// SetFilterControlId sets the FilterControlId field's value.
func (s *FilterTextFieldControl) SetFilterControlId(v string) *FilterTextFieldControl {
	s.FilterControlId = &v
	return s
}

// SetSourceFilterId sets the SourceFilterId field's value.
func (s *FilterTextFieldControl) SetSourceFilterId(v string) *FilterTextFieldControl {
	s.SourceFilterId = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *FilterTextFieldControl) SetTitle(v string) *FilterTextFieldControl {
	s.Title = &v
	return s
}

// A folder in Amazon QuickSight.
type Folder struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the folder.
	Arn *string `type:"string"`

	// The time that the folder was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The ID of the folder.
	FolderId *string `min:"1" type:"string"`

	// An array of ancestor ARN strings for the folder.
	FolderPath []*string `min:"1" type:"list"`

	// The type of folder it is.
	FolderType *string `type:"string" enum:"FolderType"`

	// The time that the folder was last updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// A display name for the folder.
	Name *string `min:"1" type:"string"`

	// The sharing scope of the folder.
	SharingModel *string `type:"string" enum:"SharingModel"`
}

// 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 Folder) 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 Folder) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *Folder) SetArn(v string) *Folder {
	s.Arn = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *Folder) SetCreatedTime(v time.Time) *Folder {
	s.CreatedTime = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *Folder) SetFolderId(v string) *Folder {
	s.FolderId = &v
	return s
}

// SetFolderPath sets the FolderPath field's value.
func (s *Folder) SetFolderPath(v []*string) *Folder {
	s.FolderPath = v
	return s
}

// SetFolderType sets the FolderType field's value.
func (s *Folder) SetFolderType(v string) *Folder {
	s.FolderType = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *Folder) SetLastUpdatedTime(v time.Time) *Folder {
	s.LastUpdatedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *Folder) SetName(v string) *Folder {
	s.Name = &v
	return s
}

// SetSharingModel sets the SharingModel field's value.
func (s *Folder) SetSharingModel(v string) *Folder {
	s.SharingModel = &v
	return s
}

// An asset in a Amazon QuickSight folder, such as a dashboard, analysis, or
// dataset.
type FolderMember struct {
	_ struct{} `type:"structure"`

	// The ID of an asset in the folder.
	MemberId *string `min:"1" type:"string"`

	// The type of asset that it is.
	MemberType *string `type:"string" enum:"MemberType"`
}

// 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 FolderMember) 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 FolderMember) GoString() string {
	return s.String()
}

// SetMemberId sets the MemberId field's value.
func (s *FolderMember) SetMemberId(v string) *FolderMember {
	s.MemberId = &v
	return s
}

// SetMemberType sets the MemberType field's value.
func (s *FolderMember) SetMemberType(v string) *FolderMember {
	s.MemberType = &v
	return s
}

// A filter to use to search an Amazon QuickSight folder.
type FolderSearchFilter struct {
	_ struct{} `type:"structure"`

	// The name of a value that you want to use in the filter. For example, "Name":
	// "QUICKSIGHT_OWNER".
	//
	// Valid values are defined as follows:
	//
	//    * QUICKSIGHT_VIEWER_OR_OWNER: Provide an ARN of a user or group, and any
	//    folders with that ARN listed as one of the folder's owners or viewers
	//    are returned. Implicit permissions from folders or groups are considered.
	//
	//    * QUICKSIGHT_OWNER: Provide an ARN of a user or group, and any folders
	//    with that ARN listed as one of the owners of the folders are returned.
	//    Implicit permissions from folders or groups are considered.
	//
	//    * DIRECT_QUICKSIGHT_SOLE_OWNER: Provide an ARN of a user or group, and
	//    any folders with that ARN listed as the only owner of the folder are returned.
	//    Implicit permissions from folders or groups are not considered.
	//
	//    * DIRECT_QUICKSIGHT_OWNER: Provide an ARN of a user or group, and any
	//    folders with that ARN listed as one of the owners of the folders are returned.
	//    Implicit permissions from folders or groups are not considered.
	//
	//    * DIRECT_QUICKSIGHT_VIEWER_OR_OWNER: Provide an ARN of a user or group,
	//    and any folders with that ARN listed as one of the owners or viewers of
	//    the folders are returned. Implicit permissions from folders or groups
	//    are not considered.
	//
	//    * FOLDER_NAME: Any folders whose names have a substring match to this
	//    value will be returned.
	//
	//    * PARENT_FOLDER_ARN: Provide an ARN of a folder, and any folders that
	//    are directly under that parent folder are returned. If you choose to use
	//    this option and leave the value blank, all root-level folders in the account
	//    are returned.
	Name *string `type:"string" enum:"FolderFilterAttribute"`

	// The comparison operator that you want to use as a filter, for example "Operator":
	// "StringEquals". Valid values are "StringEquals" and "StringLike".
	//
	// If you set the operator value to "StringEquals", you need to provide an ownership
	// related filter in the "NAME" field and the arn of the user or group whose
	// folders you want to search in the "Value" field. For example, "Name":"DIRECT_QUICKSIGHT_OWNER",
	// "Operator": "StringEquals", "Value": "arn:aws:quicksight:us-east-1:1:user/default/UserName1".
	//
	// If you set the value to "StringLike", you need to provide the name of the
	// folders you are searching for. For example, "Name":"FOLDER_NAME", "Operator":
	// "StringLike", "Value": "Test". The "StringLike" operator only supports the
	// NAME value FOLDER_NAME.
	Operator *string `type:"string" enum:"FilterOperator"`

	// The value of the named item (in this example, PARENT_FOLDER_ARN), that you
	// want to use as a filter. For example, "Value": "arn:aws:quicksight:us-east-1:1:folder/folderId".
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FolderSearchFilter) 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 FolderSearchFilter) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *FolderSearchFilter) SetName(v string) *FolderSearchFilter {
	s.Name = &v
	return s
}

// SetOperator sets the Operator field's value.
func (s *FolderSearchFilter) SetOperator(v string) *FolderSearchFilter {
	s.Operator = &v
	return s
}

// SetValue sets the Value field's value.
func (s *FolderSearchFilter) SetValue(v string) *FolderSearchFilter {
	s.Value = &v
	return s
}

// A summary of information about an existing Amazon QuickSight folder.
type FolderSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the folder.
	Arn *string `type:"string"`

	// The time that the folder was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The ID of the folder.
	FolderId *string `min:"1" type:"string"`

	// The type of folder.
	FolderType *string `type:"string" enum:"FolderType"`

	// The time that the folder was last updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// The display name of the folder.
	Name *string `min:"1" type:"string"`

	// The sharing scope of the folder.
	SharingModel *string `type:"string" enum:"SharingModel"`
}

// 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 FolderSummary) 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 FolderSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *FolderSummary) SetArn(v string) *FolderSummary {
	s.Arn = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *FolderSummary) SetCreatedTime(v time.Time) *FolderSummary {
	s.CreatedTime = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *FolderSummary) SetFolderId(v string) *FolderSummary {
	s.FolderId = &v
	return s
}

// SetFolderType sets the FolderType field's value.
func (s *FolderSummary) SetFolderType(v string) *FolderSummary {
	s.FolderType = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *FolderSummary) SetLastUpdatedTime(v time.Time) *FolderSummary {
	s.LastUpdatedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *FolderSummary) SetName(v string) *FolderSummary {
	s.Name = &v
	return s
}

// SetSharingModel sets the SharingModel field's value.
func (s *FolderSummary) SetSharingModel(v string) *FolderSummary {
	s.SharingModel = &v
	return s
}

// Determines the font settings.
type Font struct {
	_ struct{} `type:"structure"`

	// Determines the font family settings.
	FontFamily *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Font) 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 Font) GoString() string {
	return s.String()
}

// SetFontFamily sets the FontFamily field's value.
func (s *Font) SetFontFamily(v string) *Font {
	s.FontFamily = &v
	return s
}

// Configures the display properties of the given text.
type FontConfiguration struct {
	_ struct{} `type:"structure"`

	// Determines the color of the text.
	FontColor *string `type:"string"`

	// Determines the appearance of decorative lines on the text.
	FontDecoration *string `type:"string" enum:"FontDecoration"`

	// The option that determines the text display size.
	FontSize *FontSize `type:"structure"`

	// Determines the text display face that is inherited by the given font family.
	FontStyle *string `type:"string" enum:"FontStyle"`

	// The option that determines the text display weight, or boldness.
	FontWeight *FontWeight `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 FontConfiguration) 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 FontConfiguration) GoString() string {
	return s.String()
}

// SetFontColor sets the FontColor field's value.
func (s *FontConfiguration) SetFontColor(v string) *FontConfiguration {
	s.FontColor = &v
	return s
}

// SetFontDecoration sets the FontDecoration field's value.
func (s *FontConfiguration) SetFontDecoration(v string) *FontConfiguration {
	s.FontDecoration = &v
	return s
}

// SetFontSize sets the FontSize field's value.
func (s *FontConfiguration) SetFontSize(v *FontSize) *FontConfiguration {
	s.FontSize = v
	return s
}

// SetFontStyle sets the FontStyle field's value.
func (s *FontConfiguration) SetFontStyle(v string) *FontConfiguration {
	s.FontStyle = &v
	return s
}

// SetFontWeight sets the FontWeight field's value.
func (s *FontConfiguration) SetFontWeight(v *FontWeight) *FontConfiguration {
	s.FontWeight = v
	return s
}

// The option that determines the text display size.
type FontSize struct {
	_ struct{} `type:"structure"`

	// The lexical name for the text size, proportional to its surrounding context.
	Relative *string `type:"string" enum:"RelativeFontSize"`
}

// 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 FontSize) 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 FontSize) GoString() string {
	return s.String()
}

// SetRelative sets the Relative field's value.
func (s *FontSize) SetRelative(v string) *FontSize {
	s.Relative = &v
	return s
}

// The option that determines the text display weight, or boldness.
type FontWeight struct {
	_ struct{} `type:"structure"`

	// The lexical name for the level of boldness of the text display.
	Name *string `type:"string" enum:"FontWeightName"`
}

// 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 FontWeight) 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 FontWeight) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *FontWeight) SetName(v string) *FontWeight {
	s.Name = &v
	return s
}

// The forecast computation configuration.
type ForecastComputation struct {
	_ struct{} `type:"structure"`

	// The ID for a computation.
	//
	// ComputationId is a required field
	ComputationId *string `min:"1" type:"string" required:"true"`

	// The custom seasonality value setup of a forecast computation.
	CustomSeasonalityValue *int64 `min:"1" type:"integer"`

	// The lower boundary setup of a forecast computation.
	LowerBoundary *float64 `type:"double"`

	// The name of a computation.
	Name *string `type:"string"`

	// The periods backward setup of a forecast computation.
	PeriodsBackward *int64 `type:"integer"`

	// The periods forward setup of a forecast computation.
	PeriodsForward *int64 `min:"1" type:"integer"`

	// The prediction interval setup of a forecast computation.
	PredictionInterval *int64 `min:"50" type:"integer"`

	// The seasonality setup of a forecast computation. Choose one of the following
	// options:
	//
	//    * AUTOMATIC
	//
	//    * CUSTOM: Checks the custom seasonality value.
	Seasonality *string `type:"string" enum:"ForecastComputationSeasonality"`

	// The time field that is used in a computation.
	Time *DimensionField `type:"structure"`

	// The upper boundary setup of a forecast computation.
	UpperBoundary *float64 `type:"double"`

	// The value field that is used in a computation.
	Value *MeasureField `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 ForecastComputation) 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 ForecastComputation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ForecastComputation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ForecastComputation"}
	if s.ComputationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ComputationId"))
	}
	if s.ComputationId != nil && len(*s.ComputationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComputationId", 1))
	}
	if s.CustomSeasonalityValue != nil && *s.CustomSeasonalityValue < 1 {
		invalidParams.Add(request.NewErrParamMinValue("CustomSeasonalityValue", 1))
	}
	if s.PeriodsForward != nil && *s.PeriodsForward < 1 {
		invalidParams.Add(request.NewErrParamMinValue("PeriodsForward", 1))
	}
	if s.PredictionInterval != nil && *s.PredictionInterval < 50 {
		invalidParams.Add(request.NewErrParamMinValue("PredictionInterval", 50))
	}
	if s.Time != nil {
		if err := s.Time.Validate(); err != nil {
			invalidParams.AddNested("Time", err.(request.ErrInvalidParams))
		}
	}
	if s.Value != nil {
		if err := s.Value.Validate(); err != nil {
			invalidParams.AddNested("Value", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetComputationId sets the ComputationId field's value.
func (s *ForecastComputation) SetComputationId(v string) *ForecastComputation {
	s.ComputationId = &v
	return s
}

// SetCustomSeasonalityValue sets the CustomSeasonalityValue field's value.
func (s *ForecastComputation) SetCustomSeasonalityValue(v int64) *ForecastComputation {
	s.CustomSeasonalityValue = &v
	return s
}

// SetLowerBoundary sets the LowerBoundary field's value.
func (s *ForecastComputation) SetLowerBoundary(v float64) *ForecastComputation {
	s.LowerBoundary = &v
	return s
}

// SetName sets the Name field's value.
func (s *ForecastComputation) SetName(v string) *ForecastComputation {
	s.Name = &v
	return s
}

// SetPeriodsBackward sets the PeriodsBackward field's value.
func (s *ForecastComputation) SetPeriodsBackward(v int64) *ForecastComputation {
	s.PeriodsBackward = &v
	return s
}

// SetPeriodsForward sets the PeriodsForward field's value.
func (s *ForecastComputation) SetPeriodsForward(v int64) *ForecastComputation {
	s.PeriodsForward = &v
	return s
}

// SetPredictionInterval sets the PredictionInterval field's value.
func (s *ForecastComputation) SetPredictionInterval(v int64) *ForecastComputation {
	s.PredictionInterval = &v
	return s
}

// SetSeasonality sets the Seasonality field's value.
func (s *ForecastComputation) SetSeasonality(v string) *ForecastComputation {
	s.Seasonality = &v
	return s
}

// SetTime sets the Time field's value.
func (s *ForecastComputation) SetTime(v *DimensionField) *ForecastComputation {
	s.Time = v
	return s
}

// SetUpperBoundary sets the UpperBoundary field's value.
func (s *ForecastComputation) SetUpperBoundary(v float64) *ForecastComputation {
	s.UpperBoundary = &v
	return s
}

// SetValue sets the Value field's value.
func (s *ForecastComputation) SetValue(v *MeasureField) *ForecastComputation {
	s.Value = v
	return s
}

// The forecast configuration that is used in a line chart's display properties.
type ForecastConfiguration struct {
	_ struct{} `type:"structure"`

	// The forecast properties setup of a forecast in the line chart.
	ForecastProperties *TimeBasedForecastProperties `type:"structure"`

	// The forecast scenario of a forecast in the line chart.
	Scenario *ForecastScenario `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 ForecastConfiguration) 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 ForecastConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ForecastConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ForecastConfiguration"}
	if s.ForecastProperties != nil {
		if err := s.ForecastProperties.Validate(); err != nil {
			invalidParams.AddNested("ForecastProperties", err.(request.ErrInvalidParams))
		}
	}
	if s.Scenario != nil {
		if err := s.Scenario.Validate(); err != nil {
			invalidParams.AddNested("Scenario", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetForecastProperties sets the ForecastProperties field's value.
func (s *ForecastConfiguration) SetForecastProperties(v *TimeBasedForecastProperties) *ForecastConfiguration {
	s.ForecastProperties = v
	return s
}

// SetScenario sets the Scenario field's value.
func (s *ForecastConfiguration) SetScenario(v *ForecastScenario) *ForecastConfiguration {
	s.Scenario = v
	return s
}

// The forecast scenario of a forecast in the line chart.
type ForecastScenario struct {
	_ struct{} `type:"structure"`

	// The what-if analysis forecast setup with the target date.
	WhatIfPointScenario *WhatIfPointScenario `type:"structure"`

	// The what-if analysis forecast setup with the date range.
	WhatIfRangeScenario *WhatIfRangeScenario `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 ForecastScenario) 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 ForecastScenario) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ForecastScenario) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ForecastScenario"}
	if s.WhatIfPointScenario != nil {
		if err := s.WhatIfPointScenario.Validate(); err != nil {
			invalidParams.AddNested("WhatIfPointScenario", err.(request.ErrInvalidParams))
		}
	}
	if s.WhatIfRangeScenario != nil {
		if err := s.WhatIfRangeScenario.Validate(); err != nil {
			invalidParams.AddNested("WhatIfRangeScenario", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetWhatIfPointScenario sets the WhatIfPointScenario field's value.
func (s *ForecastScenario) SetWhatIfPointScenario(v *WhatIfPointScenario) *ForecastScenario {
	s.WhatIfPointScenario = v
	return s
}

// SetWhatIfRangeScenario sets the WhatIfRangeScenario field's value.
func (s *ForecastScenario) SetWhatIfRangeScenario(v *WhatIfRangeScenario) *ForecastScenario {
	s.WhatIfRangeScenario = v
	return s
}

// The formatting configuration for all types of field.
type FormatConfiguration struct {
	_ struct{} `type:"structure"`

	// Formatting configuration for DateTime fields.
	DateTimeFormatConfiguration *DateTimeFormatConfiguration `type:"structure"`

	// Formatting configuration for number fields.
	NumberFormatConfiguration *NumberFormatConfiguration `type:"structure"`

	// Formatting configuration for string fields.
	StringFormatConfiguration *StringFormatConfiguration `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 FormatConfiguration) 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 FormatConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FormatConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FormatConfiguration"}
	if s.DateTimeFormatConfiguration != nil {
		if err := s.DateTimeFormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("DateTimeFormatConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.NumberFormatConfiguration != nil {
		if err := s.NumberFormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("NumberFormatConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.StringFormatConfiguration != nil {
		if err := s.StringFormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("StringFormatConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDateTimeFormatConfiguration sets the DateTimeFormatConfiguration field's value.
func (s *FormatConfiguration) SetDateTimeFormatConfiguration(v *DateTimeFormatConfiguration) *FormatConfiguration {
	s.DateTimeFormatConfiguration = v
	return s
}

// SetNumberFormatConfiguration sets the NumberFormatConfiguration field's value.
func (s *FormatConfiguration) SetNumberFormatConfiguration(v *NumberFormatConfiguration) *FormatConfiguration {
	s.NumberFormatConfiguration = v
	return s
}

// SetStringFormatConfiguration sets the StringFormatConfiguration field's value.
func (s *FormatConfiguration) SetStringFormatConfiguration(v *StringFormatConfiguration) *FormatConfiguration {
	s.StringFormatConfiguration = v
	return s
}

// Configuration options for the canvas of a free-form layout.
type FreeFormLayoutCanvasSizeOptions struct {
	_ struct{} `type:"structure"`

	// The options that determine the sizing of the canvas used in a free-form layout.
	ScreenCanvasSizeOptions *FreeFormLayoutScreenCanvasSizeOptions `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 FreeFormLayoutCanvasSizeOptions) 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 FreeFormLayoutCanvasSizeOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FreeFormLayoutCanvasSizeOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FreeFormLayoutCanvasSizeOptions"}
	if s.ScreenCanvasSizeOptions != nil {
		if err := s.ScreenCanvasSizeOptions.Validate(); err != nil {
			invalidParams.AddNested("ScreenCanvasSizeOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetScreenCanvasSizeOptions sets the ScreenCanvasSizeOptions field's value.
func (s *FreeFormLayoutCanvasSizeOptions) SetScreenCanvasSizeOptions(v *FreeFormLayoutScreenCanvasSizeOptions) *FreeFormLayoutCanvasSizeOptions {
	s.ScreenCanvasSizeOptions = v
	return s
}

// The configuration of a free-form layout.
type FreeFormLayoutConfiguration struct {
	_ struct{} `type:"structure"`

	// Configuration options for the canvas of a free-form layout.
	CanvasSizeOptions *FreeFormLayoutCanvasSizeOptions `type:"structure"`

	// The elements that are included in a free-form layout.
	//
	// Elements is a required field
	Elements []*FreeFormLayoutElement `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 FreeFormLayoutConfiguration) 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 FreeFormLayoutConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FreeFormLayoutConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FreeFormLayoutConfiguration"}
	if s.Elements == nil {
		invalidParams.Add(request.NewErrParamRequired("Elements"))
	}
	if s.CanvasSizeOptions != nil {
		if err := s.CanvasSizeOptions.Validate(); err != nil {
			invalidParams.AddNested("CanvasSizeOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.Elements != nil {
		for i, v := range s.Elements {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Elements", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCanvasSizeOptions sets the CanvasSizeOptions field's value.
func (s *FreeFormLayoutConfiguration) SetCanvasSizeOptions(v *FreeFormLayoutCanvasSizeOptions) *FreeFormLayoutConfiguration {
	s.CanvasSizeOptions = v
	return s
}

// SetElements sets the Elements field's value.
func (s *FreeFormLayoutConfiguration) SetElements(v []*FreeFormLayoutElement) *FreeFormLayoutConfiguration {
	s.Elements = v
	return s
}

// An element within a free-form layout.
type FreeFormLayoutElement struct {
	_ struct{} `type:"structure"`

	// The background style configuration of a free-form layout element.
	BackgroundStyle *FreeFormLayoutElementBackgroundStyle `type:"structure"`

	// The border style configuration of a free-form layout element.
	BorderStyle *FreeFormLayoutElementBorderStyle `type:"structure"`

	// A unique identifier for an element within a free-form layout.
	//
	// ElementId is a required field
	ElementId *string `min:"1" type:"string" required:"true"`

	// The type of element.
	//
	// ElementType is a required field
	ElementType *string `type:"string" required:"true" enum:"LayoutElementType"`

	// The height of an element within a free-form layout.
	//
	// Height is a required field
	Height *string `type:"string" required:"true"`

	// The loading animation configuration of a free-form layout element.
	LoadingAnimation *LoadingAnimation `type:"structure"`

	// The rendering rules that determine when an element should be displayed within
	// a free-form layout.
	RenderingRules []*SheetElementRenderingRule `type:"list"`

	// The border style configuration of a free-form layout element. This border
	// style is used when the element is selected.
	SelectedBorderStyle *FreeFormLayoutElementBorderStyle `type:"structure"`

	// The visibility of an element within a free-form layout.
	Visibility *string `type:"string" enum:"Visibility"`

	// The width of an element within a free-form layout.
	//
	// Width is a required field
	Width *string `type:"string" required:"true"`

	// The x-axis coordinate of the element.
	//
	// XAxisLocation is a required field
	XAxisLocation *string `type:"string" required:"true"`

	// The y-axis coordinate of the element.
	//
	// YAxisLocation is a required field
	YAxisLocation *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FreeFormLayoutElement) 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 FreeFormLayoutElement) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FreeFormLayoutElement) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FreeFormLayoutElement"}
	if s.ElementId == nil {
		invalidParams.Add(request.NewErrParamRequired("ElementId"))
	}
	if s.ElementId != nil && len(*s.ElementId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ElementId", 1))
	}
	if s.ElementType == nil {
		invalidParams.Add(request.NewErrParamRequired("ElementType"))
	}
	if s.Height == nil {
		invalidParams.Add(request.NewErrParamRequired("Height"))
	}
	if s.Width == nil {
		invalidParams.Add(request.NewErrParamRequired("Width"))
	}
	if s.XAxisLocation == nil {
		invalidParams.Add(request.NewErrParamRequired("XAxisLocation"))
	}
	if s.YAxisLocation == nil {
		invalidParams.Add(request.NewErrParamRequired("YAxisLocation"))
	}
	if s.RenderingRules != nil {
		for i, v := range s.RenderingRules {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RenderingRules", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBackgroundStyle sets the BackgroundStyle field's value.
func (s *FreeFormLayoutElement) SetBackgroundStyle(v *FreeFormLayoutElementBackgroundStyle) *FreeFormLayoutElement {
	s.BackgroundStyle = v
	return s
}

// SetBorderStyle sets the BorderStyle field's value.
func (s *FreeFormLayoutElement) SetBorderStyle(v *FreeFormLayoutElementBorderStyle) *FreeFormLayoutElement {
	s.BorderStyle = v
	return s
}

// SetElementId sets the ElementId field's value.
func (s *FreeFormLayoutElement) SetElementId(v string) *FreeFormLayoutElement {
	s.ElementId = &v
	return s
}

// SetElementType sets the ElementType field's value.
func (s *FreeFormLayoutElement) SetElementType(v string) *FreeFormLayoutElement {
	s.ElementType = &v
	return s
}

// SetHeight sets the Height field's value.
func (s *FreeFormLayoutElement) SetHeight(v string) *FreeFormLayoutElement {
	s.Height = &v
	return s
}

// SetLoadingAnimation sets the LoadingAnimation field's value.
func (s *FreeFormLayoutElement) SetLoadingAnimation(v *LoadingAnimation) *FreeFormLayoutElement {
	s.LoadingAnimation = v
	return s
}

// SetRenderingRules sets the RenderingRules field's value.
func (s *FreeFormLayoutElement) SetRenderingRules(v []*SheetElementRenderingRule) *FreeFormLayoutElement {
	s.RenderingRules = v
	return s
}

// SetSelectedBorderStyle sets the SelectedBorderStyle field's value.
func (s *FreeFormLayoutElement) SetSelectedBorderStyle(v *FreeFormLayoutElementBorderStyle) *FreeFormLayoutElement {
	s.SelectedBorderStyle = v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *FreeFormLayoutElement) SetVisibility(v string) *FreeFormLayoutElement {
	s.Visibility = &v
	return s
}

// SetWidth sets the Width field's value.
func (s *FreeFormLayoutElement) SetWidth(v string) *FreeFormLayoutElement {
	s.Width = &v
	return s
}

// SetXAxisLocation sets the XAxisLocation field's value.
func (s *FreeFormLayoutElement) SetXAxisLocation(v string) *FreeFormLayoutElement {
	s.XAxisLocation = &v
	return s
}

// SetYAxisLocation sets the YAxisLocation field's value.
func (s *FreeFormLayoutElement) SetYAxisLocation(v string) *FreeFormLayoutElement {
	s.YAxisLocation = &v
	return s
}

// The background style configuration of a free-form layout element.
type FreeFormLayoutElementBackgroundStyle struct {
	_ struct{} `type:"structure"`

	// The background color of a free-form layout element.
	Color *string `type:"string"`

	// The background visibility of a free-form layout element.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 FreeFormLayoutElementBackgroundStyle) 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 FreeFormLayoutElementBackgroundStyle) GoString() string {
	return s.String()
}

// SetColor sets the Color field's value.
func (s *FreeFormLayoutElementBackgroundStyle) SetColor(v string) *FreeFormLayoutElementBackgroundStyle {
	s.Color = &v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *FreeFormLayoutElementBackgroundStyle) SetVisibility(v string) *FreeFormLayoutElementBackgroundStyle {
	s.Visibility = &v
	return s
}

// The background style configuration of a free-form layout element.
type FreeFormLayoutElementBorderStyle struct {
	_ struct{} `type:"structure"`

	// The border color of a free-form layout element.
	Color *string `type:"string"`

	// The border visibility of a free-form layout element.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 FreeFormLayoutElementBorderStyle) 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 FreeFormLayoutElementBorderStyle) GoString() string {
	return s.String()
}

// SetColor sets the Color field's value.
func (s *FreeFormLayoutElementBorderStyle) SetColor(v string) *FreeFormLayoutElementBorderStyle {
	s.Color = &v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *FreeFormLayoutElementBorderStyle) SetVisibility(v string) *FreeFormLayoutElementBorderStyle {
	s.Visibility = &v
	return s
}

// The options that determine the sizing of the canvas used in a free-form layout.
type FreeFormLayoutScreenCanvasSizeOptions struct {
	_ struct{} `type:"structure"`

	// The width that the view port will be optimized for when the layout renders.
	//
	// OptimizedViewPortWidth is a required field
	OptimizedViewPortWidth *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FreeFormLayoutScreenCanvasSizeOptions) 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 FreeFormLayoutScreenCanvasSizeOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FreeFormLayoutScreenCanvasSizeOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FreeFormLayoutScreenCanvasSizeOptions"}
	if s.OptimizedViewPortWidth == nil {
		invalidParams.Add(request.NewErrParamRequired("OptimizedViewPortWidth"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetOptimizedViewPortWidth sets the OptimizedViewPortWidth field's value.
func (s *FreeFormLayoutScreenCanvasSizeOptions) SetOptimizedViewPortWidth(v string) *FreeFormLayoutScreenCanvasSizeOptions {
	s.OptimizedViewPortWidth = &v
	return s
}

// The free-form layout configuration of a section.
type FreeFormSectionLayoutConfiguration struct {
	_ struct{} `type:"structure"`

	// The elements that are included in the free-form layout.
	//
	// Elements is a required field
	Elements []*FreeFormLayoutElement `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 FreeFormSectionLayoutConfiguration) 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 FreeFormSectionLayoutConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FreeFormSectionLayoutConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FreeFormSectionLayoutConfiguration"}
	if s.Elements == nil {
		invalidParams.Add(request.NewErrParamRequired("Elements"))
	}
	if s.Elements != nil {
		for i, v := range s.Elements {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Elements", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetElements sets the Elements field's value.
func (s *FreeFormSectionLayoutConfiguration) SetElements(v []*FreeFormLayoutElement) *FreeFormSectionLayoutConfiguration {
	s.Elements = v
	return s
}

// The field well configuration of a FunnelChartVisual.
type FunnelChartAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The category field wells of a funnel chart. Values are grouped by category
	// fields.
	Category []*DimensionField `type:"list"`

	// The value field wells of a funnel chart. Values are aggregated based on categories.
	Values []*MeasureField `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 FunnelChartAggregatedFieldWells) 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 FunnelChartAggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FunnelChartAggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FunnelChartAggregatedFieldWells"}
	if s.Category != nil {
		for i, v := range s.Category {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Category", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Values != nil {
		for i, v := range s.Values {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Values", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategory sets the Category field's value.
func (s *FunnelChartAggregatedFieldWells) SetCategory(v []*DimensionField) *FunnelChartAggregatedFieldWells {
	s.Category = v
	return s
}

// SetValues sets the Values field's value.
func (s *FunnelChartAggregatedFieldWells) SetValues(v []*MeasureField) *FunnelChartAggregatedFieldWells {
	s.Values = v
	return s
}

// The configuration of a FunnelChartVisual.
type FunnelChartConfiguration struct {
	_ struct{} `type:"structure"`

	// The label options of the categories that are displayed in a FunnelChartVisual.
	CategoryLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The options that determine the presentation of the data labels.
	DataLabelOptions *FunnelChartDataLabelOptions `type:"structure"`

	// The field well configuration of a FunnelChartVisual.
	FieldWells *FunnelChartFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The sort configuration of a FunnelChartVisual.
	SortConfiguration *FunnelChartSortConfiguration `type:"structure"`

	// The tooltip configuration of a FunnelChartVisual.
	Tooltip *TooltipOptions `type:"structure"`

	// The label options for the values that are displayed in a FunnelChartVisual.
	ValueLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The visual palette configuration of a FunnelChartVisual.
	VisualPalette *VisualPalette `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 FunnelChartConfiguration) 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 FunnelChartConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FunnelChartConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FunnelChartConfiguration"}
	if s.CategoryLabelOptions != nil {
		if err := s.CategoryLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("CategoryLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.SortConfiguration != nil {
		if err := s.SortConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SortConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Tooltip != nil {
		if err := s.Tooltip.Validate(); err != nil {
			invalidParams.AddNested("Tooltip", err.(request.ErrInvalidParams))
		}
	}
	if s.ValueLabelOptions != nil {
		if err := s.ValueLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("ValueLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.VisualPalette != nil {
		if err := s.VisualPalette.Validate(); err != nil {
			invalidParams.AddNested("VisualPalette", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategoryLabelOptions sets the CategoryLabelOptions field's value.
func (s *FunnelChartConfiguration) SetCategoryLabelOptions(v *ChartAxisLabelOptions) *FunnelChartConfiguration {
	s.CategoryLabelOptions = v
	return s
}

// SetDataLabelOptions sets the DataLabelOptions field's value.
func (s *FunnelChartConfiguration) SetDataLabelOptions(v *FunnelChartDataLabelOptions) *FunnelChartConfiguration {
	s.DataLabelOptions = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *FunnelChartConfiguration) SetFieldWells(v *FunnelChartFieldWells) *FunnelChartConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *FunnelChartConfiguration) SetInteractions(v *VisualInteractionOptions) *FunnelChartConfiguration {
	s.Interactions = v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *FunnelChartConfiguration) SetSortConfiguration(v *FunnelChartSortConfiguration) *FunnelChartConfiguration {
	s.SortConfiguration = v
	return s
}

// SetTooltip sets the Tooltip field's value.
func (s *FunnelChartConfiguration) SetTooltip(v *TooltipOptions) *FunnelChartConfiguration {
	s.Tooltip = v
	return s
}

// SetValueLabelOptions sets the ValueLabelOptions field's value.
func (s *FunnelChartConfiguration) SetValueLabelOptions(v *ChartAxisLabelOptions) *FunnelChartConfiguration {
	s.ValueLabelOptions = v
	return s
}

// SetVisualPalette sets the VisualPalette field's value.
func (s *FunnelChartConfiguration) SetVisualPalette(v *VisualPalette) *FunnelChartConfiguration {
	s.VisualPalette = v
	return s
}

// The options that determine the presentation of the data labels.
type FunnelChartDataLabelOptions struct {
	_ struct{} `type:"structure"`

	// The visibility of the category labels within the data labels.
	CategoryLabelVisibility *string `type:"string" enum:"Visibility"`

	// The color of the data label text.
	LabelColor *string `type:"string"`

	// The font configuration for the data labels.
	//
	// Only the FontSize attribute of the font configuration is used for data labels.
	LabelFontConfiguration *FontConfiguration `type:"structure"`

	// Determines the style of the metric labels.
	MeasureDataLabelStyle *string `type:"string" enum:"FunnelChartMeasureDataLabelStyle"`

	// The visibility of the measure labels within the data labels.
	MeasureLabelVisibility *string `type:"string" enum:"Visibility"`

	// Determines the positioning of the data label relative to a section of the
	// funnel.
	Position *string `type:"string" enum:"DataLabelPosition"`

	// The visibility option that determines if data labels are displayed.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 FunnelChartDataLabelOptions) 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 FunnelChartDataLabelOptions) GoString() string {
	return s.String()
}

// SetCategoryLabelVisibility sets the CategoryLabelVisibility field's value.
func (s *FunnelChartDataLabelOptions) SetCategoryLabelVisibility(v string) *FunnelChartDataLabelOptions {
	s.CategoryLabelVisibility = &v
	return s
}

// SetLabelColor sets the LabelColor field's value.
func (s *FunnelChartDataLabelOptions) SetLabelColor(v string) *FunnelChartDataLabelOptions {
	s.LabelColor = &v
	return s
}

// SetLabelFontConfiguration sets the LabelFontConfiguration field's value.
func (s *FunnelChartDataLabelOptions) SetLabelFontConfiguration(v *FontConfiguration) *FunnelChartDataLabelOptions {
	s.LabelFontConfiguration = v
	return s
}

// SetMeasureDataLabelStyle sets the MeasureDataLabelStyle field's value.
func (s *FunnelChartDataLabelOptions) SetMeasureDataLabelStyle(v string) *FunnelChartDataLabelOptions {
	s.MeasureDataLabelStyle = &v
	return s
}

// SetMeasureLabelVisibility sets the MeasureLabelVisibility field's value.
func (s *FunnelChartDataLabelOptions) SetMeasureLabelVisibility(v string) *FunnelChartDataLabelOptions {
	s.MeasureLabelVisibility = &v
	return s
}

// SetPosition sets the Position field's value.
func (s *FunnelChartDataLabelOptions) SetPosition(v string) *FunnelChartDataLabelOptions {
	s.Position = &v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *FunnelChartDataLabelOptions) SetVisibility(v string) *FunnelChartDataLabelOptions {
	s.Visibility = &v
	return s
}

// The field well configuration of a FunnelChartVisual.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type FunnelChartFieldWells struct {
	_ struct{} `type:"structure"`

	// The field well configuration of a FunnelChartVisual.
	FunnelChartAggregatedFieldWells *FunnelChartAggregatedFieldWells `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 FunnelChartFieldWells) 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 FunnelChartFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FunnelChartFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FunnelChartFieldWells"}
	if s.FunnelChartAggregatedFieldWells != nil {
		if err := s.FunnelChartAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("FunnelChartAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFunnelChartAggregatedFieldWells sets the FunnelChartAggregatedFieldWells field's value.
func (s *FunnelChartFieldWells) SetFunnelChartAggregatedFieldWells(v *FunnelChartAggregatedFieldWells) *FunnelChartFieldWells {
	s.FunnelChartAggregatedFieldWells = v
	return s
}

// The sort configuration of a FunnelChartVisual.
type FunnelChartSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The limit on the number of categories displayed.
	CategoryItemsLimit *ItemsLimitConfiguration `type:"structure"`

	// The sort configuration of the category fields.
	CategorySort []*FieldSortOptions `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 FunnelChartSortConfiguration) 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 FunnelChartSortConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FunnelChartSortConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FunnelChartSortConfiguration"}
	if s.CategorySort != nil {
		for i, v := range s.CategorySort {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CategorySort", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategoryItemsLimit sets the CategoryItemsLimit field's value.
func (s *FunnelChartSortConfiguration) SetCategoryItemsLimit(v *ItemsLimitConfiguration) *FunnelChartSortConfiguration {
	s.CategoryItemsLimit = v
	return s
}

// SetCategorySort sets the CategorySort field's value.
func (s *FunnelChartSortConfiguration) SetCategorySort(v []*FieldSortOptions) *FunnelChartSortConfiguration {
	s.CategorySort = v
	return s
}

// A funnel chart.
//
// For more information, see Using funnel charts (https://docs.aws.amazon.com/quicksight/latest/user/funnel-visual-content.html)
// in the Amazon QuickSight User Guide.
type FunnelChartVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration of a FunnelChartVisual.
	ChartConfiguration *FunnelChartConfiguration `type:"structure"`

	// The column hierarchy that is used during drill-downs and drill-ups.
	ColumnHierarchies []*ColumnHierarchy `type:"list"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers..
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FunnelChartVisual) 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 FunnelChartVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FunnelChartVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FunnelChartVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ColumnHierarchies != nil {
		for i, v := range s.ColumnHierarchies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnHierarchies", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *FunnelChartVisual) SetActions(v []*VisualCustomAction) *FunnelChartVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *FunnelChartVisual) SetChartConfiguration(v *FunnelChartConfiguration) *FunnelChartVisual {
	s.ChartConfiguration = v
	return s
}

// SetColumnHierarchies sets the ColumnHierarchies field's value.
func (s *FunnelChartVisual) SetColumnHierarchies(v []*ColumnHierarchy) *FunnelChartVisual {
	s.ColumnHierarchies = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *FunnelChartVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *FunnelChartVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *FunnelChartVisual) SetTitle(v *VisualTitleLabelOptions) *FunnelChartVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *FunnelChartVisual) SetVisualId(v string) *FunnelChartVisual {
	s.VisualId = &v
	return s
}

// The options that determine the presentation of the arc of a GaugeChartVisual.
type GaugeChartArcConditionalFormatting struct {
	_ struct{} `type:"structure"`

	// The conditional formatting of the arc foreground color.
	ForegroundColor *ConditionalFormattingColor `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 GaugeChartArcConditionalFormatting) 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 GaugeChartArcConditionalFormatting) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GaugeChartArcConditionalFormatting) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GaugeChartArcConditionalFormatting"}
	if s.ForegroundColor != nil {
		if err := s.ForegroundColor.Validate(); err != nil {
			invalidParams.AddNested("ForegroundColor", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetForegroundColor sets the ForegroundColor field's value.
func (s *GaugeChartArcConditionalFormatting) SetForegroundColor(v *ConditionalFormattingColor) *GaugeChartArcConditionalFormatting {
	s.ForegroundColor = v
	return s
}

// The color configuration of a GaugeChartVisual.
type GaugeChartColorConfiguration struct {
	_ struct{} `type:"structure"`

	// The background color configuration of a GaugeChartVisual.
	BackgroundColor *string `type:"string"`

	// The foreground color configuration of a GaugeChartVisual.
	ForegroundColor *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GaugeChartColorConfiguration) 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 GaugeChartColorConfiguration) GoString() string {
	return s.String()
}

// SetBackgroundColor sets the BackgroundColor field's value.
func (s *GaugeChartColorConfiguration) SetBackgroundColor(v string) *GaugeChartColorConfiguration {
	s.BackgroundColor = &v
	return s
}

// SetForegroundColor sets the ForegroundColor field's value.
func (s *GaugeChartColorConfiguration) SetForegroundColor(v string) *GaugeChartColorConfiguration {
	s.ForegroundColor = &v
	return s
}

// The conditional formatting of a GaugeChartVisual.
type GaugeChartConditionalFormatting struct {
	_ struct{} `type:"structure"`

	// Conditional formatting options of a GaugeChartVisual.
	ConditionalFormattingOptions []*GaugeChartConditionalFormattingOption `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 GaugeChartConditionalFormatting) 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 GaugeChartConditionalFormatting) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GaugeChartConditionalFormatting) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GaugeChartConditionalFormatting"}
	if s.ConditionalFormattingOptions != nil {
		for i, v := range s.ConditionalFormattingOptions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ConditionalFormattingOptions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConditionalFormattingOptions sets the ConditionalFormattingOptions field's value.
func (s *GaugeChartConditionalFormatting) SetConditionalFormattingOptions(v []*GaugeChartConditionalFormattingOption) *GaugeChartConditionalFormatting {
	s.ConditionalFormattingOptions = v
	return s
}

// Conditional formatting options of a GaugeChartVisual.
type GaugeChartConditionalFormattingOption struct {
	_ struct{} `type:"structure"`

	// The options that determine the presentation of the arc of a GaugeChartVisual.
	Arc *GaugeChartArcConditionalFormatting `type:"structure"`

	// The conditional formatting for the primary value of a GaugeChartVisual.
	PrimaryValue *GaugeChartPrimaryValueConditionalFormatting `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 GaugeChartConditionalFormattingOption) 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 GaugeChartConditionalFormattingOption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GaugeChartConditionalFormattingOption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GaugeChartConditionalFormattingOption"}
	if s.Arc != nil {
		if err := s.Arc.Validate(); err != nil {
			invalidParams.AddNested("Arc", err.(request.ErrInvalidParams))
		}
	}
	if s.PrimaryValue != nil {
		if err := s.PrimaryValue.Validate(); err != nil {
			invalidParams.AddNested("PrimaryValue", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetArc sets the Arc field's value.
func (s *GaugeChartConditionalFormattingOption) SetArc(v *GaugeChartArcConditionalFormatting) *GaugeChartConditionalFormattingOption {
	s.Arc = v
	return s
}

// SetPrimaryValue sets the PrimaryValue field's value.
func (s *GaugeChartConditionalFormattingOption) SetPrimaryValue(v *GaugeChartPrimaryValueConditionalFormatting) *GaugeChartConditionalFormattingOption {
	s.PrimaryValue = v
	return s
}

// The configuration of a GaugeChartVisual.
type GaugeChartConfiguration struct {
	_ struct{} `type:"structure"`

	// The color configuration of a GaugeChartVisual.
	ColorConfiguration *GaugeChartColorConfiguration `type:"structure"`

	// The data label configuration of a GaugeChartVisual.
	DataLabels *DataLabelOptions `type:"structure"`

	// The field well configuration of a GaugeChartVisual.
	FieldWells *GaugeChartFieldWells `type:"structure"`

	// The options that determine the presentation of the GaugeChartVisual.
	GaugeChartOptions *GaugeChartOptions `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The tooltip configuration of a GaugeChartVisual.
	TooltipOptions *TooltipOptions `type:"structure"`

	// The visual palette configuration of a GaugeChartVisual.
	VisualPalette *VisualPalette `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 GaugeChartConfiguration) 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 GaugeChartConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GaugeChartConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GaugeChartConfiguration"}
	if s.DataLabels != nil {
		if err := s.DataLabels.Validate(); err != nil {
			invalidParams.AddNested("DataLabels", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.GaugeChartOptions != nil {
		if err := s.GaugeChartOptions.Validate(); err != nil {
			invalidParams.AddNested("GaugeChartOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.TooltipOptions != nil {
		if err := s.TooltipOptions.Validate(); err != nil {
			invalidParams.AddNested("TooltipOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.VisualPalette != nil {
		if err := s.VisualPalette.Validate(); err != nil {
			invalidParams.AddNested("VisualPalette", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColorConfiguration sets the ColorConfiguration field's value.
func (s *GaugeChartConfiguration) SetColorConfiguration(v *GaugeChartColorConfiguration) *GaugeChartConfiguration {
	s.ColorConfiguration = v
	return s
}

// SetDataLabels sets the DataLabels field's value.
func (s *GaugeChartConfiguration) SetDataLabels(v *DataLabelOptions) *GaugeChartConfiguration {
	s.DataLabels = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *GaugeChartConfiguration) SetFieldWells(v *GaugeChartFieldWells) *GaugeChartConfiguration {
	s.FieldWells = v
	return s
}

// SetGaugeChartOptions sets the GaugeChartOptions field's value.
func (s *GaugeChartConfiguration) SetGaugeChartOptions(v *GaugeChartOptions) *GaugeChartConfiguration {
	s.GaugeChartOptions = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *GaugeChartConfiguration) SetInteractions(v *VisualInteractionOptions) *GaugeChartConfiguration {
	s.Interactions = v
	return s
}

// SetTooltipOptions sets the TooltipOptions field's value.
func (s *GaugeChartConfiguration) SetTooltipOptions(v *TooltipOptions) *GaugeChartConfiguration {
	s.TooltipOptions = v
	return s
}

// SetVisualPalette sets the VisualPalette field's value.
func (s *GaugeChartConfiguration) SetVisualPalette(v *VisualPalette) *GaugeChartConfiguration {
	s.VisualPalette = v
	return s
}

// The field well configuration of a GaugeChartVisual.
type GaugeChartFieldWells struct {
	_ struct{} `type:"structure"`

	// The target value field wells of a GaugeChartVisual.
	TargetValues []*MeasureField `type:"list"`

	// The value field wells of a GaugeChartVisual.
	Values []*MeasureField `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 GaugeChartFieldWells) 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 GaugeChartFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GaugeChartFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GaugeChartFieldWells"}
	if s.TargetValues != nil {
		for i, v := range s.TargetValues {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetValues", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Values != nil {
		for i, v := range s.Values {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Values", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTargetValues sets the TargetValues field's value.
func (s *GaugeChartFieldWells) SetTargetValues(v []*MeasureField) *GaugeChartFieldWells {
	s.TargetValues = v
	return s
}

// SetValues sets the Values field's value.
func (s *GaugeChartFieldWells) SetValues(v []*MeasureField) *GaugeChartFieldWells {
	s.Values = v
	return s
}

// The options that determine the presentation of the GaugeChartVisual.
type GaugeChartOptions struct {
	_ struct{} `type:"structure"`

	// The arc configuration of a GaugeChartVisual.
	Arc *ArcConfiguration `type:"structure"`

	// The arc axis configuration of a GaugeChartVisual.
	ArcAxis *ArcAxisConfiguration `type:"structure"`

	// The comparison configuration of a GaugeChartVisual.
	Comparison *ComparisonConfiguration `type:"structure"`

	// The options that determine the primary value display type.
	PrimaryValueDisplayType *string `type:"string" enum:"PrimaryValueDisplayType"`

	// The options that determine the primary value font configuration.
	PrimaryValueFontConfiguration *FontConfiguration `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 GaugeChartOptions) 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 GaugeChartOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GaugeChartOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GaugeChartOptions"}
	if s.Comparison != nil {
		if err := s.Comparison.Validate(); err != nil {
			invalidParams.AddNested("Comparison", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetArc sets the Arc field's value.
func (s *GaugeChartOptions) SetArc(v *ArcConfiguration) *GaugeChartOptions {
	s.Arc = v
	return s
}

// SetArcAxis sets the ArcAxis field's value.
func (s *GaugeChartOptions) SetArcAxis(v *ArcAxisConfiguration) *GaugeChartOptions {
	s.ArcAxis = v
	return s
}

// SetComparison sets the Comparison field's value.
func (s *GaugeChartOptions) SetComparison(v *ComparisonConfiguration) *GaugeChartOptions {
	s.Comparison = v
	return s
}

// SetPrimaryValueDisplayType sets the PrimaryValueDisplayType field's value.
func (s *GaugeChartOptions) SetPrimaryValueDisplayType(v string) *GaugeChartOptions {
	s.PrimaryValueDisplayType = &v
	return s
}

// SetPrimaryValueFontConfiguration sets the PrimaryValueFontConfiguration field's value.
func (s *GaugeChartOptions) SetPrimaryValueFontConfiguration(v *FontConfiguration) *GaugeChartOptions {
	s.PrimaryValueFontConfiguration = v
	return s
}

// The conditional formatting for the primary value of a GaugeChartVisual.
type GaugeChartPrimaryValueConditionalFormatting struct {
	_ struct{} `type:"structure"`

	// The conditional formatting of the primary value icon.
	Icon *ConditionalFormattingIcon `type:"structure"`

	// The conditional formatting of the primary value text color.
	TextColor *ConditionalFormattingColor `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 GaugeChartPrimaryValueConditionalFormatting) 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 GaugeChartPrimaryValueConditionalFormatting) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GaugeChartPrimaryValueConditionalFormatting) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GaugeChartPrimaryValueConditionalFormatting"}
	if s.Icon != nil {
		if err := s.Icon.Validate(); err != nil {
			invalidParams.AddNested("Icon", err.(request.ErrInvalidParams))
		}
	}
	if s.TextColor != nil {
		if err := s.TextColor.Validate(); err != nil {
			invalidParams.AddNested("TextColor", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIcon sets the Icon field's value.
func (s *GaugeChartPrimaryValueConditionalFormatting) SetIcon(v *ConditionalFormattingIcon) *GaugeChartPrimaryValueConditionalFormatting {
	s.Icon = v
	return s
}

// SetTextColor sets the TextColor field's value.
func (s *GaugeChartPrimaryValueConditionalFormatting) SetTextColor(v *ConditionalFormattingColor) *GaugeChartPrimaryValueConditionalFormatting {
	s.TextColor = v
	return s
}

// A gauge chart.
//
// For more information, see Using gauge charts (https://docs.aws.amazon.com/quicksight/latest/user/gauge-chart.html)
// in the Amazon QuickSight User Guide.
type GaugeChartVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration of a GaugeChartVisual.
	ChartConfiguration *GaugeChartConfiguration `type:"structure"`

	// The conditional formatting of a GaugeChartVisual.
	ConditionalFormatting *GaugeChartConditionalFormatting `type:"structure"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers.
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GaugeChartVisual) 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 GaugeChartVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GaugeChartVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GaugeChartVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ConditionalFormatting != nil {
		if err := s.ConditionalFormatting.Validate(); err != nil {
			invalidParams.AddNested("ConditionalFormatting", err.(request.ErrInvalidParams))
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *GaugeChartVisual) SetActions(v []*VisualCustomAction) *GaugeChartVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *GaugeChartVisual) SetChartConfiguration(v *GaugeChartConfiguration) *GaugeChartVisual {
	s.ChartConfiguration = v
	return s
}

// SetConditionalFormatting sets the ConditionalFormatting field's value.
func (s *GaugeChartVisual) SetConditionalFormatting(v *GaugeChartConditionalFormatting) *GaugeChartVisual {
	s.ConditionalFormatting = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *GaugeChartVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *GaugeChartVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *GaugeChartVisual) SetTitle(v *VisualTitleLabelOptions) *GaugeChartVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *GaugeChartVisual) SetVisualId(v string) *GaugeChartVisual {
	s.VisualId = &v
	return s
}

type GenerateEmbedUrlForAnonymousUserInput struct {
	_ struct{} `type:"structure"`

	// The domains that you want to add to the allow list for access to the generated
	// URL that is then embedded. This optional parameter overrides the static domains
	// that are configured in the Manage QuickSight menu in the Amazon QuickSight
	// console. Instead, it allows only the domains that you include in this parameter.
	// You can list up to three domains or subdomains in each API call.
	//
	// To include all subdomains under a specific domain to the allow list, use
	// *. For example, https://*.sapp.amazon.com includes all subdomains under https://sapp.amazon.com.
	AllowedDomains []*string `type:"list"`

	// The Amazon Resource Names (ARNs) for the Amazon QuickSight resources that
	// the user is authorized to access during the lifetime of the session.
	//
	// If you choose Dashboard embedding experience, pass the list of dashboard
	// ARNs in the account that you want the user to be able to view.
	//
	// If you want to make changes to the theme of your embedded content, pass a
	// list of theme ARNs that the anonymous users need access to.
	//
	// Currently, you can pass up to 25 theme ARNs in each API call.
	//
	// AuthorizedResourceArns is a required field
	AuthorizedResourceArns []*string `type:"list" required:"true"`

	// The ID for the Amazon Web Services account that contains the dashboard that
	// you're embedding.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The configuration of the experience that you are embedding.
	//
	// ExperienceConfiguration is a required field
	ExperienceConfiguration *AnonymousUserEmbeddingExperienceConfiguration `type:"structure" required:"true"`

	// The Amazon QuickSight namespace that the anonymous user virtually belongs
	// to. If you are not using an Amazon QuickSight custom namespace, set this
	// to default.
	//
	// Namespace is a required field
	Namespace *string `type:"string" required:"true"`

	// How many minutes the session is valid. The session lifetime must be in [15-600]
	// minutes range.
	SessionLifetimeInMinutes *int64 `min:"15" type:"long"`

	// The session tags used for row-level security. Before you use this parameter,
	// make sure that you have configured the relevant datasets using the DataSet$RowLevelPermissionTagConfiguration
	// parameter so that session tags can be used to provide row-level security.
	//
	// These are not the tags used for the Amazon Web Services resource tagging
	// feature. For more information, see Using Row-Level Security (RLS) with Tags
	// (https://docs.aws.amazon.com/quicksight/latest/user/quicksight-dev-rls-tags.html)in
	// the Amazon QuickSight User Guide.
	SessionTags []*SessionTag `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GenerateEmbedUrlForAnonymousUserInput) 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 GenerateEmbedUrlForAnonymousUserInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GenerateEmbedUrlForAnonymousUserInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GenerateEmbedUrlForAnonymousUserInput"}
	if s.AuthorizedResourceArns == nil {
		invalidParams.Add(request.NewErrParamRequired("AuthorizedResourceArns"))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.ExperienceConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("ExperienceConfiguration"))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.SessionLifetimeInMinutes != nil && *s.SessionLifetimeInMinutes < 15 {
		invalidParams.Add(request.NewErrParamMinValue("SessionLifetimeInMinutes", 15))
	}
	if s.SessionTags != nil && len(s.SessionTags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SessionTags", 1))
	}
	if s.ExperienceConfiguration != nil {
		if err := s.ExperienceConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ExperienceConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.SessionTags != nil {
		for i, v := range s.SessionTags {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SessionTags", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllowedDomains sets the AllowedDomains field's value.
func (s *GenerateEmbedUrlForAnonymousUserInput) SetAllowedDomains(v []*string) *GenerateEmbedUrlForAnonymousUserInput {
	s.AllowedDomains = v
	return s
}

// SetAuthorizedResourceArns sets the AuthorizedResourceArns field's value.
func (s *GenerateEmbedUrlForAnonymousUserInput) SetAuthorizedResourceArns(v []*string) *GenerateEmbedUrlForAnonymousUserInput {
	s.AuthorizedResourceArns = v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *GenerateEmbedUrlForAnonymousUserInput) SetAwsAccountId(v string) *GenerateEmbedUrlForAnonymousUserInput {
	s.AwsAccountId = &v
	return s
}

// SetExperienceConfiguration sets the ExperienceConfiguration field's value.
func (s *GenerateEmbedUrlForAnonymousUserInput) SetExperienceConfiguration(v *AnonymousUserEmbeddingExperienceConfiguration) *GenerateEmbedUrlForAnonymousUserInput {
	s.ExperienceConfiguration = v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *GenerateEmbedUrlForAnonymousUserInput) SetNamespace(v string) *GenerateEmbedUrlForAnonymousUserInput {
	s.Namespace = &v
	return s
}

// SetSessionLifetimeInMinutes sets the SessionLifetimeInMinutes field's value.
func (s *GenerateEmbedUrlForAnonymousUserInput) SetSessionLifetimeInMinutes(v int64) *GenerateEmbedUrlForAnonymousUserInput {
	s.SessionLifetimeInMinutes = &v
	return s
}

// SetSessionTags sets the SessionTags field's value.
func (s *GenerateEmbedUrlForAnonymousUserInput) SetSessionTags(v []*SessionTag) *GenerateEmbedUrlForAnonymousUserInput {
	s.SessionTags = v
	return s
}

type GenerateEmbedUrlForAnonymousUserOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) to use for the anonymous Amazon QuickSight
	// user.
	//
	// AnonymousUserArn is a required field
	AnonymousUserArn *string `type:"string" required:"true"`

	// The embed URL for the dashboard.
	//
	// EmbedUrl is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GenerateEmbedUrlForAnonymousUserOutput's
	// String and GoString methods.
	//
	// EmbedUrl is a required field
	EmbedUrl *string `type:"string" required:"true" sensitive:"true"`

	// The Amazon Web Services request ID for this operation.
	//
	// RequestId is a required field
	RequestId *string `type:"string" required:"true"`

	// The HTTP status of the request.
	//
	// Status is a required field
	Status *int64 `location:"statusCode" type:"integer" 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 GenerateEmbedUrlForAnonymousUserOutput) 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 GenerateEmbedUrlForAnonymousUserOutput) GoString() string {
	return s.String()
}

// SetAnonymousUserArn sets the AnonymousUserArn field's value.
func (s *GenerateEmbedUrlForAnonymousUserOutput) SetAnonymousUserArn(v string) *GenerateEmbedUrlForAnonymousUserOutput {
	s.AnonymousUserArn = &v
	return s
}

// SetEmbedUrl sets the EmbedUrl field's value.
func (s *GenerateEmbedUrlForAnonymousUserOutput) SetEmbedUrl(v string) *GenerateEmbedUrlForAnonymousUserOutput {
	s.EmbedUrl = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GenerateEmbedUrlForAnonymousUserOutput) SetRequestId(v string) *GenerateEmbedUrlForAnonymousUserOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GenerateEmbedUrlForAnonymousUserOutput) SetStatus(v int64) *GenerateEmbedUrlForAnonymousUserOutput {
	s.Status = &v
	return s
}

type GenerateEmbedUrlForRegisteredUserInput struct {
	_ struct{} `type:"structure"`

	// The domains that you want to add to the allow list for access to the generated
	// URL that is then embedded. This optional parameter overrides the static domains
	// that are configured in the Manage QuickSight menu in the Amazon QuickSight
	// console. Instead, it allows only the domains that you include in this parameter.
	// You can list up to three domains or subdomains in each API call.
	//
	// To include all subdomains under a specific domain to the allow list, use
	// *. For example, https://*.sapp.amazon.com includes all subdomains under https://sapp.amazon.com.
	AllowedDomains []*string `type:"list"`

	// The ID for the Amazon Web Services account that contains the dashboard that
	// you're embedding.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The experience that you want to embed. For registered users, you can embed
	// Amazon QuickSight dashboards, Amazon QuickSight visuals, the Amazon QuickSight
	// Q search bar, the Amazon QuickSight Generative Q&A experience, or the entire
	// Amazon QuickSight console.
	//
	// ExperienceConfiguration is a required field
	ExperienceConfiguration *RegisteredUserEmbeddingExperienceConfiguration `type:"structure" required:"true"`

	// How many minutes the session is valid. The session lifetime must be in [15-600]
	// minutes range.
	SessionLifetimeInMinutes *int64 `min:"15" type:"long"`

	// The Amazon Resource Name for the registered user.
	//
	// UserArn is a required field
	UserArn *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GenerateEmbedUrlForRegisteredUserInput) 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 GenerateEmbedUrlForRegisteredUserInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GenerateEmbedUrlForRegisteredUserInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GenerateEmbedUrlForRegisteredUserInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.ExperienceConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("ExperienceConfiguration"))
	}
	if s.SessionLifetimeInMinutes != nil && *s.SessionLifetimeInMinutes < 15 {
		invalidParams.Add(request.NewErrParamMinValue("SessionLifetimeInMinutes", 15))
	}
	if s.UserArn == nil {
		invalidParams.Add(request.NewErrParamRequired("UserArn"))
	}
	if s.ExperienceConfiguration != nil {
		if err := s.ExperienceConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ExperienceConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllowedDomains sets the AllowedDomains field's value.
func (s *GenerateEmbedUrlForRegisteredUserInput) SetAllowedDomains(v []*string) *GenerateEmbedUrlForRegisteredUserInput {
	s.AllowedDomains = v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *GenerateEmbedUrlForRegisteredUserInput) SetAwsAccountId(v string) *GenerateEmbedUrlForRegisteredUserInput {
	s.AwsAccountId = &v
	return s
}

// SetExperienceConfiguration sets the ExperienceConfiguration field's value.
func (s *GenerateEmbedUrlForRegisteredUserInput) SetExperienceConfiguration(v *RegisteredUserEmbeddingExperienceConfiguration) *GenerateEmbedUrlForRegisteredUserInput {
	s.ExperienceConfiguration = v
	return s
}

// SetSessionLifetimeInMinutes sets the SessionLifetimeInMinutes field's value.
func (s *GenerateEmbedUrlForRegisteredUserInput) SetSessionLifetimeInMinutes(v int64) *GenerateEmbedUrlForRegisteredUserInput {
	s.SessionLifetimeInMinutes = &v
	return s
}

// SetUserArn sets the UserArn field's value.
func (s *GenerateEmbedUrlForRegisteredUserInput) SetUserArn(v string) *GenerateEmbedUrlForRegisteredUserInput {
	s.UserArn = &v
	return s
}

type GenerateEmbedUrlForRegisteredUserOutput struct {
	_ struct{} `type:"structure"`

	// The embed URL for the Amazon QuickSight dashboard, visual, Q search bar,
	// Generative Q&A experience, or console.
	//
	// EmbedUrl is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GenerateEmbedUrlForRegisteredUserOutput's
	// String and GoString methods.
	//
	// EmbedUrl is a required field
	EmbedUrl *string `type:"string" required:"true" sensitive:"true"`

	// The Amazon Web Services request ID for this operation.
	//
	// RequestId is a required field
	RequestId *string `type:"string" required:"true"`

	// The HTTP status of the request.
	//
	// Status is a required field
	Status *int64 `location:"statusCode" type:"integer" 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 GenerateEmbedUrlForRegisteredUserOutput) 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 GenerateEmbedUrlForRegisteredUserOutput) GoString() string {
	return s.String()
}

// SetEmbedUrl sets the EmbedUrl field's value.
func (s *GenerateEmbedUrlForRegisteredUserOutput) SetEmbedUrl(v string) *GenerateEmbedUrlForRegisteredUserOutput {
	s.EmbedUrl = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GenerateEmbedUrlForRegisteredUserOutput) SetRequestId(v string) *GenerateEmbedUrlForRegisteredUserOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GenerateEmbedUrlForRegisteredUserOutput) SetStatus(v int64) *GenerateEmbedUrlForRegisteredUserOutput {
	s.Status = &v
	return s
}

// Geospatial column group that denotes a hierarchy.
type GeoSpatialColumnGroup struct {
	_ struct{} `type:"structure"`

	// Columns in this hierarchy.
	//
	// Columns is a required field
	Columns []*string `min:"1" type:"list" required:"true"`

	// Country code.
	CountryCode *string `type:"string" enum:"GeoSpatialCountryCode"`

	// A display name for the hierarchy.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GeoSpatialColumnGroup) 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 GeoSpatialColumnGroup) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GeoSpatialColumnGroup) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GeoSpatialColumnGroup"}
	if s.Columns == nil {
		invalidParams.Add(request.NewErrParamRequired("Columns"))
	}
	if s.Columns != nil && len(s.Columns) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Columns", 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
}

// SetColumns sets the Columns field's value.
func (s *GeoSpatialColumnGroup) SetColumns(v []*string) *GeoSpatialColumnGroup {
	s.Columns = v
	return s
}

// SetCountryCode sets the CountryCode field's value.
func (s *GeoSpatialColumnGroup) SetCountryCode(v string) *GeoSpatialColumnGroup {
	s.CountryCode = &v
	return s
}

// SetName sets the Name field's value.
func (s *GeoSpatialColumnGroup) SetName(v string) *GeoSpatialColumnGroup {
	s.Name = &v
	return s
}

// The bound options (north, south, west, east) of the geospatial window options.
type GeospatialCoordinateBounds struct {
	_ struct{} `type:"structure"`

	// The longitude of the east bound of the geospatial coordinate bounds.
	//
	// East is a required field
	East *float64 `type:"double" required:"true"`

	// The latitude of the north bound of the geospatial coordinate bounds.
	//
	// North is a required field
	North *float64 `type:"double" required:"true"`

	// The latitude of the south bound of the geospatial coordinate bounds.
	//
	// South is a required field
	South *float64 `type:"double" required:"true"`

	// The longitude of the west bound of the geospatial coordinate bounds.
	//
	// West is a required field
	West *float64 `type:"double" 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 GeospatialCoordinateBounds) 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 GeospatialCoordinateBounds) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GeospatialCoordinateBounds) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GeospatialCoordinateBounds"}
	if s.East == nil {
		invalidParams.Add(request.NewErrParamRequired("East"))
	}
	if s.East != nil && *s.East < -1800 {
		invalidParams.Add(request.NewErrParamMinValue("East", -1800))
	}
	if s.North == nil {
		invalidParams.Add(request.NewErrParamRequired("North"))
	}
	if s.North != nil && *s.North < -90 {
		invalidParams.Add(request.NewErrParamMinValue("North", -90))
	}
	if s.South == nil {
		invalidParams.Add(request.NewErrParamRequired("South"))
	}
	if s.South != nil && *s.South < -90 {
		invalidParams.Add(request.NewErrParamMinValue("South", -90))
	}
	if s.West == nil {
		invalidParams.Add(request.NewErrParamRequired("West"))
	}
	if s.West != nil && *s.West < -1800 {
		invalidParams.Add(request.NewErrParamMinValue("West", -1800))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEast sets the East field's value.
func (s *GeospatialCoordinateBounds) SetEast(v float64) *GeospatialCoordinateBounds {
	s.East = &v
	return s
}

// SetNorth sets the North field's value.
func (s *GeospatialCoordinateBounds) SetNorth(v float64) *GeospatialCoordinateBounds {
	s.North = &v
	return s
}

// SetSouth sets the South field's value.
func (s *GeospatialCoordinateBounds) SetSouth(v float64) *GeospatialCoordinateBounds {
	s.South = &v
	return s
}

// SetWest sets the West field's value.
func (s *GeospatialCoordinateBounds) SetWest(v float64) *GeospatialCoordinateBounds {
	s.West = &v
	return s
}

// The color scale specification for the heatmap point style.
type GeospatialHeatmapColorScale struct {
	_ struct{} `type:"structure"`

	// The list of colors to be used in heatmap point style.
	Colors []*GeospatialHeatmapDataColor `min:"2" 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 GeospatialHeatmapColorScale) 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 GeospatialHeatmapColorScale) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GeospatialHeatmapColorScale) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GeospatialHeatmapColorScale"}
	if s.Colors != nil && len(s.Colors) < 2 {
		invalidParams.Add(request.NewErrParamMinLen("Colors", 2))
	}
	if s.Colors != nil {
		for i, v := range s.Colors {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Colors", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColors sets the Colors field's value.
func (s *GeospatialHeatmapColorScale) SetColors(v []*GeospatialHeatmapDataColor) *GeospatialHeatmapColorScale {
	s.Colors = v
	return s
}

// The heatmap configuration of the geospatial point style.
type GeospatialHeatmapConfiguration struct {
	_ struct{} `type:"structure"`

	// The color scale specification for the heatmap point style.
	HeatmapColor *GeospatialHeatmapColorScale `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 GeospatialHeatmapConfiguration) 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 GeospatialHeatmapConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GeospatialHeatmapConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GeospatialHeatmapConfiguration"}
	if s.HeatmapColor != nil {
		if err := s.HeatmapColor.Validate(); err != nil {
			invalidParams.AddNested("HeatmapColor", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHeatmapColor sets the HeatmapColor field's value.
func (s *GeospatialHeatmapConfiguration) SetHeatmapColor(v *GeospatialHeatmapColorScale) *GeospatialHeatmapConfiguration {
	s.HeatmapColor = v
	return s
}

// The color to be used in the heatmap point style.
type GeospatialHeatmapDataColor struct {
	_ struct{} `type:"structure"`

	// The hex color to be used in the heatmap point style.
	//
	// Color is a required field
	Color *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GeospatialHeatmapDataColor) 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 GeospatialHeatmapDataColor) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GeospatialHeatmapDataColor) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GeospatialHeatmapDataColor"}
	if s.Color == nil {
		invalidParams.Add(request.NewErrParamRequired("Color"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColor sets the Color field's value.
func (s *GeospatialHeatmapDataColor) SetColor(v string) *GeospatialHeatmapDataColor {
	s.Color = &v
	return s
}

// The aggregated field wells for a geospatial map.
type GeospatialMapAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The color field wells of a geospatial map.
	Colors []*DimensionField `type:"list"`

	// The geospatial field wells of a geospatial map. Values are grouped by geospatial
	// fields.
	Geospatial []*DimensionField `type:"list"`

	// The size field wells of a geospatial map. Values are aggregated based on
	// geospatial fields.
	Values []*MeasureField `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 GeospatialMapAggregatedFieldWells) 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 GeospatialMapAggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GeospatialMapAggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GeospatialMapAggregatedFieldWells"}
	if s.Colors != nil {
		for i, v := range s.Colors {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Colors", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Geospatial != nil {
		for i, v := range s.Geospatial {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Geospatial", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Values != nil {
		for i, v := range s.Values {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Values", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColors sets the Colors field's value.
func (s *GeospatialMapAggregatedFieldWells) SetColors(v []*DimensionField) *GeospatialMapAggregatedFieldWells {
	s.Colors = v
	return s
}

// SetGeospatial sets the Geospatial field's value.
func (s *GeospatialMapAggregatedFieldWells) SetGeospatial(v []*DimensionField) *GeospatialMapAggregatedFieldWells {
	s.Geospatial = v
	return s
}

// SetValues sets the Values field's value.
func (s *GeospatialMapAggregatedFieldWells) SetValues(v []*MeasureField) *GeospatialMapAggregatedFieldWells {
	s.Values = v
	return s
}

// The configuration of a GeospatialMapVisual.
type GeospatialMapConfiguration struct {
	_ struct{} `type:"structure"`

	// The field wells of the visual.
	FieldWells *GeospatialMapFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The legend display setup of the visual.
	Legend *LegendOptions `type:"structure"`

	// The map style options of the geospatial map.
	MapStyleOptions *GeospatialMapStyleOptions `type:"structure"`

	// The point style options of the geospatial map.
	PointStyleOptions *GeospatialPointStyleOptions `type:"structure"`

	// The tooltip display setup of the visual.
	Tooltip *TooltipOptions `type:"structure"`

	// The visual display options for the visual palette.
	VisualPalette *VisualPalette `type:"structure"`

	// The window options of the geospatial map.
	WindowOptions *GeospatialWindowOptions `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 GeospatialMapConfiguration) 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 GeospatialMapConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GeospatialMapConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GeospatialMapConfiguration"}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.PointStyleOptions != nil {
		if err := s.PointStyleOptions.Validate(); err != nil {
			invalidParams.AddNested("PointStyleOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.Tooltip != nil {
		if err := s.Tooltip.Validate(); err != nil {
			invalidParams.AddNested("Tooltip", err.(request.ErrInvalidParams))
		}
	}
	if s.VisualPalette != nil {
		if err := s.VisualPalette.Validate(); err != nil {
			invalidParams.AddNested("VisualPalette", err.(request.ErrInvalidParams))
		}
	}
	if s.WindowOptions != nil {
		if err := s.WindowOptions.Validate(); err != nil {
			invalidParams.AddNested("WindowOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldWells sets the FieldWells field's value.
func (s *GeospatialMapConfiguration) SetFieldWells(v *GeospatialMapFieldWells) *GeospatialMapConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *GeospatialMapConfiguration) SetInteractions(v *VisualInteractionOptions) *GeospatialMapConfiguration {
	s.Interactions = v
	return s
}

// SetLegend sets the Legend field's value.
func (s *GeospatialMapConfiguration) SetLegend(v *LegendOptions) *GeospatialMapConfiguration {
	s.Legend = v
	return s
}

// SetMapStyleOptions sets the MapStyleOptions field's value.
func (s *GeospatialMapConfiguration) SetMapStyleOptions(v *GeospatialMapStyleOptions) *GeospatialMapConfiguration {
	s.MapStyleOptions = v
	return s
}

// SetPointStyleOptions sets the PointStyleOptions field's value.
func (s *GeospatialMapConfiguration) SetPointStyleOptions(v *GeospatialPointStyleOptions) *GeospatialMapConfiguration {
	s.PointStyleOptions = v
	return s
}

// SetTooltip sets the Tooltip field's value.
func (s *GeospatialMapConfiguration) SetTooltip(v *TooltipOptions) *GeospatialMapConfiguration {
	s.Tooltip = v
	return s
}

// SetVisualPalette sets the VisualPalette field's value.
func (s *GeospatialMapConfiguration) SetVisualPalette(v *VisualPalette) *GeospatialMapConfiguration {
	s.VisualPalette = v
	return s
}

// SetWindowOptions sets the WindowOptions field's value.
func (s *GeospatialMapConfiguration) SetWindowOptions(v *GeospatialWindowOptions) *GeospatialMapConfiguration {
	s.WindowOptions = v
	return s
}

// The field wells of a GeospatialMapVisual.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type GeospatialMapFieldWells struct {
	_ struct{} `type:"structure"`

	// The aggregated field well for a geospatial map.
	GeospatialMapAggregatedFieldWells *GeospatialMapAggregatedFieldWells `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 GeospatialMapFieldWells) 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 GeospatialMapFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GeospatialMapFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GeospatialMapFieldWells"}
	if s.GeospatialMapAggregatedFieldWells != nil {
		if err := s.GeospatialMapAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("GeospatialMapAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetGeospatialMapAggregatedFieldWells sets the GeospatialMapAggregatedFieldWells field's value.
func (s *GeospatialMapFieldWells) SetGeospatialMapAggregatedFieldWells(v *GeospatialMapAggregatedFieldWells) *GeospatialMapFieldWells {
	s.GeospatialMapAggregatedFieldWells = v
	return s
}

// The map style options of the geospatial map.
type GeospatialMapStyleOptions struct {
	_ struct{} `type:"structure"`

	// The base map style of the geospatial map.
	BaseMapStyle *string `type:"string" enum:"BaseMapStyleType"`
}

// 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 GeospatialMapStyleOptions) 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 GeospatialMapStyleOptions) GoString() string {
	return s.String()
}

// SetBaseMapStyle sets the BaseMapStyle field's value.
func (s *GeospatialMapStyleOptions) SetBaseMapStyle(v string) *GeospatialMapStyleOptions {
	s.BaseMapStyle = &v
	return s
}

// A geospatial map or a points on map visual.
//
// For more information, see Creating point maps (https://docs.aws.amazon.com/quicksight/latest/user/point-maps.html)
// in the Amazon QuickSight User Guide.
type GeospatialMapVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration settings of the visual.
	ChartConfiguration *GeospatialMapConfiguration `type:"structure"`

	// The column hierarchy that is used during drill-downs and drill-ups.
	ColumnHierarchies []*ColumnHierarchy `type:"list"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers..
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GeospatialMapVisual) 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 GeospatialMapVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GeospatialMapVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GeospatialMapVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ColumnHierarchies != nil {
		for i, v := range s.ColumnHierarchies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnHierarchies", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *GeospatialMapVisual) SetActions(v []*VisualCustomAction) *GeospatialMapVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *GeospatialMapVisual) SetChartConfiguration(v *GeospatialMapConfiguration) *GeospatialMapVisual {
	s.ChartConfiguration = v
	return s
}

// SetColumnHierarchies sets the ColumnHierarchies field's value.
func (s *GeospatialMapVisual) SetColumnHierarchies(v []*ColumnHierarchy) *GeospatialMapVisual {
	s.ColumnHierarchies = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *GeospatialMapVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *GeospatialMapVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *GeospatialMapVisual) SetTitle(v *VisualTitleLabelOptions) *GeospatialMapVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *GeospatialMapVisual) SetVisualId(v string) *GeospatialMapVisual {
	s.VisualId = &v
	return s
}

// The point style of the geospatial map.
type GeospatialPointStyleOptions struct {
	_ struct{} `type:"structure"`

	// The cluster marker configuration of the geospatial point style.
	ClusterMarkerConfiguration *ClusterMarkerConfiguration `type:"structure"`

	// The heatmap configuration of the geospatial point style.
	HeatmapConfiguration *GeospatialHeatmapConfiguration `type:"structure"`

	// The selected point styles (point, cluster) of the geospatial map.
	SelectedPointStyle *string `type:"string" enum:"GeospatialSelectedPointStyle"`
}

// 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 GeospatialPointStyleOptions) 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 GeospatialPointStyleOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GeospatialPointStyleOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GeospatialPointStyleOptions"}
	if s.HeatmapConfiguration != nil {
		if err := s.HeatmapConfiguration.Validate(); err != nil {
			invalidParams.AddNested("HeatmapConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClusterMarkerConfiguration sets the ClusterMarkerConfiguration field's value.
func (s *GeospatialPointStyleOptions) SetClusterMarkerConfiguration(v *ClusterMarkerConfiguration) *GeospatialPointStyleOptions {
	s.ClusterMarkerConfiguration = v
	return s
}

// SetHeatmapConfiguration sets the HeatmapConfiguration field's value.
func (s *GeospatialPointStyleOptions) SetHeatmapConfiguration(v *GeospatialHeatmapConfiguration) *GeospatialPointStyleOptions {
	s.HeatmapConfiguration = v
	return s
}

// SetSelectedPointStyle sets the SelectedPointStyle field's value.
func (s *GeospatialPointStyleOptions) SetSelectedPointStyle(v string) *GeospatialPointStyleOptions {
	s.SelectedPointStyle = &v
	return s
}

// The window options of the geospatial map visual.
type GeospatialWindowOptions struct {
	_ struct{} `type:"structure"`

	// The bounds options (north, south, west, east) of the geospatial window options.
	Bounds *GeospatialCoordinateBounds `type:"structure"`

	// The map zoom modes (manual, auto) of the geospatial window options.
	MapZoomMode *string `type:"string" enum:"MapZoomMode"`
}

// 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 GeospatialWindowOptions) 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 GeospatialWindowOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GeospatialWindowOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GeospatialWindowOptions"}
	if s.Bounds != nil {
		if err := s.Bounds.Validate(); err != nil {
			invalidParams.AddNested("Bounds", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBounds sets the Bounds field's value.
func (s *GeospatialWindowOptions) SetBounds(v *GeospatialCoordinateBounds) *GeospatialWindowOptions {
	s.Bounds = v
	return s
}

// SetMapZoomMode sets the MapZoomMode field's value.
func (s *GeospatialWindowOptions) SetMapZoomMode(v string) *GeospatialWindowOptions {
	s.MapZoomMode = &v
	return s
}

type GetDashboardEmbedUrlInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// A list of one or more dashboard IDs that you want anonymous users to have
	// tempporary access to. Currently, the IdentityType parameter must be set to
	// ANONYMOUS because other identity types authenticate as Amazon QuickSight
	// or IAM users. For example, if you set "--dashboard-id dash_id1 --dashboard-id
	// dash_id2 dash_id3 identity-type ANONYMOUS", the session can access all three
	// dashboards.
	AdditionalDashboardIds []*string `location:"querystring" locationName:"additional-dashboard-ids" min:"1" type:"list"`

	// The ID for the Amazon Web Services account that contains the dashboard that
	// you're embedding.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the dashboard, also added to the Identity and Access Management
	// (IAM) policy.
	//
	// DashboardId is a required field
	DashboardId *string `location:"uri" locationName:"DashboardId" min:"1" type:"string" required:"true"`

	// The authentication method that the user uses to sign in.
	//
	// IdentityType is a required field
	IdentityType *string `location:"querystring" locationName:"creds-type" type:"string" required:"true" enum:"EmbeddingIdentityType"`

	// The Amazon QuickSight namespace that contains the dashboard IDs in this request.
	// If you're not using a custom namespace, set Namespace = default.
	Namespace *string `location:"querystring" locationName:"namespace" type:"string"`

	// Remove the reset button on the embedded dashboard. The default is FALSE,
	// which enables the reset button.
	ResetDisabled *bool `location:"querystring" locationName:"reset-disabled" type:"boolean"`

	// How many minutes the session is valid. The session lifetime must be 15-600
	// minutes.
	SessionLifetimeInMinutes *int64 `location:"querystring" locationName:"session-lifetime" min:"15" type:"long"`

	// Adds persistence of state for the user session in an embedded dashboard.
	// Persistence applies to the sheet and the parameter settings. These are control
	// settings that the dashboard subscriber (Amazon QuickSight reader) chooses
	// while viewing the dashboard. If this is set to TRUE, the settings are the
	// same when the subscriber reopens the same dashboard URL. The state is stored
	// in Amazon QuickSight, not in a browser cookie. If this is set to FALSE, the
	// state of the user session is not persisted. The default is FALSE.
	StatePersistenceEnabled *bool `location:"querystring" locationName:"state-persistence-enabled" type:"boolean"`

	// Remove the undo/redo button on the embedded dashboard. The default is FALSE,
	// which enables the undo/redo button.
	UndoRedoDisabled *bool `location:"querystring" locationName:"undo-redo-disabled" type:"boolean"`

	// The Amazon QuickSight user's Amazon Resource Name (ARN), for use with QUICKSIGHT
	// identity type. You can use this for any Amazon QuickSight users in your account
	// (readers, authors, or admins) authenticated as one of the following:
	//
	//    * Active Directory (AD) users or group members
	//
	//    * Invited nonfederated users
	//
	//    * IAM users and IAM role-based sessions authenticated through Federated
	//    Single Sign-On using SAML, OpenID Connect, or IAM federation.
	//
	// Omit this parameter for users in the third group – IAM users and IAM role-based
	// sessions.
	UserArn *string `location:"querystring" locationName:"user-arn" 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 GetDashboardEmbedUrlInput) 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 GetDashboardEmbedUrlInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDashboardEmbedUrlInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDashboardEmbedUrlInput"}
	if s.AdditionalDashboardIds != nil && len(s.AdditionalDashboardIds) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AdditionalDashboardIds", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DashboardId == nil {
		invalidParams.Add(request.NewErrParamRequired("DashboardId"))
	}
	if s.DashboardId != nil && len(*s.DashboardId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DashboardId", 1))
	}
	if s.IdentityType == nil {
		invalidParams.Add(request.NewErrParamRequired("IdentityType"))
	}
	if s.SessionLifetimeInMinutes != nil && *s.SessionLifetimeInMinutes < 15 {
		invalidParams.Add(request.NewErrParamMinValue("SessionLifetimeInMinutes", 15))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalDashboardIds sets the AdditionalDashboardIds field's value.
func (s *GetDashboardEmbedUrlInput) SetAdditionalDashboardIds(v []*string) *GetDashboardEmbedUrlInput {
	s.AdditionalDashboardIds = v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *GetDashboardEmbedUrlInput) SetAwsAccountId(v string) *GetDashboardEmbedUrlInput {
	s.AwsAccountId = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *GetDashboardEmbedUrlInput) SetDashboardId(v string) *GetDashboardEmbedUrlInput {
	s.DashboardId = &v
	return s
}

// SetIdentityType sets the IdentityType field's value.
func (s *GetDashboardEmbedUrlInput) SetIdentityType(v string) *GetDashboardEmbedUrlInput {
	s.IdentityType = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *GetDashboardEmbedUrlInput) SetNamespace(v string) *GetDashboardEmbedUrlInput {
	s.Namespace = &v
	return s
}

// SetResetDisabled sets the ResetDisabled field's value.
func (s *GetDashboardEmbedUrlInput) SetResetDisabled(v bool) *GetDashboardEmbedUrlInput {
	s.ResetDisabled = &v
	return s
}

// SetSessionLifetimeInMinutes sets the SessionLifetimeInMinutes field's value.
func (s *GetDashboardEmbedUrlInput) SetSessionLifetimeInMinutes(v int64) *GetDashboardEmbedUrlInput {
	s.SessionLifetimeInMinutes = &v
	return s
}

// SetStatePersistenceEnabled sets the StatePersistenceEnabled field's value.
func (s *GetDashboardEmbedUrlInput) SetStatePersistenceEnabled(v bool) *GetDashboardEmbedUrlInput {
	s.StatePersistenceEnabled = &v
	return s
}

// SetUndoRedoDisabled sets the UndoRedoDisabled field's value.
func (s *GetDashboardEmbedUrlInput) SetUndoRedoDisabled(v bool) *GetDashboardEmbedUrlInput {
	s.UndoRedoDisabled = &v
	return s
}

// SetUserArn sets the UserArn field's value.
func (s *GetDashboardEmbedUrlInput) SetUserArn(v string) *GetDashboardEmbedUrlInput {
	s.UserArn = &v
	return s
}

// Output returned from the GetDashboardEmbedUrl operation.
type GetDashboardEmbedUrlOutput struct {
	_ struct{} `type:"structure"`

	// A single-use URL that you can put into your server-side webpage to embed
	// your dashboard. This URL is valid for 5 minutes. The API operation provides
	// the URL with an auth_code value that enables one (and only one) sign-on to
	// a user session that is valid for 10 hours.
	//
	// EmbedUrl is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetDashboardEmbedUrlOutput's
	// String and GoString methods.
	EmbedUrl *string `type:"string" sensitive:"true"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 GetDashboardEmbedUrlOutput) 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 GetDashboardEmbedUrlOutput) GoString() string {
	return s.String()
}

// SetEmbedUrl sets the EmbedUrl field's value.
func (s *GetDashboardEmbedUrlOutput) SetEmbedUrl(v string) *GetDashboardEmbedUrlOutput {
	s.EmbedUrl = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GetDashboardEmbedUrlOutput) SetRequestId(v string) *GetDashboardEmbedUrlOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetDashboardEmbedUrlOutput) SetStatus(v int64) *GetDashboardEmbedUrlOutput {
	s.Status = &v
	return s
}

type GetSessionEmbedUrlInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account associated with your Amazon QuickSight
	// subscription.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The URL you use to access the embedded session. The entry point URL is constrained
	// to the following paths:
	//
	//    * /start
	//
	//    * /start/analyses
	//
	//    * /start/dashboards
	//
	//    * /start/favorites
	//
	//    * /dashboards/DashboardId - where DashboardId is the actual ID key from
	//    the Amazon QuickSight console URL of the dashboard
	//
	//    * /analyses/AnalysisId - where AnalysisId is the actual ID key from the
	//    Amazon QuickSight console URL of the analysis
	EntryPoint *string `location:"querystring" locationName:"entry-point" min:"1" type:"string"`

	// How many minutes the session is valid. The session lifetime must be 15-600
	// minutes.
	SessionLifetimeInMinutes *int64 `location:"querystring" locationName:"session-lifetime" min:"15" type:"long"`

	// The Amazon QuickSight user's Amazon Resource Name (ARN), for use with QUICKSIGHT
	// identity type. You can use this for any type of Amazon QuickSight users in
	// your account (readers, authors, or admins). They need to be authenticated
	// as one of the following:
	//
	// Active Directory (AD) users or group members
	//
	// Invited nonfederated users
	//
	// IAM users and IAM role-based sessions authenticated through Federated Single
	// Sign-On using SAML, OpenID Connect, or IAM federation
	//
	// Omit this parameter for users in the third group, IAM users and IAM role-based
	// sessions.
	UserArn *string `location:"querystring" locationName:"user-arn" 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 GetSessionEmbedUrlInput) 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 GetSessionEmbedUrlInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetSessionEmbedUrlInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetSessionEmbedUrlInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.EntryPoint != nil && len(*s.EntryPoint) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EntryPoint", 1))
	}
	if s.SessionLifetimeInMinutes != nil && *s.SessionLifetimeInMinutes < 15 {
		invalidParams.Add(request.NewErrParamMinValue("SessionLifetimeInMinutes", 15))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *GetSessionEmbedUrlInput) SetAwsAccountId(v string) *GetSessionEmbedUrlInput {
	s.AwsAccountId = &v
	return s
}

// SetEntryPoint sets the EntryPoint field's value.
func (s *GetSessionEmbedUrlInput) SetEntryPoint(v string) *GetSessionEmbedUrlInput {
	s.EntryPoint = &v
	return s
}

// SetSessionLifetimeInMinutes sets the SessionLifetimeInMinutes field's value.
func (s *GetSessionEmbedUrlInput) SetSessionLifetimeInMinutes(v int64) *GetSessionEmbedUrlInput {
	s.SessionLifetimeInMinutes = &v
	return s
}

// SetUserArn sets the UserArn field's value.
func (s *GetSessionEmbedUrlInput) SetUserArn(v string) *GetSessionEmbedUrlInput {
	s.UserArn = &v
	return s
}

type GetSessionEmbedUrlOutput struct {
	_ struct{} `type:"structure"`

	// A single-use URL that you can put into your server-side web page to embed
	// your Amazon QuickSight session. This URL is valid for 5 minutes. The API
	// operation provides the URL with an auth_code value that enables one (and
	// only one) sign-on to a user session that is valid for 10 hours.
	//
	// EmbedUrl is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetSessionEmbedUrlOutput's
	// String and GoString methods.
	EmbedUrl *string `type:"string" sensitive:"true"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 GetSessionEmbedUrlOutput) 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 GetSessionEmbedUrlOutput) GoString() string {
	return s.String()
}

// SetEmbedUrl sets the EmbedUrl field's value.
func (s *GetSessionEmbedUrlOutput) SetEmbedUrl(v string) *GetSessionEmbedUrlOutput {
	s.EmbedUrl = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *GetSessionEmbedUrlOutput) SetRequestId(v string) *GetSessionEmbedUrlOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetSessionEmbedUrlOutput) SetStatus(v int64) *GetSessionEmbedUrlOutput {
	s.Status = &v
	return s
}

// Determines the border options for a table visual.
type GlobalTableBorderOptions struct {
	_ struct{} `type:"structure"`

	// Determines the options for side specific border.
	SideSpecificBorder *TableSideBorderOptions `type:"structure"`

	// Determines the options for uniform border.
	UniformBorder *TableBorderOptions `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 GlobalTableBorderOptions) 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 GlobalTableBorderOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GlobalTableBorderOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GlobalTableBorderOptions"}
	if s.SideSpecificBorder != nil {
		if err := s.SideSpecificBorder.Validate(); err != nil {
			invalidParams.AddNested("SideSpecificBorder", err.(request.ErrInvalidParams))
		}
	}
	if s.UniformBorder != nil {
		if err := s.UniformBorder.Validate(); err != nil {
			invalidParams.AddNested("UniformBorder", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSideSpecificBorder sets the SideSpecificBorder field's value.
func (s *GlobalTableBorderOptions) SetSideSpecificBorder(v *TableSideBorderOptions) *GlobalTableBorderOptions {
	s.SideSpecificBorder = v
	return s
}

// SetUniformBorder sets the UniformBorder field's value.
func (s *GlobalTableBorderOptions) SetUniformBorder(v *TableBorderOptions) *GlobalTableBorderOptions {
	s.UniformBorder = v
	return s
}

// Determines the gradient color settings.
type GradientColor struct {
	_ struct{} `type:"structure"`

	// The list of gradient color stops.
	Stops []*GradientStop `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 GradientColor) 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 GradientColor) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GradientColor) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GradientColor"}
	if s.Stops != nil {
		for i, v := range s.Stops {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Stops", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStops sets the Stops field's value.
func (s *GradientColor) SetStops(v []*GradientStop) *GradientColor {
	s.Stops = v
	return s
}

// Determines the gradient stop configuration.
type GradientStop struct {
	_ struct{} `type:"structure"`

	// Determines the color.
	Color *string `type:"string"`

	// Determines the data value.
	DataValue *float64 `type:"double"`

	// Determines gradient offset value.
	//
	// GradientOffset is a required field
	GradientOffset *float64 `type:"double" 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 GradientStop) 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 GradientStop) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GradientStop) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GradientStop"}
	if s.GradientOffset == nil {
		invalidParams.Add(request.NewErrParamRequired("GradientOffset"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColor sets the Color field's value.
func (s *GradientStop) SetColor(v string) *GradientStop {
	s.Color = &v
	return s
}

// SetDataValue sets the DataValue field's value.
func (s *GradientStop) SetDataValue(v float64) *GradientStop {
	s.DataValue = &v
	return s
}

// SetGradientOffset sets the GradientOffset field's value.
func (s *GradientStop) SetGradientOffset(v float64) *GradientStop {
	s.GradientOffset = &v
	return s
}

// Configuration options for the canvas of a grid layout.
type GridLayoutCanvasSizeOptions struct {
	_ struct{} `type:"structure"`

	// The options that determine the sizing of the canvas used in a grid layout.
	ScreenCanvasSizeOptions *GridLayoutScreenCanvasSizeOptions `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 GridLayoutCanvasSizeOptions) 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 GridLayoutCanvasSizeOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GridLayoutCanvasSizeOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GridLayoutCanvasSizeOptions"}
	if s.ScreenCanvasSizeOptions != nil {
		if err := s.ScreenCanvasSizeOptions.Validate(); err != nil {
			invalidParams.AddNested("ScreenCanvasSizeOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetScreenCanvasSizeOptions sets the ScreenCanvasSizeOptions field's value.
func (s *GridLayoutCanvasSizeOptions) SetScreenCanvasSizeOptions(v *GridLayoutScreenCanvasSizeOptions) *GridLayoutCanvasSizeOptions {
	s.ScreenCanvasSizeOptions = v
	return s
}

// The configuration for a grid layout. Also called a tiled layout.
//
// Visuals snap to a grid with standard spacing and alignment. Dashboards are
// displayed as designed, with options to fit to screen or view at actual size.
type GridLayoutConfiguration struct {
	_ struct{} `type:"structure"`

	// Configuration options for the canvas of a grid layout.
	CanvasSizeOptions *GridLayoutCanvasSizeOptions `type:"structure"`

	// The elements that are included in a grid layout.
	//
	// Elements is a required field
	Elements []*GridLayoutElement `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 GridLayoutConfiguration) 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 GridLayoutConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GridLayoutConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GridLayoutConfiguration"}
	if s.Elements == nil {
		invalidParams.Add(request.NewErrParamRequired("Elements"))
	}
	if s.CanvasSizeOptions != nil {
		if err := s.CanvasSizeOptions.Validate(); err != nil {
			invalidParams.AddNested("CanvasSizeOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.Elements != nil {
		for i, v := range s.Elements {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Elements", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCanvasSizeOptions sets the CanvasSizeOptions field's value.
func (s *GridLayoutConfiguration) SetCanvasSizeOptions(v *GridLayoutCanvasSizeOptions) *GridLayoutConfiguration {
	s.CanvasSizeOptions = v
	return s
}

// SetElements sets the Elements field's value.
func (s *GridLayoutConfiguration) SetElements(v []*GridLayoutElement) *GridLayoutConfiguration {
	s.Elements = v
	return s
}

// An element within a grid layout.
type GridLayoutElement struct {
	_ struct{} `type:"structure"`

	// The column index for the upper left corner of an element.
	ColumnIndex *int64 `type:"integer"`

	// The width of a grid element expressed as a number of grid columns.
	//
	// ColumnSpan is a required field
	ColumnSpan *int64 `min:"1" type:"integer" required:"true"`

	// A unique identifier for an element within a grid layout.
	//
	// ElementId is a required field
	ElementId *string `min:"1" type:"string" required:"true"`

	// The type of element.
	//
	// ElementType is a required field
	ElementType *string `type:"string" required:"true" enum:"LayoutElementType"`

	// The row index for the upper left corner of an element.
	RowIndex *int64 `type:"integer"`

	// The height of a grid element expressed as a number of grid rows.
	//
	// RowSpan is a required field
	RowSpan *int64 `min:"1" type:"integer" 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 GridLayoutElement) 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 GridLayoutElement) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GridLayoutElement) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GridLayoutElement"}
	if s.ColumnSpan == nil {
		invalidParams.Add(request.NewErrParamRequired("ColumnSpan"))
	}
	if s.ColumnSpan != nil && *s.ColumnSpan < 1 {
		invalidParams.Add(request.NewErrParamMinValue("ColumnSpan", 1))
	}
	if s.ElementId == nil {
		invalidParams.Add(request.NewErrParamRequired("ElementId"))
	}
	if s.ElementId != nil && len(*s.ElementId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ElementId", 1))
	}
	if s.ElementType == nil {
		invalidParams.Add(request.NewErrParamRequired("ElementType"))
	}
	if s.RowSpan == nil {
		invalidParams.Add(request.NewErrParamRequired("RowSpan"))
	}
	if s.RowSpan != nil && *s.RowSpan < 1 {
		invalidParams.Add(request.NewErrParamMinValue("RowSpan", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumnIndex sets the ColumnIndex field's value.
func (s *GridLayoutElement) SetColumnIndex(v int64) *GridLayoutElement {
	s.ColumnIndex = &v
	return s
}

// SetColumnSpan sets the ColumnSpan field's value.
func (s *GridLayoutElement) SetColumnSpan(v int64) *GridLayoutElement {
	s.ColumnSpan = &v
	return s
}

// SetElementId sets the ElementId field's value.
func (s *GridLayoutElement) SetElementId(v string) *GridLayoutElement {
	s.ElementId = &v
	return s
}

// SetElementType sets the ElementType field's value.
func (s *GridLayoutElement) SetElementType(v string) *GridLayoutElement {
	s.ElementType = &v
	return s
}

// SetRowIndex sets the RowIndex field's value.
func (s *GridLayoutElement) SetRowIndex(v int64) *GridLayoutElement {
	s.RowIndex = &v
	return s
}

// SetRowSpan sets the RowSpan field's value.
func (s *GridLayoutElement) SetRowSpan(v int64) *GridLayoutElement {
	s.RowSpan = &v
	return s
}

// The options that determine the sizing of the canvas used in a grid layout.
type GridLayoutScreenCanvasSizeOptions struct {
	_ struct{} `type:"structure"`

	// The width that the view port will be optimized for when the layout renders.
	OptimizedViewPortWidth *string `type:"string"`

	// This value determines the layout behavior when the viewport is resized.
	//
	//    * FIXED: A fixed width will be used when optimizing the layout. In the
	//    Amazon QuickSight console, this option is called Classic.
	//
	//    * RESPONSIVE: The width of the canvas will be responsive and optimized
	//    to the view port. In the Amazon QuickSight console, this option is called
	//    Tiled.
	//
	// ResizeOption is a required field
	ResizeOption *string `type:"string" required:"true" enum:"ResizeOption"`
}

// 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 GridLayoutScreenCanvasSizeOptions) 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 GridLayoutScreenCanvasSizeOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GridLayoutScreenCanvasSizeOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GridLayoutScreenCanvasSizeOptions"}
	if s.ResizeOption == nil {
		invalidParams.Add(request.NewErrParamRequired("ResizeOption"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetOptimizedViewPortWidth sets the OptimizedViewPortWidth field's value.
func (s *GridLayoutScreenCanvasSizeOptions) SetOptimizedViewPortWidth(v string) *GridLayoutScreenCanvasSizeOptions {
	s.OptimizedViewPortWidth = &v
	return s
}

// SetResizeOption sets the ResizeOption field's value.
func (s *GridLayoutScreenCanvasSizeOptions) SetResizeOption(v string) *GridLayoutScreenCanvasSizeOptions {
	s.ResizeOption = &v
	return s
}

// A group in Amazon QuickSight consists of a set of users. You can use groups
// to make it easier to manage access and security.
type Group struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the group.
	Arn *string `type:"string"`

	// The group description.
	Description *string `min:"1" type:"string"`

	// The name of the group.
	GroupName *string `min:"1" type:"string"`

	// The principal ID of the group.
	PrincipalId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Group) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Group) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *Group) SetArn(v string) *Group {
	s.Arn = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Group) SetDescription(v string) *Group {
	s.Description = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *Group) SetGroupName(v string) *Group {
	s.GroupName = &v
	return s
}

// SetPrincipalId sets the PrincipalId field's value.
func (s *Group) SetPrincipalId(v string) *Group {
	s.PrincipalId = &v
	return s
}

// A member of an Amazon QuickSight group. Currently, group members must be
// users. Groups can't be members of another group. .
type GroupMember struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the group member (user).
	Arn *string `type:"string"`

	// The name of the group member (user).
	MemberName *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupMember) 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 GroupMember) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *GroupMember) SetArn(v string) *GroupMember {
	s.Arn = &v
	return s
}

// SetMemberName sets the MemberName field's value.
func (s *GroupMember) SetMemberName(v string) *GroupMember {
	s.MemberName = &v
	return s
}

// A GroupSearchFilter object that you want to apply to your search.
type GroupSearchFilter struct {
	_ struct{} `type:"structure"`

	// The name of the value that you want to use as a filter, for example "Name":
	// "GROUP_NAME". Currently, the only supported name is GROUP_NAME.
	//
	// Name is a required field
	Name *string `type:"string" required:"true" enum:"GroupFilterAttribute"`

	// The comparison operator that you want to use as a filter, for example "Operator":
	// "StartsWith". Currently, the only supported operator is StartsWith.
	//
	// Operator is a required field
	Operator *string `type:"string" required:"true" enum:"GroupFilterOperator"`

	// The value of the named item, in this case GROUP_NAME, that you want to use
	// as a filter.
	//
	// Value is a required field
	Value *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupSearchFilter) 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 GroupSearchFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GroupSearchFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GroupSearchFilter"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Operator == nil {
		invalidParams.Add(request.NewErrParamRequired("Operator"))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *GroupSearchFilter) SetName(v string) *GroupSearchFilter {
	s.Name = &v
	return s
}

// SetOperator sets the Operator field's value.
func (s *GroupSearchFilter) SetOperator(v string) *GroupSearchFilter {
	s.Operator = &v
	return s
}

// SetValue sets the Value field's value.
func (s *GroupSearchFilter) SetValue(v string) *GroupSearchFilter {
	s.Value = &v
	return s
}

// The growth rate computation configuration.
type GrowthRateComputation struct {
	_ struct{} `type:"structure"`

	// The ID for a computation.
	//
	// ComputationId is a required field
	ComputationId *string `min:"1" type:"string" required:"true"`

	// The name of a computation.
	Name *string `type:"string"`

	// The period size setup of a growth rate computation.
	PeriodSize *int64 `min:"2" type:"integer"`

	// The time field that is used in a computation.
	Time *DimensionField `type:"structure"`

	// The value field that is used in a computation.
	Value *MeasureField `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 GrowthRateComputation) 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 GrowthRateComputation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GrowthRateComputation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GrowthRateComputation"}
	if s.ComputationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ComputationId"))
	}
	if s.ComputationId != nil && len(*s.ComputationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComputationId", 1))
	}
	if s.PeriodSize != nil && *s.PeriodSize < 2 {
		invalidParams.Add(request.NewErrParamMinValue("PeriodSize", 2))
	}
	if s.Time != nil {
		if err := s.Time.Validate(); err != nil {
			invalidParams.AddNested("Time", err.(request.ErrInvalidParams))
		}
	}
	if s.Value != nil {
		if err := s.Value.Validate(); err != nil {
			invalidParams.AddNested("Value", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetComputationId sets the ComputationId field's value.
func (s *GrowthRateComputation) SetComputationId(v string) *GrowthRateComputation {
	s.ComputationId = &v
	return s
}

// SetName sets the Name field's value.
func (s *GrowthRateComputation) SetName(v string) *GrowthRateComputation {
	s.Name = &v
	return s
}

// SetPeriodSize sets the PeriodSize field's value.
func (s *GrowthRateComputation) SetPeriodSize(v int64) *GrowthRateComputation {
	s.PeriodSize = &v
	return s
}

// SetTime sets the Time field's value.
func (s *GrowthRateComputation) SetTime(v *DimensionField) *GrowthRateComputation {
	s.Time = v
	return s
}

// SetValue sets the Value field's value.
func (s *GrowthRateComputation) SetValue(v *MeasureField) *GrowthRateComputation {
	s.Value = v
	return s
}

// The display options for gutter spacing between tiles on a sheet.
type GutterStyle struct {
	_ struct{} `type:"structure"`

	// This Boolean value controls whether to display a gutter space between sheet
	// tiles.
	Show *bool `type:"boolean"`
}

// 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 GutterStyle) 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 GutterStyle) GoString() string {
	return s.String()
}

// SetShow sets the Show field's value.
func (s *GutterStyle) SetShow(v bool) *GutterStyle {
	s.Show = &v
	return s
}

// The configuration of a header or footer section.
type HeaderFooterSectionConfiguration struct {
	_ struct{} `type:"structure"`

	// The layout configuration of the header or footer section.
	//
	// Layout is a required field
	Layout *SectionLayoutConfiguration `type:"structure" required:"true"`

	// The unique identifier of the header or footer section.
	//
	// SectionId is a required field
	SectionId *string `min:"1" type:"string" required:"true"`

	// The style options of a header or footer section.
	Style *SectionStyle `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 HeaderFooterSectionConfiguration) 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 HeaderFooterSectionConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *HeaderFooterSectionConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "HeaderFooterSectionConfiguration"}
	if s.Layout == nil {
		invalidParams.Add(request.NewErrParamRequired("Layout"))
	}
	if s.SectionId == nil {
		invalidParams.Add(request.NewErrParamRequired("SectionId"))
	}
	if s.SectionId != nil && len(*s.SectionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SectionId", 1))
	}
	if s.Layout != nil {
		if err := s.Layout.Validate(); err != nil {
			invalidParams.AddNested("Layout", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetLayout sets the Layout field's value.
func (s *HeaderFooterSectionConfiguration) SetLayout(v *SectionLayoutConfiguration) *HeaderFooterSectionConfiguration {
	s.Layout = v
	return s
}

// SetSectionId sets the SectionId field's value.
func (s *HeaderFooterSectionConfiguration) SetSectionId(v string) *HeaderFooterSectionConfiguration {
	s.SectionId = &v
	return s
}

// SetStyle sets the Style field's value.
func (s *HeaderFooterSectionConfiguration) SetStyle(v *SectionStyle) *HeaderFooterSectionConfiguration {
	s.Style = v
	return s
}

// The aggregated field wells of a heat map.
type HeatMapAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The columns field well of a heat map.
	Columns []*DimensionField `type:"list"`

	// The rows field well of a heat map.
	Rows []*DimensionField `type:"list"`

	// The values field well of a heat map.
	Values []*MeasureField `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 HeatMapAggregatedFieldWells) 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 HeatMapAggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *HeatMapAggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "HeatMapAggregatedFieldWells"}
	if s.Columns != nil {
		for i, v := range s.Columns {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Columns", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Rows != nil {
		for i, v := range s.Rows {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rows", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Values != nil {
		for i, v := range s.Values {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Values", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumns sets the Columns field's value.
func (s *HeatMapAggregatedFieldWells) SetColumns(v []*DimensionField) *HeatMapAggregatedFieldWells {
	s.Columns = v
	return s
}

// SetRows sets the Rows field's value.
func (s *HeatMapAggregatedFieldWells) SetRows(v []*DimensionField) *HeatMapAggregatedFieldWells {
	s.Rows = v
	return s
}

// SetValues sets the Values field's value.
func (s *HeatMapAggregatedFieldWells) SetValues(v []*MeasureField) *HeatMapAggregatedFieldWells {
	s.Values = v
	return s
}

// The configuration of a heat map.
type HeatMapConfiguration struct {
	_ struct{} `type:"structure"`

	// The color options (gradient color, point of divergence) in a heat map.
	ColorScale *ColorScale `type:"structure"`

	// The label options of the column that is displayed in a heat map.
	ColumnLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The options that determine if visual data labels are displayed.
	DataLabels *DataLabelOptions `type:"structure"`

	// The field wells of the visual.
	FieldWells *HeatMapFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The legend display setup of the visual.
	Legend *LegendOptions `type:"structure"`

	// The label options of the row that is displayed in a heat map.
	RowLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The sort configuration of a heat map.
	SortConfiguration *HeatMapSortConfiguration `type:"structure"`

	// The tooltip display setup of the visual.
	Tooltip *TooltipOptions `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 HeatMapConfiguration) 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 HeatMapConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *HeatMapConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "HeatMapConfiguration"}
	if s.ColorScale != nil {
		if err := s.ColorScale.Validate(); err != nil {
			invalidParams.AddNested("ColorScale", err.(request.ErrInvalidParams))
		}
	}
	if s.ColumnLabelOptions != nil {
		if err := s.ColumnLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("ColumnLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.DataLabels != nil {
		if err := s.DataLabels.Validate(); err != nil {
			invalidParams.AddNested("DataLabels", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.RowLabelOptions != nil {
		if err := s.RowLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("RowLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.SortConfiguration != nil {
		if err := s.SortConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SortConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Tooltip != nil {
		if err := s.Tooltip.Validate(); err != nil {
			invalidParams.AddNested("Tooltip", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColorScale sets the ColorScale field's value.
func (s *HeatMapConfiguration) SetColorScale(v *ColorScale) *HeatMapConfiguration {
	s.ColorScale = v
	return s
}

// SetColumnLabelOptions sets the ColumnLabelOptions field's value.
func (s *HeatMapConfiguration) SetColumnLabelOptions(v *ChartAxisLabelOptions) *HeatMapConfiguration {
	s.ColumnLabelOptions = v
	return s
}

// SetDataLabels sets the DataLabels field's value.
func (s *HeatMapConfiguration) SetDataLabels(v *DataLabelOptions) *HeatMapConfiguration {
	s.DataLabels = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *HeatMapConfiguration) SetFieldWells(v *HeatMapFieldWells) *HeatMapConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *HeatMapConfiguration) SetInteractions(v *VisualInteractionOptions) *HeatMapConfiguration {
	s.Interactions = v
	return s
}

// SetLegend sets the Legend field's value.
func (s *HeatMapConfiguration) SetLegend(v *LegendOptions) *HeatMapConfiguration {
	s.Legend = v
	return s
}

// SetRowLabelOptions sets the RowLabelOptions field's value.
func (s *HeatMapConfiguration) SetRowLabelOptions(v *ChartAxisLabelOptions) *HeatMapConfiguration {
	s.RowLabelOptions = v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *HeatMapConfiguration) SetSortConfiguration(v *HeatMapSortConfiguration) *HeatMapConfiguration {
	s.SortConfiguration = v
	return s
}

// SetTooltip sets the Tooltip field's value.
func (s *HeatMapConfiguration) SetTooltip(v *TooltipOptions) *HeatMapConfiguration {
	s.Tooltip = v
	return s
}

// The field well configuration of a heat map.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type HeatMapFieldWells struct {
	_ struct{} `type:"structure"`

	// The aggregated field wells of a heat map.
	HeatMapAggregatedFieldWells *HeatMapAggregatedFieldWells `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 HeatMapFieldWells) 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 HeatMapFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *HeatMapFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "HeatMapFieldWells"}
	if s.HeatMapAggregatedFieldWells != nil {
		if err := s.HeatMapAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("HeatMapAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHeatMapAggregatedFieldWells sets the HeatMapAggregatedFieldWells field's value.
func (s *HeatMapFieldWells) SetHeatMapAggregatedFieldWells(v *HeatMapAggregatedFieldWells) *HeatMapFieldWells {
	s.HeatMapAggregatedFieldWells = v
	return s
}

// The sort configuration of a heat map.
type HeatMapSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The limit on the number of columns that are displayed in a heat map.
	HeatMapColumnItemsLimitConfiguration *ItemsLimitConfiguration `type:"structure"`

	// The column sort configuration for heat map for columns that aren't a part
	// of a field well.
	HeatMapColumnSort []*FieldSortOptions `type:"list"`

	// The limit on the number of rows that are displayed in a heat map.
	HeatMapRowItemsLimitConfiguration *ItemsLimitConfiguration `type:"structure"`

	// The field sort configuration of the rows fields.
	HeatMapRowSort []*FieldSortOptions `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 HeatMapSortConfiguration) 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 HeatMapSortConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *HeatMapSortConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "HeatMapSortConfiguration"}
	if s.HeatMapColumnSort != nil {
		for i, v := range s.HeatMapColumnSort {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "HeatMapColumnSort", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.HeatMapRowSort != nil {
		for i, v := range s.HeatMapRowSort {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "HeatMapRowSort", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHeatMapColumnItemsLimitConfiguration sets the HeatMapColumnItemsLimitConfiguration field's value.
func (s *HeatMapSortConfiguration) SetHeatMapColumnItemsLimitConfiguration(v *ItemsLimitConfiguration) *HeatMapSortConfiguration {
	s.HeatMapColumnItemsLimitConfiguration = v
	return s
}

// SetHeatMapColumnSort sets the HeatMapColumnSort field's value.
func (s *HeatMapSortConfiguration) SetHeatMapColumnSort(v []*FieldSortOptions) *HeatMapSortConfiguration {
	s.HeatMapColumnSort = v
	return s
}

// SetHeatMapRowItemsLimitConfiguration sets the HeatMapRowItemsLimitConfiguration field's value.
func (s *HeatMapSortConfiguration) SetHeatMapRowItemsLimitConfiguration(v *ItemsLimitConfiguration) *HeatMapSortConfiguration {
	s.HeatMapRowItemsLimitConfiguration = v
	return s
}

// SetHeatMapRowSort sets the HeatMapRowSort field's value.
func (s *HeatMapSortConfiguration) SetHeatMapRowSort(v []*FieldSortOptions) *HeatMapSortConfiguration {
	s.HeatMapRowSort = v
	return s
}

// A heat map.
//
// For more information, see Using heat maps (https://docs.aws.amazon.com/quicksight/latest/user/heat-map.html)
// in the Amazon QuickSight User Guide.
type HeatMapVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration of a heat map.
	ChartConfiguration *HeatMapConfiguration `type:"structure"`

	// The column hierarchy that is used during drill-downs and drill-ups.
	ColumnHierarchies []*ColumnHierarchy `type:"list"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers.
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HeatMapVisual) 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 HeatMapVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *HeatMapVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "HeatMapVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ColumnHierarchies != nil {
		for i, v := range s.ColumnHierarchies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnHierarchies", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *HeatMapVisual) SetActions(v []*VisualCustomAction) *HeatMapVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *HeatMapVisual) SetChartConfiguration(v *HeatMapConfiguration) *HeatMapVisual {
	s.ChartConfiguration = v
	return s
}

// SetColumnHierarchies sets the ColumnHierarchies field's value.
func (s *HeatMapVisual) SetColumnHierarchies(v []*ColumnHierarchy) *HeatMapVisual {
	s.ColumnHierarchies = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *HeatMapVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *HeatMapVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *HeatMapVisual) SetTitle(v *VisualTitleLabelOptions) *HeatMapVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *HeatMapVisual) SetVisualId(v string) *HeatMapVisual {
	s.VisualId = &v
	return s
}

// The field well configuration of a histogram.
type HistogramAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The value field wells of a histogram. Values are aggregated by COUNT or DISTINCT_COUNT.
	Values []*MeasureField `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 HistogramAggregatedFieldWells) 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 HistogramAggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *HistogramAggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "HistogramAggregatedFieldWells"}
	if s.Values != nil {
		for i, v := range s.Values {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Values", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetValues sets the Values field's value.
func (s *HistogramAggregatedFieldWells) SetValues(v []*MeasureField) *HistogramAggregatedFieldWells {
	s.Values = v
	return s
}

// The options that determine the presentation of histogram bins.
type HistogramBinOptions struct {
	_ struct{} `type:"structure"`

	// The options that determine the bin count of a histogram.
	BinCount *BinCountOptions `type:"structure"`

	// The options that determine the bin width of a histogram.
	BinWidth *BinWidthOptions `type:"structure"`

	// The options that determine the selected bin type.
	SelectedBinType *string `type:"string" enum:"HistogramBinType"`

	// The options that determine the bin start value.
	StartValue *float64 `type:"double"`
}

// 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 HistogramBinOptions) 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 HistogramBinOptions) GoString() string {
	return s.String()
}

// SetBinCount sets the BinCount field's value.
func (s *HistogramBinOptions) SetBinCount(v *BinCountOptions) *HistogramBinOptions {
	s.BinCount = v
	return s
}

// SetBinWidth sets the BinWidth field's value.
func (s *HistogramBinOptions) SetBinWidth(v *BinWidthOptions) *HistogramBinOptions {
	s.BinWidth = v
	return s
}

// SetSelectedBinType sets the SelectedBinType field's value.
func (s *HistogramBinOptions) SetSelectedBinType(v string) *HistogramBinOptions {
	s.SelectedBinType = &v
	return s
}

// SetStartValue sets the StartValue field's value.
func (s *HistogramBinOptions) SetStartValue(v float64) *HistogramBinOptions {
	s.StartValue = &v
	return s
}

// The configuration for a HistogramVisual.
type HistogramConfiguration struct {
	_ struct{} `type:"structure"`

	// The options that determine the presentation of histogram bins.
	BinOptions *HistogramBinOptions `type:"structure"`

	// The data label configuration of a histogram.
	DataLabels *DataLabelOptions `type:"structure"`

	// The field well configuration of a histogram.
	FieldWells *HistogramFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The tooltip configuration of a histogram.
	Tooltip *TooltipOptions `type:"structure"`

	// The visual palette configuration of a histogram.
	VisualPalette *VisualPalette `type:"structure"`

	// The options that determine the presentation of the x-axis.
	XAxisDisplayOptions *AxisDisplayOptions `type:"structure"`

	// The options that determine the presentation of the x-axis label.
	XAxisLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The options that determine the presentation of the y-axis.
	YAxisDisplayOptions *AxisDisplayOptions `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 HistogramConfiguration) 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 HistogramConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *HistogramConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "HistogramConfiguration"}
	if s.DataLabels != nil {
		if err := s.DataLabels.Validate(); err != nil {
			invalidParams.AddNested("DataLabels", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.Tooltip != nil {
		if err := s.Tooltip.Validate(); err != nil {
			invalidParams.AddNested("Tooltip", err.(request.ErrInvalidParams))
		}
	}
	if s.VisualPalette != nil {
		if err := s.VisualPalette.Validate(); err != nil {
			invalidParams.AddNested("VisualPalette", err.(request.ErrInvalidParams))
		}
	}
	if s.XAxisLabelOptions != nil {
		if err := s.XAxisLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("XAxisLabelOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBinOptions sets the BinOptions field's value.
func (s *HistogramConfiguration) SetBinOptions(v *HistogramBinOptions) *HistogramConfiguration {
	s.BinOptions = v
	return s
}

// SetDataLabels sets the DataLabels field's value.
func (s *HistogramConfiguration) SetDataLabels(v *DataLabelOptions) *HistogramConfiguration {
	s.DataLabels = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *HistogramConfiguration) SetFieldWells(v *HistogramFieldWells) *HistogramConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *HistogramConfiguration) SetInteractions(v *VisualInteractionOptions) *HistogramConfiguration {
	s.Interactions = v
	return s
}

// SetTooltip sets the Tooltip field's value.
func (s *HistogramConfiguration) SetTooltip(v *TooltipOptions) *HistogramConfiguration {
	s.Tooltip = v
	return s
}

// SetVisualPalette sets the VisualPalette field's value.
func (s *HistogramConfiguration) SetVisualPalette(v *VisualPalette) *HistogramConfiguration {
	s.VisualPalette = v
	return s
}

// SetXAxisDisplayOptions sets the XAxisDisplayOptions field's value.
func (s *HistogramConfiguration) SetXAxisDisplayOptions(v *AxisDisplayOptions) *HistogramConfiguration {
	s.XAxisDisplayOptions = v
	return s
}

// SetXAxisLabelOptions sets the XAxisLabelOptions field's value.
func (s *HistogramConfiguration) SetXAxisLabelOptions(v *ChartAxisLabelOptions) *HistogramConfiguration {
	s.XAxisLabelOptions = v
	return s
}

// SetYAxisDisplayOptions sets the YAxisDisplayOptions field's value.
func (s *HistogramConfiguration) SetYAxisDisplayOptions(v *AxisDisplayOptions) *HistogramConfiguration {
	s.YAxisDisplayOptions = v
	return s
}

// The field well configuration of a histogram.
type HistogramFieldWells struct {
	_ struct{} `type:"structure"`

	// The field well configuration of a histogram.
	HistogramAggregatedFieldWells *HistogramAggregatedFieldWells `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 HistogramFieldWells) 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 HistogramFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *HistogramFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "HistogramFieldWells"}
	if s.HistogramAggregatedFieldWells != nil {
		if err := s.HistogramAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("HistogramAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHistogramAggregatedFieldWells sets the HistogramAggregatedFieldWells field's value.
func (s *HistogramFieldWells) SetHistogramAggregatedFieldWells(v *HistogramAggregatedFieldWells) *HistogramFieldWells {
	s.HistogramAggregatedFieldWells = v
	return s
}

// A histogram.
//
// For more information, see Using histograms (https://docs.aws.amazon.com/quicksight/latest/user/histogram-charts.html)
// in the Amazon QuickSight User Guide.
type HistogramVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration for a HistogramVisual.
	ChartConfiguration *HistogramConfiguration `type:"structure"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers.
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HistogramVisual) 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 HistogramVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *HistogramVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "HistogramVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *HistogramVisual) SetActions(v []*VisualCustomAction) *HistogramVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *HistogramVisual) SetChartConfiguration(v *HistogramConfiguration) *HistogramVisual {
	s.ChartConfiguration = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *HistogramVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *HistogramVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *HistogramVisual) SetTitle(v *VisualTitleLabelOptions) *HistogramVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *HistogramVisual) SetVisualId(v string) *HistogramVisual {
	s.VisualId = &v
	return s
}

// An Identity and Access Management (IAM) policy assignment.
type IAMPolicyAssignment struct {
	_ struct{} `type:"structure"`

	// Assignment ID.
	AssignmentId *string `type:"string"`

	// Assignment name.
	AssignmentName *string `min:"1" type:"string"`

	// Assignment status.
	AssignmentStatus *string `type:"string" enum:"AssignmentStatus"`

	// The Amazon Web Services account ID.
	AwsAccountId *string `min:"12" type:"string"`

	// Identities.
	Identities map[string][]*string `type:"map"`

	// The Amazon Resource Name (ARN) for the IAM policy.
	PolicyArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IAMPolicyAssignment) 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 IAMPolicyAssignment) GoString() string {
	return s.String()
}

// SetAssignmentId sets the AssignmentId field's value.
func (s *IAMPolicyAssignment) SetAssignmentId(v string) *IAMPolicyAssignment {
	s.AssignmentId = &v
	return s
}

// SetAssignmentName sets the AssignmentName field's value.
func (s *IAMPolicyAssignment) SetAssignmentName(v string) *IAMPolicyAssignment {
	s.AssignmentName = &v
	return s
}

// SetAssignmentStatus sets the AssignmentStatus field's value.
func (s *IAMPolicyAssignment) SetAssignmentStatus(v string) *IAMPolicyAssignment {
	s.AssignmentStatus = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *IAMPolicyAssignment) SetAwsAccountId(v string) *IAMPolicyAssignment {
	s.AwsAccountId = &v
	return s
}

// SetIdentities sets the Identities field's value.
func (s *IAMPolicyAssignment) SetIdentities(v map[string][]*string) *IAMPolicyAssignment {
	s.Identities = v
	return s
}

// SetPolicyArn sets the PolicyArn field's value.
func (s *IAMPolicyAssignment) SetPolicyArn(v string) *IAMPolicyAssignment {
	s.PolicyArn = &v
	return s
}

// IAM policy assignment summary.
type IAMPolicyAssignmentSummary struct {
	_ struct{} `type:"structure"`

	// Assignment name.
	AssignmentName *string `min:"1" type:"string"`

	// Assignment status.
	AssignmentStatus *string `type:"string" enum:"AssignmentStatus"`
}

// 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 IAMPolicyAssignmentSummary) 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 IAMPolicyAssignmentSummary) GoString() string {
	return s.String()
}

// SetAssignmentName sets the AssignmentName field's value.
func (s *IAMPolicyAssignmentSummary) SetAssignmentName(v string) *IAMPolicyAssignmentSummary {
	s.AssignmentName = &v
	return s
}

// SetAssignmentStatus sets the AssignmentStatus field's value.
func (s *IAMPolicyAssignmentSummary) SetAssignmentStatus(v string) *IAMPolicyAssignmentSummary {
	s.AssignmentStatus = &v
	return s
}

// The definition for the identifier.
type Identifier struct {
	_ struct{} `type:"structure"`

	// The identity of the identifier.
	//
	// Identity is a required field
	Identity *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Identifier) 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 Identifier) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Identifier) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Identifier"}
	if s.Identity == nil {
		invalidParams.Add(request.NewErrParamRequired("Identity"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIdentity sets the Identity field's value.
func (s *Identifier) SetIdentity(v string) *Identifier {
	s.Identity = &v
	return s
}

// The parameters for an IAM Identity Center configuration.
type IdentityCenterConfiguration struct {
	_ struct{} `type:"structure"`

	// A Boolean option that controls whether Trusted Identity Propagation should
	// be used.
	EnableIdentityPropagation *bool `type:"boolean"`
}

// 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 IdentityCenterConfiguration) 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 IdentityCenterConfiguration) GoString() string {
	return s.String()
}

// SetEnableIdentityPropagation sets the EnableIdentityPropagation field's value.
func (s *IdentityCenterConfiguration) SetEnableIdentityPropagation(v bool) *IdentityCenterConfiguration {
	s.EnableIdentityPropagation = &v
	return s
}

// The identity type specified isn't supported. Supported identity types include
// IAM and QUICKSIGHT.
type IdentityTypeNotSupportedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IdentityTypeNotSupportedException) 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 IdentityTypeNotSupportedException) GoString() string {
	return s.String()
}

func newErrorIdentityTypeNotSupportedException(v protocol.ResponseMetadata) error {
	return &IdentityTypeNotSupportedException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *IdentityTypeNotSupportedException) Code() string {
	return "IdentityTypeNotSupportedException"
}

// Message returns the exception's message.
func (s *IdentityTypeNotSupportedException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *IdentityTypeNotSupportedException) OrigErr() error {
	return nil
}

func (s *IdentityTypeNotSupportedException) 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 *IdentityTypeNotSupportedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *IdentityTypeNotSupportedException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The incremental refresh configuration for a dataset.
type IncrementalRefresh struct {
	_ struct{} `type:"structure"`

	// The lookback window setup for an incremental refresh configuration.
	//
	// LookbackWindow is a required field
	LookbackWindow *LookbackWindow `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 IncrementalRefresh) 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 IncrementalRefresh) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *IncrementalRefresh) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "IncrementalRefresh"}
	if s.LookbackWindow == nil {
		invalidParams.Add(request.NewErrParamRequired("LookbackWindow"))
	}
	if s.LookbackWindow != nil {
		if err := s.LookbackWindow.Validate(); err != nil {
			invalidParams.AddNested("LookbackWindow", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetLookbackWindow sets the LookbackWindow field's value.
func (s *IncrementalRefresh) SetLookbackWindow(v *LookbackWindow) *IncrementalRefresh {
	s.LookbackWindow = v
	return s
}

// Information about the SPICE ingestion for a dataset.
type Ingestion struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// The time that this ingestion started.
	//
	// CreatedTime is a required field
	CreatedTime *time.Time `type:"timestamp" required:"true"`

	// Error information for this ingestion.
	ErrorInfo *ErrorInfo `type:"structure"`

	// Ingestion ID.
	IngestionId *string `min:"1" type:"string"`

	// The size of the data ingested, in bytes.
	IngestionSizeInBytes *int64 `type:"long"`

	// Ingestion status.
	//
	// IngestionStatus is a required field
	IngestionStatus *string `type:"string" required:"true" enum:"IngestionStatus"`

	// The time that this ingestion took, measured in seconds.
	IngestionTimeInSeconds *int64 `type:"long"`

	// Information about a queued dataset SPICE ingestion.
	QueueInfo *QueueInfo `type:"structure"`

	// Event source for this ingestion.
	RequestSource *string `type:"string" enum:"IngestionRequestSource"`

	// Type of this ingestion.
	RequestType *string `type:"string" enum:"IngestionRequestType"`

	// Information about rows for a data set SPICE ingestion.
	RowInfo *RowInfo `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 Ingestion) 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 Ingestion) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *Ingestion) SetArn(v string) *Ingestion {
	s.Arn = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *Ingestion) SetCreatedTime(v time.Time) *Ingestion {
	s.CreatedTime = &v
	return s
}

// SetErrorInfo sets the ErrorInfo field's value.
func (s *Ingestion) SetErrorInfo(v *ErrorInfo) *Ingestion {
	s.ErrorInfo = v
	return s
}

// SetIngestionId sets the IngestionId field's value.
func (s *Ingestion) SetIngestionId(v string) *Ingestion {
	s.IngestionId = &v
	return s
}

// SetIngestionSizeInBytes sets the IngestionSizeInBytes field's value.
func (s *Ingestion) SetIngestionSizeInBytes(v int64) *Ingestion {
	s.IngestionSizeInBytes = &v
	return s
}

// SetIngestionStatus sets the IngestionStatus field's value.
func (s *Ingestion) SetIngestionStatus(v string) *Ingestion {
	s.IngestionStatus = &v
	return s
}

// SetIngestionTimeInSeconds sets the IngestionTimeInSeconds field's value.
func (s *Ingestion) SetIngestionTimeInSeconds(v int64) *Ingestion {
	s.IngestionTimeInSeconds = &v
	return s
}

// SetQueueInfo sets the QueueInfo field's value.
func (s *Ingestion) SetQueueInfo(v *QueueInfo) *Ingestion {
	s.QueueInfo = v
	return s
}

// SetRequestSource sets the RequestSource field's value.
func (s *Ingestion) SetRequestSource(v string) *Ingestion {
	s.RequestSource = &v
	return s
}

// SetRequestType sets the RequestType field's value.
func (s *Ingestion) SetRequestType(v string) *Ingestion {
	s.RequestType = &v
	return s
}

// SetRowInfo sets the RowInfo field's value.
func (s *Ingestion) SetRowInfo(v *RowInfo) *Ingestion {
	s.RowInfo = v
	return s
}

// The InnerFilter defines the subset of data to be used with the NestedFilter.
type InnerFilter struct {
	_ struct{} `type:"structure"`

	// A CategoryInnerFilter filters text values for the NestedFilter.
	CategoryInnerFilter *CategoryInnerFilter `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 InnerFilter) 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 InnerFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *InnerFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "InnerFilter"}
	if s.CategoryInnerFilter != nil {
		if err := s.CategoryInnerFilter.Validate(); err != nil {
			invalidParams.AddNested("CategoryInnerFilter", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategoryInnerFilter sets the CategoryInnerFilter field's value.
func (s *InnerFilter) SetCategoryInnerFilter(v *CategoryInnerFilter) *InnerFilter {
	s.CategoryInnerFilter = v
	return s
}

// Metadata for a column that is used as the input of a transform operation.
type InputColumn struct {
	_ struct{} `type:"structure"`

	// The name of this column in the underlying data source.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The sub data type of the column. Sub types are only available for decimal
	// columns that are part of a SPICE dataset.
	SubType *string `type:"string" enum:"ColumnDataSubType"`

	// The data type of the column.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"InputColumnDataType"`
}

// 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 InputColumn) 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 InputColumn) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *InputColumn) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "InputColumn"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *InputColumn) SetName(v string) *InputColumn {
	s.Name = &v
	return s
}

// SetSubType sets the SubType field's value.
func (s *InputColumn) SetSubType(v string) *InputColumn {
	s.SubType = &v
	return s
}

// SetType sets the Type field's value.
func (s *InputColumn) SetType(v string) *InputColumn {
	s.Type = &v
	return s
}

// The configuration of an insight visual.
type InsightConfiguration struct {
	_ struct{} `type:"structure"`

	// The computations configurations of the insight visual
	Computations []*Computation `type:"list"`

	// The custom narrative of the insight visual.
	CustomNarrative *CustomNarrativeOptions `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `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 InsightConfiguration) 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 InsightConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *InsightConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "InsightConfiguration"}
	if s.Computations != nil {
		for i, v := range s.Computations {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Computations", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.CustomNarrative != nil {
		if err := s.CustomNarrative.Validate(); err != nil {
			invalidParams.AddNested("CustomNarrative", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetComputations sets the Computations field's value.
func (s *InsightConfiguration) SetComputations(v []*Computation) *InsightConfiguration {
	s.Computations = v
	return s
}

// SetCustomNarrative sets the CustomNarrative field's value.
func (s *InsightConfiguration) SetCustomNarrative(v *CustomNarrativeOptions) *InsightConfiguration {
	s.CustomNarrative = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *InsightConfiguration) SetInteractions(v *VisualInteractionOptions) *InsightConfiguration {
	s.Interactions = v
	return s
}

// An insight visual.
//
// For more information, see Working with insights (https://docs.aws.amazon.com/quicksight/latest/user/computational-insights.html)
// in the Amazon QuickSight User Guide.
type InsightVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The dataset that is used in the insight visual.
	//
	// DataSetIdentifier is a required field
	DataSetIdentifier *string `min:"1" type:"string" required:"true"`

	// The configuration of an insight visual.
	InsightConfiguration *InsightConfiguration `type:"structure"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers.
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InsightVisual) 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 InsightVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *InsightVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "InsightVisual"}
	if s.DataSetIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetIdentifier"))
	}
	if s.DataSetIdentifier != nil && len(*s.DataSetIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetIdentifier", 1))
	}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.InsightConfiguration != nil {
		if err := s.InsightConfiguration.Validate(); err != nil {
			invalidParams.AddNested("InsightConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *InsightVisual) SetActions(v []*VisualCustomAction) *InsightVisual {
	s.Actions = v
	return s
}

// SetDataSetIdentifier sets the DataSetIdentifier field's value.
func (s *InsightVisual) SetDataSetIdentifier(v string) *InsightVisual {
	s.DataSetIdentifier = &v
	return s
}

// SetInsightConfiguration sets the InsightConfiguration field's value.
func (s *InsightVisual) SetInsightConfiguration(v *InsightConfiguration) *InsightVisual {
	s.InsightConfiguration = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *InsightVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *InsightVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *InsightVisual) SetTitle(v *VisualTitleLabelOptions) *InsightVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *InsightVisual) SetVisualId(v string) *InsightVisual {
	s.VisualId = &v
	return s
}

// An integer parameter for a dataset.
type IntegerDatasetParameter struct {
	_ struct{} `type:"structure"`

	// A list of default values for a given integer parameter. This structure only
	// accepts static values.
	DefaultValues *IntegerDatasetParameterDefaultValues `type:"structure"`

	// An identifier for the integer parameter created in the dataset.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// The name of the integer parameter that is created in the dataset.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The value type of the dataset parameter. Valid values are single value or
	// multi value.
	//
	// ValueType is a required field
	ValueType *string `type:"string" required:"true" enum:"DatasetParameterValueType"`
}

// 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 IntegerDatasetParameter) 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 IntegerDatasetParameter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *IntegerDatasetParameter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "IntegerDatasetParameter"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Id != nil && len(*s.Id) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Id", 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 s.ValueType == nil {
		invalidParams.Add(request.NewErrParamRequired("ValueType"))
	}
	if s.DefaultValues != nil {
		if err := s.DefaultValues.Validate(); err != nil {
			invalidParams.AddNested("DefaultValues", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDefaultValues sets the DefaultValues field's value.
func (s *IntegerDatasetParameter) SetDefaultValues(v *IntegerDatasetParameterDefaultValues) *IntegerDatasetParameter {
	s.DefaultValues = v
	return s
}

// SetId sets the Id field's value.
func (s *IntegerDatasetParameter) SetId(v string) *IntegerDatasetParameter {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *IntegerDatasetParameter) SetName(v string) *IntegerDatasetParameter {
	s.Name = &v
	return s
}

// SetValueType sets the ValueType field's value.
func (s *IntegerDatasetParameter) SetValueType(v string) *IntegerDatasetParameter {
	s.ValueType = &v
	return s
}

// The default values of an integer parameter.
type IntegerDatasetParameterDefaultValues struct {
	_ struct{} `type:"structure"`

	// A list of static default values for a given integer parameter.
	StaticValues []*int64 `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IntegerDatasetParameterDefaultValues) 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 IntegerDatasetParameterDefaultValues) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *IntegerDatasetParameterDefaultValues) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "IntegerDatasetParameterDefaultValues"}
	if s.StaticValues != nil && len(s.StaticValues) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("StaticValues", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStaticValues sets the StaticValues field's value.
func (s *IntegerDatasetParameterDefaultValues) SetStaticValues(v []*int64) *IntegerDatasetParameterDefaultValues {
	s.StaticValues = v
	return s
}

// The default values of the IntegerParameterDeclaration.
type IntegerDefaultValues struct {
	_ struct{} `type:"structure"`

	// The dynamic value of the IntegerDefaultValues. Different defaults are displayed
	// according to users, groups, and values mapping.
	DynamicValue *DynamicDefaultValue `type:"structure"`

	// The static values of the IntegerDefaultValues.
	StaticValues []*int64 `type:"list" sensitive:"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 IntegerDefaultValues) 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 IntegerDefaultValues) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *IntegerDefaultValues) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "IntegerDefaultValues"}
	if s.DynamicValue != nil {
		if err := s.DynamicValue.Validate(); err != nil {
			invalidParams.AddNested("DynamicValue", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDynamicValue sets the DynamicValue field's value.
func (s *IntegerDefaultValues) SetDynamicValue(v *DynamicDefaultValue) *IntegerDefaultValues {
	s.DynamicValue = v
	return s
}

// SetStaticValues sets the StaticValues field's value.
func (s *IntegerDefaultValues) SetStaticValues(v []*int64) *IntegerDefaultValues {
	s.StaticValues = v
	return s
}

// An integer parameter.
type IntegerParameter struct {
	_ struct{} `type:"structure"`

	// The name of the integer parameter.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The values for the integer parameter.
	//
	// Values is a required field
	Values []*int64 `type:"list" required:"true" sensitive:"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 IntegerParameter) 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 IntegerParameter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *IntegerParameter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "IntegerParameter"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *IntegerParameter) SetName(v string) *IntegerParameter {
	s.Name = &v
	return s
}

// SetValues sets the Values field's value.
func (s *IntegerParameter) SetValues(v []*int64) *IntegerParameter {
	s.Values = v
	return s
}

// A parameter declaration for the Integer data type.
type IntegerParameterDeclaration struct {
	_ struct{} `type:"structure"`

	// The default values of a parameter. If the parameter is a single-value parameter,
	// a maximum of one default value can be provided.
	DefaultValues *IntegerDefaultValues `type:"structure"`

	// A list of dataset parameters that are mapped to an analysis parameter.
	MappedDataSetParameters []*MappedDataSetParameter `type:"list"`

	// The name of the parameter that is being declared.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The value type determines whether the parameter is a single-value or multi-value
	// parameter.
	//
	// ParameterValueType is a required field
	ParameterValueType *string `type:"string" required:"true" enum:"ParameterValueType"`

	// A parameter declaration for the Integer data type.
	ValueWhenUnset *IntegerValueWhenUnsetConfiguration `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 IntegerParameterDeclaration) 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 IntegerParameterDeclaration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *IntegerParameterDeclaration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "IntegerParameterDeclaration"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.ParameterValueType == nil {
		invalidParams.Add(request.NewErrParamRequired("ParameterValueType"))
	}
	if s.DefaultValues != nil {
		if err := s.DefaultValues.Validate(); err != nil {
			invalidParams.AddNested("DefaultValues", err.(request.ErrInvalidParams))
		}
	}
	if s.MappedDataSetParameters != nil {
		for i, v := range s.MappedDataSetParameters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "MappedDataSetParameters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDefaultValues sets the DefaultValues field's value.
func (s *IntegerParameterDeclaration) SetDefaultValues(v *IntegerDefaultValues) *IntegerParameterDeclaration {
	s.DefaultValues = v
	return s
}

// SetMappedDataSetParameters sets the MappedDataSetParameters field's value.
func (s *IntegerParameterDeclaration) SetMappedDataSetParameters(v []*MappedDataSetParameter) *IntegerParameterDeclaration {
	s.MappedDataSetParameters = v
	return s
}

// SetName sets the Name field's value.
func (s *IntegerParameterDeclaration) SetName(v string) *IntegerParameterDeclaration {
	s.Name = &v
	return s
}

// SetParameterValueType sets the ParameterValueType field's value.
func (s *IntegerParameterDeclaration) SetParameterValueType(v string) *IntegerParameterDeclaration {
	s.ParameterValueType = &v
	return s
}

// SetValueWhenUnset sets the ValueWhenUnset field's value.
func (s *IntegerParameterDeclaration) SetValueWhenUnset(v *IntegerValueWhenUnsetConfiguration) *IntegerParameterDeclaration {
	s.ValueWhenUnset = v
	return s
}

// A parameter declaration for the Integer data type.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type IntegerValueWhenUnsetConfiguration struct {
	_ struct{} `type:"structure"`

	// A custom value that's used when the value of a parameter isn't set.
	//
	// CustomValue is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by IntegerValueWhenUnsetConfiguration's
	// String and GoString methods.
	CustomValue *int64 `type:"long" sensitive:"true"`

	// The built-in options for default values. The value can be one of the following:
	//
	//    * RECOMMENDED: The recommended value.
	//
	//    * NULL: The NULL value.
	ValueWhenUnsetOption *string `type:"string" enum:"ValueWhenUnsetOption"`
}

// 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 IntegerValueWhenUnsetConfiguration) 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 IntegerValueWhenUnsetConfiguration) GoString() string {
	return s.String()
}

// SetCustomValue sets the CustomValue field's value.
func (s *IntegerValueWhenUnsetConfiguration) SetCustomValue(v int64) *IntegerValueWhenUnsetConfiguration {
	s.CustomValue = &v
	return s
}

// SetValueWhenUnsetOption sets the ValueWhenUnsetOption field's value.
func (s *IntegerValueWhenUnsetConfiguration) SetValueWhenUnsetOption(v string) *IntegerValueWhenUnsetConfiguration {
	s.ValueWhenUnsetOption = &v
	return s
}

// An internal failure occurred.
type InternalFailureException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InternalFailureException) 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 InternalFailureException) GoString() string {
	return s.String()
}

func newErrorInternalFailureException(v protocol.ResponseMetadata) error {
	return &InternalFailureException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InternalFailureException) Code() string {
	return "InternalFailureException"
}

// Message returns the exception's message.
func (s *InternalFailureException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InternalFailureException) OrigErr() error {
	return nil
}

func (s *InternalFailureException) 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 *InternalFailureException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InternalFailureException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The NextToken value isn't valid.
type InvalidNextTokenException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidNextTokenException) 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 InvalidNextTokenException) GoString() string {
	return s.String()
}

func newErrorInvalidNextTokenException(v protocol.ResponseMetadata) error {
	return &InvalidNextTokenException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidNextTokenException) Code() string {
	return "InvalidNextTokenException"
}

// Message returns the exception's message.
func (s *InvalidNextTokenException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidNextTokenException) OrigErr() error {
	return nil
}

func (s *InvalidNextTokenException) 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 *InvalidNextTokenException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidNextTokenException) RequestID() string {
	return s.RespMetadata.RequestID
}

// One or more parameters has a value that isn't valid.
type InvalidParameterValueException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidParameterValueException) 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 InvalidParameterValueException) GoString() string {
	return s.String()
}

func newErrorInvalidParameterValueException(v protocol.ResponseMetadata) error {
	return &InvalidParameterValueException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidParameterValueException) Code() string {
	return "InvalidParameterValueException"
}

// Message returns the exception's message.
func (s *InvalidParameterValueException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidParameterValueException) OrigErr() error {
	return nil
}

func (s *InvalidParameterValueException) 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 *InvalidParameterValueException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidParameterValueException) RequestID() string {
	return s.RespMetadata.RequestID
}

// You don't have this feature activated for your account. To fix this issue,
// contact Amazon Web Services support.
type InvalidRequestException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidRequestException) 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 InvalidRequestException) GoString() string {
	return s.String()
}

func newErrorInvalidRequestException(v protocol.ResponseMetadata) error {
	return &InvalidRequestException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidRequestException) Code() string {
	return "InvalidRequestException"
}

// Message returns the exception's message.
func (s *InvalidRequestException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidRequestException) OrigErr() error {
	return nil
}

func (s *InvalidRequestException) 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 *InvalidRequestException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidRequestException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The definition for a InvalidTopicReviewedAnswer.
type InvalidTopicReviewedAnswer struct {
	_ struct{} `type:"structure"`

	// The answer ID for the InvalidTopicReviewedAnswer.
	AnswerId *string `type:"string"`

	// The error that is returned for the InvalidTopicReviewedAnswer.
	Error *string `type:"string" enum:"ReviewedAnswerErrorCode"`
}

// 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 InvalidTopicReviewedAnswer) 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 InvalidTopicReviewedAnswer) GoString() string {
	return s.String()
}

// SetAnswerId sets the AnswerId field's value.
func (s *InvalidTopicReviewedAnswer) SetAnswerId(v string) *InvalidTopicReviewedAnswer {
	s.AnswerId = &v
	return s
}

// SetError sets the Error field's value.
func (s *InvalidTopicReviewedAnswer) SetError(v string) *InvalidTopicReviewedAnswer {
	s.Error = &v
	return s
}

// The limit configuration of the visual display for an axis.
type ItemsLimitConfiguration struct {
	_ struct{} `type:"structure"`

	// The limit on how many items of a field are showed in the chart. For example,
	// the number of slices that are displayed in a pie chart.
	ItemsLimit *int64 `type:"long"`

	// The Show other of an axis in the chart. Choose one of the following options:
	//
	//    * INCLUDE
	//
	//    * EXCLUDE
	OtherCategories *string `type:"string" enum:"OtherCategories"`
}

// 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 ItemsLimitConfiguration) 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 ItemsLimitConfiguration) GoString() string {
	return s.String()
}

// SetItemsLimit sets the ItemsLimit field's value.
func (s *ItemsLimitConfiguration) SetItemsLimit(v int64) *ItemsLimitConfiguration {
	s.ItemsLimit = &v
	return s
}

// SetOtherCategories sets the OtherCategories field's value.
func (s *ItemsLimitConfiguration) SetOtherCategories(v string) *ItemsLimitConfiguration {
	s.OtherCategories = &v
	return s
}

// The parameters for Jira.
type JiraParameters struct {
	_ struct{} `type:"structure"`

	// The base URL of the Jira site.
	//
	// SiteBaseUrl is a required field
	SiteBaseUrl *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JiraParameters) 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 JiraParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *JiraParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "JiraParameters"}
	if s.SiteBaseUrl == nil {
		invalidParams.Add(request.NewErrParamRequired("SiteBaseUrl"))
	}
	if s.SiteBaseUrl != nil && len(*s.SiteBaseUrl) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SiteBaseUrl", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSiteBaseUrl sets the SiteBaseUrl field's value.
func (s *JiraParameters) SetSiteBaseUrl(v string) *JiraParameters {
	s.SiteBaseUrl = &v
	return s
}

// The instructions associated with a join.
type JoinInstruction struct {
	_ struct{} `type:"structure"`

	// Join key properties of the left operand.
	LeftJoinKeyProperties *JoinKeyProperties `type:"structure"`

	// The operand on the left side of a join.
	//
	// LeftOperand is a required field
	LeftOperand *string `min:"1" type:"string" required:"true"`

	// The join instructions provided in the ON clause of a join.
	//
	// OnClause is a required field
	OnClause *string `min:"1" type:"string" required:"true"`

	// Join key properties of the right operand.
	RightJoinKeyProperties *JoinKeyProperties `type:"structure"`

	// The operand on the right side of a join.
	//
	// RightOperand is a required field
	RightOperand *string `min:"1" type:"string" required:"true"`

	// The type of join that it is.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"JoinType"`
}

// 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 JoinInstruction) 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 JoinInstruction) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *JoinInstruction) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "JoinInstruction"}
	if s.LeftOperand == nil {
		invalidParams.Add(request.NewErrParamRequired("LeftOperand"))
	}
	if s.LeftOperand != nil && len(*s.LeftOperand) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("LeftOperand", 1))
	}
	if s.OnClause == nil {
		invalidParams.Add(request.NewErrParamRequired("OnClause"))
	}
	if s.OnClause != nil && len(*s.OnClause) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("OnClause", 1))
	}
	if s.RightOperand == nil {
		invalidParams.Add(request.NewErrParamRequired("RightOperand"))
	}
	if s.RightOperand != nil && len(*s.RightOperand) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RightOperand", 1))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetLeftJoinKeyProperties sets the LeftJoinKeyProperties field's value.
func (s *JoinInstruction) SetLeftJoinKeyProperties(v *JoinKeyProperties) *JoinInstruction {
	s.LeftJoinKeyProperties = v
	return s
}

// SetLeftOperand sets the LeftOperand field's value.
func (s *JoinInstruction) SetLeftOperand(v string) *JoinInstruction {
	s.LeftOperand = &v
	return s
}

// SetOnClause sets the OnClause field's value.
func (s *JoinInstruction) SetOnClause(v string) *JoinInstruction {
	s.OnClause = &v
	return s
}

// SetRightJoinKeyProperties sets the RightJoinKeyProperties field's value.
func (s *JoinInstruction) SetRightJoinKeyProperties(v *JoinKeyProperties) *JoinInstruction {
	s.RightJoinKeyProperties = v
	return s
}

// SetRightOperand sets the RightOperand field's value.
func (s *JoinInstruction) SetRightOperand(v string) *JoinInstruction {
	s.RightOperand = &v
	return s
}

// SetType sets the Type field's value.
func (s *JoinInstruction) SetType(v string) *JoinInstruction {
	s.Type = &v
	return s
}

// Properties associated with the columns participating in a join.
type JoinKeyProperties struct {
	_ struct{} `type:"structure"`

	// A value that indicates that a row in a table is uniquely identified by the
	// columns in a join key. This is used by Amazon QuickSight to optimize query
	// performance.
	UniqueKey *bool `type:"boolean"`
}

// 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 JoinKeyProperties) 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 JoinKeyProperties) GoString() string {
	return s.String()
}

// SetUniqueKey sets the UniqueKey field's value.
func (s *JoinKeyProperties) SetUniqueKey(v bool) *JoinKeyProperties {
	s.UniqueKey = &v
	return s
}

// The conditional formatting for the actual value of a KPI visual.
type KPIActualValueConditionalFormatting struct {
	_ struct{} `type:"structure"`

	// The conditional formatting of the actual value's icon.
	Icon *ConditionalFormattingIcon `type:"structure"`

	// The conditional formatting of the actual value's text color.
	TextColor *ConditionalFormattingColor `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 KPIActualValueConditionalFormatting) 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 KPIActualValueConditionalFormatting) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KPIActualValueConditionalFormatting) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KPIActualValueConditionalFormatting"}
	if s.Icon != nil {
		if err := s.Icon.Validate(); err != nil {
			invalidParams.AddNested("Icon", err.(request.ErrInvalidParams))
		}
	}
	if s.TextColor != nil {
		if err := s.TextColor.Validate(); err != nil {
			invalidParams.AddNested("TextColor", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIcon sets the Icon field's value.
func (s *KPIActualValueConditionalFormatting) SetIcon(v *ConditionalFormattingIcon) *KPIActualValueConditionalFormatting {
	s.Icon = v
	return s
}

// SetTextColor sets the TextColor field's value.
func (s *KPIActualValueConditionalFormatting) SetTextColor(v *ConditionalFormattingColor) *KPIActualValueConditionalFormatting {
	s.TextColor = v
	return s
}

// The conditional formatting for the comparison value of a KPI visual.
type KPIComparisonValueConditionalFormatting struct {
	_ struct{} `type:"structure"`

	// The conditional formatting of the comparison value's icon.
	Icon *ConditionalFormattingIcon `type:"structure"`

	// The conditional formatting of the comparison value's text color.
	TextColor *ConditionalFormattingColor `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 KPIComparisonValueConditionalFormatting) 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 KPIComparisonValueConditionalFormatting) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KPIComparisonValueConditionalFormatting) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KPIComparisonValueConditionalFormatting"}
	if s.Icon != nil {
		if err := s.Icon.Validate(); err != nil {
			invalidParams.AddNested("Icon", err.(request.ErrInvalidParams))
		}
	}
	if s.TextColor != nil {
		if err := s.TextColor.Validate(); err != nil {
			invalidParams.AddNested("TextColor", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIcon sets the Icon field's value.
func (s *KPIComparisonValueConditionalFormatting) SetIcon(v *ConditionalFormattingIcon) *KPIComparisonValueConditionalFormatting {
	s.Icon = v
	return s
}

// SetTextColor sets the TextColor field's value.
func (s *KPIComparisonValueConditionalFormatting) SetTextColor(v *ConditionalFormattingColor) *KPIComparisonValueConditionalFormatting {
	s.TextColor = v
	return s
}

// The conditional formatting of a KPI visual.
type KPIConditionalFormatting struct {
	_ struct{} `type:"structure"`

	// The conditional formatting options of a KPI visual.
	ConditionalFormattingOptions []*KPIConditionalFormattingOption `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 KPIConditionalFormatting) 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 KPIConditionalFormatting) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KPIConditionalFormatting) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KPIConditionalFormatting"}
	if s.ConditionalFormattingOptions != nil {
		for i, v := range s.ConditionalFormattingOptions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ConditionalFormattingOptions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConditionalFormattingOptions sets the ConditionalFormattingOptions field's value.
func (s *KPIConditionalFormatting) SetConditionalFormattingOptions(v []*KPIConditionalFormattingOption) *KPIConditionalFormatting {
	s.ConditionalFormattingOptions = v
	return s
}

// The conditional formatting options of a KPI visual.
type KPIConditionalFormattingOption struct {
	_ struct{} `type:"structure"`

	// The conditional formatting for the actual value of a KPI visual.
	ActualValue *KPIActualValueConditionalFormatting `type:"structure"`

	// The conditional formatting for the comparison value of a KPI visual.
	ComparisonValue *KPIComparisonValueConditionalFormatting `type:"structure"`

	// The conditional formatting for the primary value of a KPI visual.
	PrimaryValue *KPIPrimaryValueConditionalFormatting `type:"structure"`

	// The conditional formatting for the progress bar of a KPI visual.
	ProgressBar *KPIProgressBarConditionalFormatting `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 KPIConditionalFormattingOption) 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 KPIConditionalFormattingOption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KPIConditionalFormattingOption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KPIConditionalFormattingOption"}
	if s.ActualValue != nil {
		if err := s.ActualValue.Validate(); err != nil {
			invalidParams.AddNested("ActualValue", err.(request.ErrInvalidParams))
		}
	}
	if s.ComparisonValue != nil {
		if err := s.ComparisonValue.Validate(); err != nil {
			invalidParams.AddNested("ComparisonValue", err.(request.ErrInvalidParams))
		}
	}
	if s.PrimaryValue != nil {
		if err := s.PrimaryValue.Validate(); err != nil {
			invalidParams.AddNested("PrimaryValue", err.(request.ErrInvalidParams))
		}
	}
	if s.ProgressBar != nil {
		if err := s.ProgressBar.Validate(); err != nil {
			invalidParams.AddNested("ProgressBar", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActualValue sets the ActualValue field's value.
func (s *KPIConditionalFormattingOption) SetActualValue(v *KPIActualValueConditionalFormatting) *KPIConditionalFormattingOption {
	s.ActualValue = v
	return s
}

// SetComparisonValue sets the ComparisonValue field's value.
func (s *KPIConditionalFormattingOption) SetComparisonValue(v *KPIComparisonValueConditionalFormatting) *KPIConditionalFormattingOption {
	s.ComparisonValue = v
	return s
}

// SetPrimaryValue sets the PrimaryValue field's value.
func (s *KPIConditionalFormattingOption) SetPrimaryValue(v *KPIPrimaryValueConditionalFormatting) *KPIConditionalFormattingOption {
	s.PrimaryValue = v
	return s
}

// SetProgressBar sets the ProgressBar field's value.
func (s *KPIConditionalFormattingOption) SetProgressBar(v *KPIProgressBarConditionalFormatting) *KPIConditionalFormattingOption {
	s.ProgressBar = v
	return s
}

// The configuration of a KPI visual.
type KPIConfiguration struct {
	_ struct{} `type:"structure"`

	// The field well configuration of a KPI visual.
	FieldWells *KPIFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The options that determine the presentation of a KPI visual.
	KPIOptions *KPIOptions `type:"structure"`

	// The sort configuration of a KPI visual.
	SortConfiguration *KPISortConfiguration `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 KPIConfiguration) 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 KPIConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KPIConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KPIConfiguration"}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.KPIOptions != nil {
		if err := s.KPIOptions.Validate(); err != nil {
			invalidParams.AddNested("KPIOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.SortConfiguration != nil {
		if err := s.SortConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SortConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldWells sets the FieldWells field's value.
func (s *KPIConfiguration) SetFieldWells(v *KPIFieldWells) *KPIConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *KPIConfiguration) SetInteractions(v *VisualInteractionOptions) *KPIConfiguration {
	s.Interactions = v
	return s
}

// SetKPIOptions sets the KPIOptions field's value.
func (s *KPIConfiguration) SetKPIOptions(v *KPIOptions) *KPIConfiguration {
	s.KPIOptions = v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *KPIConfiguration) SetSortConfiguration(v *KPISortConfiguration) *KPIConfiguration {
	s.SortConfiguration = v
	return s
}

// The field well configuration of a KPI visual.
type KPIFieldWells struct {
	_ struct{} `type:"structure"`

	// The target value field wells of a KPI visual.
	TargetValues []*MeasureField `type:"list"`

	// The trend group field wells of a KPI visual.
	TrendGroups []*DimensionField `type:"list"`

	// The value field wells of a KPI visual.
	Values []*MeasureField `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 KPIFieldWells) 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 KPIFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KPIFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KPIFieldWells"}
	if s.TargetValues != nil {
		for i, v := range s.TargetValues {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetValues", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.TrendGroups != nil {
		for i, v := range s.TrendGroups {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TrendGroups", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Values != nil {
		for i, v := range s.Values {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Values", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTargetValues sets the TargetValues field's value.
func (s *KPIFieldWells) SetTargetValues(v []*MeasureField) *KPIFieldWells {
	s.TargetValues = v
	return s
}

// SetTrendGroups sets the TrendGroups field's value.
func (s *KPIFieldWells) SetTrendGroups(v []*DimensionField) *KPIFieldWells {
	s.TrendGroups = v
	return s
}

// SetValues sets the Values field's value.
func (s *KPIFieldWells) SetValues(v []*MeasureField) *KPIFieldWells {
	s.Values = v
	return s
}

// The options that determine the presentation of a KPI visual.
type KPIOptions struct {
	_ struct{} `type:"structure"`

	// The comparison configuration of a KPI visual.
	Comparison *ComparisonConfiguration `type:"structure"`

	// The options that determine the primary value display type.
	PrimaryValueDisplayType *string `type:"string" enum:"PrimaryValueDisplayType"`

	// The options that determine the primary value font configuration.
	PrimaryValueFontConfiguration *FontConfiguration `type:"structure"`

	// The options that determine the presentation of the progress bar of a KPI
	// visual.
	ProgressBar *ProgressBarOptions `type:"structure"`

	// The options that determine the presentation of the secondary value of a KPI
	// visual.
	SecondaryValue *SecondaryValueOptions `type:"structure"`

	// The options that determine the secondary value font configuration.
	SecondaryValueFontConfiguration *FontConfiguration `type:"structure"`

	// The options that determine the visibility, color, type, and tooltip visibility
	// of the sparkline of a KPI visual.
	Sparkline *KPISparklineOptions `type:"structure"`

	// The options that determine the presentation of trend arrows in a KPI visual.
	TrendArrows *TrendArrowOptions `type:"structure"`

	// The options that determine the layout a KPI visual.
	VisualLayoutOptions *KPIVisualLayoutOptions `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 KPIOptions) 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 KPIOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KPIOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KPIOptions"}
	if s.Comparison != nil {
		if err := s.Comparison.Validate(); err != nil {
			invalidParams.AddNested("Comparison", err.(request.ErrInvalidParams))
		}
	}
	if s.Sparkline != nil {
		if err := s.Sparkline.Validate(); err != nil {
			invalidParams.AddNested("Sparkline", err.(request.ErrInvalidParams))
		}
	}
	if s.VisualLayoutOptions != nil {
		if err := s.VisualLayoutOptions.Validate(); err != nil {
			invalidParams.AddNested("VisualLayoutOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetComparison sets the Comparison field's value.
func (s *KPIOptions) SetComparison(v *ComparisonConfiguration) *KPIOptions {
	s.Comparison = v
	return s
}

// SetPrimaryValueDisplayType sets the PrimaryValueDisplayType field's value.
func (s *KPIOptions) SetPrimaryValueDisplayType(v string) *KPIOptions {
	s.PrimaryValueDisplayType = &v
	return s
}

// SetPrimaryValueFontConfiguration sets the PrimaryValueFontConfiguration field's value.
func (s *KPIOptions) SetPrimaryValueFontConfiguration(v *FontConfiguration) *KPIOptions {
	s.PrimaryValueFontConfiguration = v
	return s
}

// SetProgressBar sets the ProgressBar field's value.
func (s *KPIOptions) SetProgressBar(v *ProgressBarOptions) *KPIOptions {
	s.ProgressBar = v
	return s
}

// SetSecondaryValue sets the SecondaryValue field's value.
func (s *KPIOptions) SetSecondaryValue(v *SecondaryValueOptions) *KPIOptions {
	s.SecondaryValue = v
	return s
}

// SetSecondaryValueFontConfiguration sets the SecondaryValueFontConfiguration field's value.
func (s *KPIOptions) SetSecondaryValueFontConfiguration(v *FontConfiguration) *KPIOptions {
	s.SecondaryValueFontConfiguration = v
	return s
}

// SetSparkline sets the Sparkline field's value.
func (s *KPIOptions) SetSparkline(v *KPISparklineOptions) *KPIOptions {
	s.Sparkline = v
	return s
}

// SetTrendArrows sets the TrendArrows field's value.
func (s *KPIOptions) SetTrendArrows(v *TrendArrowOptions) *KPIOptions {
	s.TrendArrows = v
	return s
}

// SetVisualLayoutOptions sets the VisualLayoutOptions field's value.
func (s *KPIOptions) SetVisualLayoutOptions(v *KPIVisualLayoutOptions) *KPIOptions {
	s.VisualLayoutOptions = v
	return s
}

// The conditional formatting for the primary value of a KPI visual.
type KPIPrimaryValueConditionalFormatting struct {
	_ struct{} `type:"structure"`

	// The conditional formatting of the primary value's icon.
	Icon *ConditionalFormattingIcon `type:"structure"`

	// The conditional formatting of the primary value's text color.
	TextColor *ConditionalFormattingColor `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 KPIPrimaryValueConditionalFormatting) 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 KPIPrimaryValueConditionalFormatting) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KPIPrimaryValueConditionalFormatting) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KPIPrimaryValueConditionalFormatting"}
	if s.Icon != nil {
		if err := s.Icon.Validate(); err != nil {
			invalidParams.AddNested("Icon", err.(request.ErrInvalidParams))
		}
	}
	if s.TextColor != nil {
		if err := s.TextColor.Validate(); err != nil {
			invalidParams.AddNested("TextColor", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIcon sets the Icon field's value.
func (s *KPIPrimaryValueConditionalFormatting) SetIcon(v *ConditionalFormattingIcon) *KPIPrimaryValueConditionalFormatting {
	s.Icon = v
	return s
}

// SetTextColor sets the TextColor field's value.
func (s *KPIPrimaryValueConditionalFormatting) SetTextColor(v *ConditionalFormattingColor) *KPIPrimaryValueConditionalFormatting {
	s.TextColor = v
	return s
}

// The conditional formatting for the progress bar of a KPI visual.
type KPIProgressBarConditionalFormatting struct {
	_ struct{} `type:"structure"`

	// The conditional formatting of the progress bar's foreground color.
	ForegroundColor *ConditionalFormattingColor `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 KPIProgressBarConditionalFormatting) 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 KPIProgressBarConditionalFormatting) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KPIProgressBarConditionalFormatting) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KPIProgressBarConditionalFormatting"}
	if s.ForegroundColor != nil {
		if err := s.ForegroundColor.Validate(); err != nil {
			invalidParams.AddNested("ForegroundColor", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetForegroundColor sets the ForegroundColor field's value.
func (s *KPIProgressBarConditionalFormatting) SetForegroundColor(v *ConditionalFormattingColor) *KPIProgressBarConditionalFormatting {
	s.ForegroundColor = v
	return s
}

// The sort configuration of a KPI visual.
type KPISortConfiguration struct {
	_ struct{} `type:"structure"`

	// The sort configuration of the trend group fields.
	TrendGroupSort []*FieldSortOptions `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 KPISortConfiguration) 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 KPISortConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KPISortConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KPISortConfiguration"}
	if s.TrendGroupSort != nil {
		for i, v := range s.TrendGroupSort {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TrendGroupSort", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTrendGroupSort sets the TrendGroupSort field's value.
func (s *KPISortConfiguration) SetTrendGroupSort(v []*FieldSortOptions) *KPISortConfiguration {
	s.TrendGroupSort = v
	return s
}

// The options that determine the visibility, color, type, and tooltip visibility
// of the sparkline of a KPI visual.
type KPISparklineOptions struct {
	_ struct{} `type:"structure"`

	// The color of the sparkline.
	Color *string `type:"string"`

	// The tooltip visibility of the sparkline.
	TooltipVisibility *string `type:"string" enum:"Visibility"`

	// The type of the sparkline.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"KPISparklineType"`

	// The visibility of the sparkline.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 KPISparklineOptions) 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 KPISparklineOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KPISparklineOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KPISparklineOptions"}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColor sets the Color field's value.
func (s *KPISparklineOptions) SetColor(v string) *KPISparklineOptions {
	s.Color = &v
	return s
}

// SetTooltipVisibility sets the TooltipVisibility field's value.
func (s *KPISparklineOptions) SetTooltipVisibility(v string) *KPISparklineOptions {
	s.TooltipVisibility = &v
	return s
}

// SetType sets the Type field's value.
func (s *KPISparklineOptions) SetType(v string) *KPISparklineOptions {
	s.Type = &v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *KPISparklineOptions) SetVisibility(v string) *KPISparklineOptions {
	s.Visibility = &v
	return s
}

// A key performance indicator (KPI).
//
// For more information, see Using KPIs (https://docs.aws.amazon.com/quicksight/latest/user/kpi.html)
// in the Amazon QuickSight User Guide.
type KPIVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration of a KPI visual.
	ChartConfiguration *KPIConfiguration `type:"structure"`

	// The column hierarchy that is used during drill-downs and drill-ups.
	ColumnHierarchies []*ColumnHierarchy `type:"list"`

	// The conditional formatting of a KPI visual.
	ConditionalFormatting *KPIConditionalFormatting `type:"structure"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers.
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s KPIVisual) 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 KPIVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KPIVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KPIVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ColumnHierarchies != nil {
		for i, v := range s.ColumnHierarchies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnHierarchies", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ConditionalFormatting != nil {
		if err := s.ConditionalFormatting.Validate(); err != nil {
			invalidParams.AddNested("ConditionalFormatting", err.(request.ErrInvalidParams))
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *KPIVisual) SetActions(v []*VisualCustomAction) *KPIVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *KPIVisual) SetChartConfiguration(v *KPIConfiguration) *KPIVisual {
	s.ChartConfiguration = v
	return s
}

// SetColumnHierarchies sets the ColumnHierarchies field's value.
func (s *KPIVisual) SetColumnHierarchies(v []*ColumnHierarchy) *KPIVisual {
	s.ColumnHierarchies = v
	return s
}

// SetConditionalFormatting sets the ConditionalFormatting field's value.
func (s *KPIVisual) SetConditionalFormatting(v *KPIConditionalFormatting) *KPIVisual {
	s.ConditionalFormatting = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *KPIVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *KPIVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *KPIVisual) SetTitle(v *VisualTitleLabelOptions) *KPIVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *KPIVisual) SetVisualId(v string) *KPIVisual {
	s.VisualId = &v
	return s
}

// The options that determine the layout a KPI visual.
type KPIVisualLayoutOptions struct {
	_ struct{} `type:"structure"`

	// The standard layout of the KPI visual.
	StandardLayout *KPIVisualStandardLayout `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 KPIVisualLayoutOptions) 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 KPIVisualLayoutOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KPIVisualLayoutOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KPIVisualLayoutOptions"}
	if s.StandardLayout != nil {
		if err := s.StandardLayout.Validate(); err != nil {
			invalidParams.AddNested("StandardLayout", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStandardLayout sets the StandardLayout field's value.
func (s *KPIVisualLayoutOptions) SetStandardLayout(v *KPIVisualStandardLayout) *KPIVisualLayoutOptions {
	s.StandardLayout = v
	return s
}

// The standard layout of the KPI visual.
type KPIVisualStandardLayout struct {
	_ struct{} `type:"structure"`

	// The standard layout type.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"KPIVisualStandardLayoutType"`
}

// 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 KPIVisualStandardLayout) 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 KPIVisualStandardLayout) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *KPIVisualStandardLayout) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "KPIVisualStandardLayout"}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetType sets the Type field's value.
func (s *KPIVisualStandardLayout) SetType(v string) *KPIVisualStandardLayout {
	s.Type = &v
	return s
}

// The share label options for the labels.
type LabelOptions struct {
	_ struct{} `type:"structure"`

	// The text for the label.
	CustomLabel *string `type:"string"`

	// The font configuration of the label.
	FontConfiguration *FontConfiguration `type:"structure"`

	// Determines whether or not the label is visible.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 LabelOptions) 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 LabelOptions) GoString() string {
	return s.String()
}

// SetCustomLabel sets the CustomLabel field's value.
func (s *LabelOptions) SetCustomLabel(v string) *LabelOptions {
	s.CustomLabel = &v
	return s
}

// SetFontConfiguration sets the FontConfiguration field's value.
func (s *LabelOptions) SetFontConfiguration(v *FontConfiguration) *LabelOptions {
	s.FontConfiguration = v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *LabelOptions) SetVisibility(v string) *LabelOptions {
	s.Visibility = &v
	return s
}

// A Layout defines the placement of elements within a sheet.
//
// For more information, see Types of layout (https://docs.aws.amazon.com/quicksight/latest/user/types-of-layout.html)
// in the Amazon QuickSight User Guide.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type Layout struct {
	_ struct{} `type:"structure"`

	// The configuration that determines what the type of layout for a sheet.
	//
	// Configuration is a required field
	Configuration *LayoutConfiguration `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 Layout) 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 Layout) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Layout) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Layout"}
	if s.Configuration == nil {
		invalidParams.Add(request.NewErrParamRequired("Configuration"))
	}
	if s.Configuration != nil {
		if err := s.Configuration.Validate(); err != nil {
			invalidParams.AddNested("Configuration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConfiguration sets the Configuration field's value.
func (s *Layout) SetConfiguration(v *LayoutConfiguration) *Layout {
	s.Configuration = v
	return s
}

// The configuration that determines what the type of layout will be used on
// a sheet.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type LayoutConfiguration struct {
	_ struct{} `type:"structure"`

	// A free-form is optimized for a fixed width and has more control over the
	// exact placement of layout elements.
	FreeFormLayout *FreeFormLayoutConfiguration `type:"structure"`

	// A type of layout that can be used on a sheet. In a grid layout, visuals snap
	// to a grid with standard spacing and alignment. Dashboards are displayed as
	// designed, with options to fit to screen or view at actual size. A grid layout
	// can be configured to behave in one of two ways when the viewport is resized:
	// FIXED or RESPONSIVE.
	GridLayout *GridLayoutConfiguration `type:"structure"`

	// A section based layout organizes visuals into multiple sections and has customized
	// header, footer and page break.
	SectionBasedLayout *SectionBasedLayoutConfiguration `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 LayoutConfiguration) 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 LayoutConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *LayoutConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "LayoutConfiguration"}
	if s.FreeFormLayout != nil {
		if err := s.FreeFormLayout.Validate(); err != nil {
			invalidParams.AddNested("FreeFormLayout", err.(request.ErrInvalidParams))
		}
	}
	if s.GridLayout != nil {
		if err := s.GridLayout.Validate(); err != nil {
			invalidParams.AddNested("GridLayout", err.(request.ErrInvalidParams))
		}
	}
	if s.SectionBasedLayout != nil {
		if err := s.SectionBasedLayout.Validate(); err != nil {
			invalidParams.AddNested("SectionBasedLayout", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFreeFormLayout sets the FreeFormLayout field's value.
func (s *LayoutConfiguration) SetFreeFormLayout(v *FreeFormLayoutConfiguration) *LayoutConfiguration {
	s.FreeFormLayout = v
	return s
}

// SetGridLayout sets the GridLayout field's value.
func (s *LayoutConfiguration) SetGridLayout(v *GridLayoutConfiguration) *LayoutConfiguration {
	s.GridLayout = v
	return s
}

// SetSectionBasedLayout sets the SectionBasedLayout field's value.
func (s *LayoutConfiguration) SetSectionBasedLayout(v *SectionBasedLayoutConfiguration) *LayoutConfiguration {
	s.SectionBasedLayout = v
	return s
}

// The options for the legend setup of a visual.
type LegendOptions struct {
	_ struct{} `type:"structure"`

	// The height of the legend. If this value is omitted, a default height is used
	// when rendering.
	Height *string `type:"string"`

	// The positions for the legend. Choose one of the following options:
	//
	//    * AUTO
	//
	//    * RIGHT
	//
	//    * BOTTOM
	//
	//    * LEFT
	Position *string `type:"string" enum:"LegendPosition"`

	// The custom title for the legend.
	Title *LabelOptions `type:"structure"`

	// Determines whether or not the legend is visible.
	Visibility *string `type:"string" enum:"Visibility"`

	// The width of the legend. If this value is omitted, a default width is used
	// when rendering.
	Width *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LegendOptions) 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 LegendOptions) GoString() string {
	return s.String()
}

// SetHeight sets the Height field's value.
func (s *LegendOptions) SetHeight(v string) *LegendOptions {
	s.Height = &v
	return s
}

// SetPosition sets the Position field's value.
func (s *LegendOptions) SetPosition(v string) *LegendOptions {
	s.Position = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *LegendOptions) SetTitle(v *LabelOptions) *LegendOptions {
	s.Title = v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *LegendOptions) SetVisibility(v string) *LegendOptions {
	s.Visibility = &v
	return s
}

// SetWidth sets the Width field's value.
func (s *LegendOptions) SetWidth(v string) *LegendOptions {
	s.Width = &v
	return s
}

// A limit is exceeded.
type LimitExceededException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`

	// Limit exceeded.
	ResourceType *string `type:"string" enum:"ExceptionResourceType"`
}

// 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 LimitExceededException) 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 LimitExceededException) GoString() string {
	return s.String()
}

func newErrorLimitExceededException(v protocol.ResponseMetadata) error {
	return &LimitExceededException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *LimitExceededException) Code() string {
	return "LimitExceededException"
}

// Message returns the exception's message.
func (s *LimitExceededException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *LimitExceededException) OrigErr() error {
	return nil
}

func (s *LimitExceededException) 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 *LimitExceededException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *LimitExceededException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The field well configuration of a line chart.
type LineChartAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The category field wells of a line chart. Values are grouped by category
	// fields.
	Category []*DimensionField `type:"list"`

	// The color field wells of a line chart. Values are grouped by category fields.
	Colors []*DimensionField `type:"list"`

	// The small multiples field well of a line chart.
	SmallMultiples []*DimensionField `type:"list"`

	// The value field wells of a line chart. Values are aggregated based on categories.
	Values []*MeasureField `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 LineChartAggregatedFieldWells) 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 LineChartAggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *LineChartAggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "LineChartAggregatedFieldWells"}
	if s.Category != nil {
		for i, v := range s.Category {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Category", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Colors != nil {
		for i, v := range s.Colors {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Colors", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.SmallMultiples != nil {
		for i, v := range s.SmallMultiples {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SmallMultiples", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Values != nil {
		for i, v := range s.Values {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Values", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategory sets the Category field's value.
func (s *LineChartAggregatedFieldWells) SetCategory(v []*DimensionField) *LineChartAggregatedFieldWells {
	s.Category = v
	return s
}

// SetColors sets the Colors field's value.
func (s *LineChartAggregatedFieldWells) SetColors(v []*DimensionField) *LineChartAggregatedFieldWells {
	s.Colors = v
	return s
}

// SetSmallMultiples sets the SmallMultiples field's value.
func (s *LineChartAggregatedFieldWells) SetSmallMultiples(v []*DimensionField) *LineChartAggregatedFieldWells {
	s.SmallMultiples = v
	return s
}

// SetValues sets the Values field's value.
func (s *LineChartAggregatedFieldWells) SetValues(v []*MeasureField) *LineChartAggregatedFieldWells {
	s.Values = v
	return s
}

// The configuration of a line chart.
type LineChartConfiguration struct {
	_ struct{} `type:"structure"`

	// The default configuration of a line chart's contribution analysis.
	ContributionAnalysisDefaults []*ContributionAnalysisDefault `min:"1" type:"list"`

	// The data label configuration of a line chart.
	DataLabels *DataLabelOptions `type:"structure"`

	// The options that determine the default presentation of all line series in
	// LineChartVisual.
	DefaultSeriesSettings *LineChartDefaultSeriesSettings `type:"structure"`

	// The field well configuration of a line chart.
	FieldWells *LineChartFieldWells `type:"structure"`

	// The forecast configuration of a line chart.
	ForecastConfigurations []*ForecastConfiguration `type:"list"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The legend configuration of a line chart.
	Legend *LegendOptions `type:"structure"`

	// The series axis configuration of a line chart.
	PrimaryYAxisDisplayOptions *LineSeriesAxisDisplayOptions `type:"structure"`

	// The options that determine the presentation of the y-axis label.
	PrimaryYAxisLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The reference lines configuration of a line chart.
	ReferenceLines []*ReferenceLine `type:"list"`

	// The series axis configuration of a line chart.
	SecondaryYAxisDisplayOptions *LineSeriesAxisDisplayOptions `type:"structure"`

	// The options that determine the presentation of the secondary y-axis label.
	SecondaryYAxisLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The series item configuration of a line chart.
	Series []*SeriesItem `type:"list"`

	// The settings of a chart's single axis configuration.
	SingleAxisOptions *SingleAxisOptions `type:"structure"`

	// The small multiples setup for the visual.
	SmallMultiplesOptions *SmallMultiplesOptions `type:"structure"`

	// The sort configuration of a line chart.
	SortConfiguration *LineChartSortConfiguration `type:"structure"`

	// The tooltip configuration of a line chart.
	Tooltip *TooltipOptions `type:"structure"`

	// Determines the type of the line chart.
	Type *string `type:"string" enum:"LineChartType"`

	// The visual palette configuration of a line chart.
	VisualPalette *VisualPalette `type:"structure"`

	// The options that determine the presentation of the x-axis.
	XAxisDisplayOptions *AxisDisplayOptions `type:"structure"`

	// The options that determine the presentation of the x-axis label.
	XAxisLabelOptions *ChartAxisLabelOptions `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 LineChartConfiguration) 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 LineChartConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *LineChartConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "LineChartConfiguration"}
	if s.ContributionAnalysisDefaults != nil && len(s.ContributionAnalysisDefaults) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContributionAnalysisDefaults", 1))
	}
	if s.ContributionAnalysisDefaults != nil {
		for i, v := range s.ContributionAnalysisDefaults {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ContributionAnalysisDefaults", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.DataLabels != nil {
		if err := s.DataLabels.Validate(); err != nil {
			invalidParams.AddNested("DataLabels", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.ForecastConfigurations != nil {
		for i, v := range s.ForecastConfigurations {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ForecastConfigurations", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.PrimaryYAxisLabelOptions != nil {
		if err := s.PrimaryYAxisLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("PrimaryYAxisLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.ReferenceLines != nil {
		for i, v := range s.ReferenceLines {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReferenceLines", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.SecondaryYAxisLabelOptions != nil {
		if err := s.SecondaryYAxisLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("SecondaryYAxisLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.Series != nil {
		for i, v := range s.Series {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Series", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.SingleAxisOptions != nil {
		if err := s.SingleAxisOptions.Validate(); err != nil {
			invalidParams.AddNested("SingleAxisOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.SmallMultiplesOptions != nil {
		if err := s.SmallMultiplesOptions.Validate(); err != nil {
			invalidParams.AddNested("SmallMultiplesOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.SortConfiguration != nil {
		if err := s.SortConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SortConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Tooltip != nil {
		if err := s.Tooltip.Validate(); err != nil {
			invalidParams.AddNested("Tooltip", err.(request.ErrInvalidParams))
		}
	}
	if s.VisualPalette != nil {
		if err := s.VisualPalette.Validate(); err != nil {
			invalidParams.AddNested("VisualPalette", err.(request.ErrInvalidParams))
		}
	}
	if s.XAxisLabelOptions != nil {
		if err := s.XAxisLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("XAxisLabelOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContributionAnalysisDefaults sets the ContributionAnalysisDefaults field's value.
func (s *LineChartConfiguration) SetContributionAnalysisDefaults(v []*ContributionAnalysisDefault) *LineChartConfiguration {
	s.ContributionAnalysisDefaults = v
	return s
}

// SetDataLabels sets the DataLabels field's value.
func (s *LineChartConfiguration) SetDataLabels(v *DataLabelOptions) *LineChartConfiguration {
	s.DataLabels = v
	return s
}

// SetDefaultSeriesSettings sets the DefaultSeriesSettings field's value.
func (s *LineChartConfiguration) SetDefaultSeriesSettings(v *LineChartDefaultSeriesSettings) *LineChartConfiguration {
	s.DefaultSeriesSettings = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *LineChartConfiguration) SetFieldWells(v *LineChartFieldWells) *LineChartConfiguration {
	s.FieldWells = v
	return s
}

// SetForecastConfigurations sets the ForecastConfigurations field's value.
func (s *LineChartConfiguration) SetForecastConfigurations(v []*ForecastConfiguration) *LineChartConfiguration {
	s.ForecastConfigurations = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *LineChartConfiguration) SetInteractions(v *VisualInteractionOptions) *LineChartConfiguration {
	s.Interactions = v
	return s
}

// SetLegend sets the Legend field's value.
func (s *LineChartConfiguration) SetLegend(v *LegendOptions) *LineChartConfiguration {
	s.Legend = v
	return s
}

// SetPrimaryYAxisDisplayOptions sets the PrimaryYAxisDisplayOptions field's value.
func (s *LineChartConfiguration) SetPrimaryYAxisDisplayOptions(v *LineSeriesAxisDisplayOptions) *LineChartConfiguration {
	s.PrimaryYAxisDisplayOptions = v
	return s
}

// SetPrimaryYAxisLabelOptions sets the PrimaryYAxisLabelOptions field's value.
func (s *LineChartConfiguration) SetPrimaryYAxisLabelOptions(v *ChartAxisLabelOptions) *LineChartConfiguration {
	s.PrimaryYAxisLabelOptions = v
	return s
}

// SetReferenceLines sets the ReferenceLines field's value.
func (s *LineChartConfiguration) SetReferenceLines(v []*ReferenceLine) *LineChartConfiguration {
	s.ReferenceLines = v
	return s
}

// SetSecondaryYAxisDisplayOptions sets the SecondaryYAxisDisplayOptions field's value.
func (s *LineChartConfiguration) SetSecondaryYAxisDisplayOptions(v *LineSeriesAxisDisplayOptions) *LineChartConfiguration {
	s.SecondaryYAxisDisplayOptions = v
	return s
}

// SetSecondaryYAxisLabelOptions sets the SecondaryYAxisLabelOptions field's value.
func (s *LineChartConfiguration) SetSecondaryYAxisLabelOptions(v *ChartAxisLabelOptions) *LineChartConfiguration {
	s.SecondaryYAxisLabelOptions = v
	return s
}

// SetSeries sets the Series field's value.
func (s *LineChartConfiguration) SetSeries(v []*SeriesItem) *LineChartConfiguration {
	s.Series = v
	return s
}

// SetSingleAxisOptions sets the SingleAxisOptions field's value.
func (s *LineChartConfiguration) SetSingleAxisOptions(v *SingleAxisOptions) *LineChartConfiguration {
	s.SingleAxisOptions = v
	return s
}

// SetSmallMultiplesOptions sets the SmallMultiplesOptions field's value.
func (s *LineChartConfiguration) SetSmallMultiplesOptions(v *SmallMultiplesOptions) *LineChartConfiguration {
	s.SmallMultiplesOptions = v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *LineChartConfiguration) SetSortConfiguration(v *LineChartSortConfiguration) *LineChartConfiguration {
	s.SortConfiguration = v
	return s
}

// SetTooltip sets the Tooltip field's value.
func (s *LineChartConfiguration) SetTooltip(v *TooltipOptions) *LineChartConfiguration {
	s.Tooltip = v
	return s
}

// SetType sets the Type field's value.
func (s *LineChartConfiguration) SetType(v string) *LineChartConfiguration {
	s.Type = &v
	return s
}

// SetVisualPalette sets the VisualPalette field's value.
func (s *LineChartConfiguration) SetVisualPalette(v *VisualPalette) *LineChartConfiguration {
	s.VisualPalette = v
	return s
}

// SetXAxisDisplayOptions sets the XAxisDisplayOptions field's value.
func (s *LineChartConfiguration) SetXAxisDisplayOptions(v *AxisDisplayOptions) *LineChartConfiguration {
	s.XAxisDisplayOptions = v
	return s
}

// SetXAxisLabelOptions sets the XAxisLabelOptions field's value.
func (s *LineChartConfiguration) SetXAxisLabelOptions(v *ChartAxisLabelOptions) *LineChartConfiguration {
	s.XAxisLabelOptions = v
	return s
}

// The options that determine the default presentation of all line series in
// LineChartVisual.
type LineChartDefaultSeriesSettings struct {
	_ struct{} `type:"structure"`

	// The axis to which you are binding all line series to.
	AxisBinding *string `type:"string" enum:"AxisBinding"`

	// Line styles options for all line series in the visual.
	LineStyleSettings *LineChartLineStyleSettings `type:"structure"`

	// Marker styles options for all line series in the visual.
	MarkerStyleSettings *LineChartMarkerStyleSettings `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 LineChartDefaultSeriesSettings) 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 LineChartDefaultSeriesSettings) GoString() string {
	return s.String()
}

// SetAxisBinding sets the AxisBinding field's value.
func (s *LineChartDefaultSeriesSettings) SetAxisBinding(v string) *LineChartDefaultSeriesSettings {
	s.AxisBinding = &v
	return s
}

// SetLineStyleSettings sets the LineStyleSettings field's value.
func (s *LineChartDefaultSeriesSettings) SetLineStyleSettings(v *LineChartLineStyleSettings) *LineChartDefaultSeriesSettings {
	s.LineStyleSettings = v
	return s
}

// SetMarkerStyleSettings sets the MarkerStyleSettings field's value.
func (s *LineChartDefaultSeriesSettings) SetMarkerStyleSettings(v *LineChartMarkerStyleSettings) *LineChartDefaultSeriesSettings {
	s.MarkerStyleSettings = v
	return s
}

// The field well configuration of a line chart.
type LineChartFieldWells struct {
	_ struct{} `type:"structure"`

	// The field well configuration of a line chart.
	LineChartAggregatedFieldWells *LineChartAggregatedFieldWells `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 LineChartFieldWells) 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 LineChartFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *LineChartFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "LineChartFieldWells"}
	if s.LineChartAggregatedFieldWells != nil {
		if err := s.LineChartAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("LineChartAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetLineChartAggregatedFieldWells sets the LineChartAggregatedFieldWells field's value.
func (s *LineChartFieldWells) SetLineChartAggregatedFieldWells(v *LineChartAggregatedFieldWells) *LineChartFieldWells {
	s.LineChartAggregatedFieldWells = v
	return s
}

// Line styles options for a line series in LineChartVisual.
type LineChartLineStyleSettings struct {
	_ struct{} `type:"structure"`

	// Interpolation style for line series.
	//
	//    * LINEAR: Show as default, linear style.
	//
	//    * SMOOTH: Show as a smooth curve.
	//
	//    * STEPPED: Show steps in line.
	LineInterpolation *string `type:"string" enum:"LineInterpolation"`

	// Line style for line series.
	//
	//    * SOLID: Show as a solid line.
	//
	//    * DOTTED: Show as a dotted line.
	//
	//    * DASHED: Show as a dashed line.
	LineStyle *string `type:"string" enum:"LineChartLineStyle"`

	// Configuration option that determines whether to show the line for the series.
	LineVisibility *string `type:"string" enum:"Visibility"`

	// Width that determines the line thickness.
	LineWidth *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LineChartLineStyleSettings) 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 LineChartLineStyleSettings) GoString() string {
	return s.String()
}

// SetLineInterpolation sets the LineInterpolation field's value.
func (s *LineChartLineStyleSettings) SetLineInterpolation(v string) *LineChartLineStyleSettings {
	s.LineInterpolation = &v
	return s
}

// SetLineStyle sets the LineStyle field's value.
func (s *LineChartLineStyleSettings) SetLineStyle(v string) *LineChartLineStyleSettings {
	s.LineStyle = &v
	return s
}

// SetLineVisibility sets the LineVisibility field's value.
func (s *LineChartLineStyleSettings) SetLineVisibility(v string) *LineChartLineStyleSettings {
	s.LineVisibility = &v
	return s
}

// SetLineWidth sets the LineWidth field's value.
func (s *LineChartLineStyleSettings) SetLineWidth(v string) *LineChartLineStyleSettings {
	s.LineWidth = &v
	return s
}

// Marker styles options for a line series in LineChartVisual.
type LineChartMarkerStyleSettings struct {
	_ struct{} `type:"structure"`

	// Color of marker in the series.
	MarkerColor *string `type:"string"`

	// Shape option for markers in the series.
	//
	//    * CIRCLE: Show marker as a circle.
	//
	//    * TRIANGLE: Show marker as a triangle.
	//
	//    * SQUARE: Show marker as a square.
	//
	//    * DIAMOND: Show marker as a diamond.
	//
	//    * ROUNDED_SQUARE: Show marker as a rounded square.
	MarkerShape *string `type:"string" enum:"LineChartMarkerShape"`

	// Size of marker in the series.
	MarkerSize *string `type:"string"`

	// Configuration option that determines whether to show the markers in the series.
	MarkerVisibility *string `type:"string" enum:"Visibility"`
}

// 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 LineChartMarkerStyleSettings) 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 LineChartMarkerStyleSettings) GoString() string {
	return s.String()
}

// SetMarkerColor sets the MarkerColor field's value.
func (s *LineChartMarkerStyleSettings) SetMarkerColor(v string) *LineChartMarkerStyleSettings {
	s.MarkerColor = &v
	return s
}

// SetMarkerShape sets the MarkerShape field's value.
func (s *LineChartMarkerStyleSettings) SetMarkerShape(v string) *LineChartMarkerStyleSettings {
	s.MarkerShape = &v
	return s
}

// SetMarkerSize sets the MarkerSize field's value.
func (s *LineChartMarkerStyleSettings) SetMarkerSize(v string) *LineChartMarkerStyleSettings {
	s.MarkerSize = &v
	return s
}

// SetMarkerVisibility sets the MarkerVisibility field's value.
func (s *LineChartMarkerStyleSettings) SetMarkerVisibility(v string) *LineChartMarkerStyleSettings {
	s.MarkerVisibility = &v
	return s
}

// The options that determine the presentation of a line series in the visual
type LineChartSeriesSettings struct {
	_ struct{} `type:"structure"`

	// Line styles options for a line series in LineChartVisual.
	LineStyleSettings *LineChartLineStyleSettings `type:"structure"`

	// Marker styles options for a line series in LineChartVisual.
	MarkerStyleSettings *LineChartMarkerStyleSettings `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 LineChartSeriesSettings) 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 LineChartSeriesSettings) GoString() string {
	return s.String()
}

// SetLineStyleSettings sets the LineStyleSettings field's value.
func (s *LineChartSeriesSettings) SetLineStyleSettings(v *LineChartLineStyleSettings) *LineChartSeriesSettings {
	s.LineStyleSettings = v
	return s
}

// SetMarkerStyleSettings sets the MarkerStyleSettings field's value.
func (s *LineChartSeriesSettings) SetMarkerStyleSettings(v *LineChartMarkerStyleSettings) *LineChartSeriesSettings {
	s.MarkerStyleSettings = v
	return s
}

// The sort configuration of a line chart.
type LineChartSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The limit on the number of categories that are displayed in a line chart.
	CategoryItemsLimitConfiguration *ItemsLimitConfiguration `type:"structure"`

	// The sort configuration of the category fields.
	CategorySort []*FieldSortOptions `type:"list"`

	// The limit on the number of lines that are displayed in a line chart.
	ColorItemsLimitConfiguration *ItemsLimitConfiguration `type:"structure"`

	// The limit on the number of small multiples panels that are displayed.
	SmallMultiplesLimitConfiguration *ItemsLimitConfiguration `type:"structure"`

	// The sort configuration of the small multiples field.
	SmallMultiplesSort []*FieldSortOptions `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 LineChartSortConfiguration) 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 LineChartSortConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *LineChartSortConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "LineChartSortConfiguration"}
	if s.CategorySort != nil {
		for i, v := range s.CategorySort {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CategorySort", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.SmallMultiplesSort != nil {
		for i, v := range s.SmallMultiplesSort {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SmallMultiplesSort", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategoryItemsLimitConfiguration sets the CategoryItemsLimitConfiguration field's value.
func (s *LineChartSortConfiguration) SetCategoryItemsLimitConfiguration(v *ItemsLimitConfiguration) *LineChartSortConfiguration {
	s.CategoryItemsLimitConfiguration = v
	return s
}

// SetCategorySort sets the CategorySort field's value.
func (s *LineChartSortConfiguration) SetCategorySort(v []*FieldSortOptions) *LineChartSortConfiguration {
	s.CategorySort = v
	return s
}

// SetColorItemsLimitConfiguration sets the ColorItemsLimitConfiguration field's value.
func (s *LineChartSortConfiguration) SetColorItemsLimitConfiguration(v *ItemsLimitConfiguration) *LineChartSortConfiguration {
	s.ColorItemsLimitConfiguration = v
	return s
}

// SetSmallMultiplesLimitConfiguration sets the SmallMultiplesLimitConfiguration field's value.
func (s *LineChartSortConfiguration) SetSmallMultiplesLimitConfiguration(v *ItemsLimitConfiguration) *LineChartSortConfiguration {
	s.SmallMultiplesLimitConfiguration = v
	return s
}

// SetSmallMultiplesSort sets the SmallMultiplesSort field's value.
func (s *LineChartSortConfiguration) SetSmallMultiplesSort(v []*FieldSortOptions) *LineChartSortConfiguration {
	s.SmallMultiplesSort = v
	return s
}

// A line chart.
//
// For more information, see Using line charts (https://docs.aws.amazon.com/quicksight/latest/user/line-charts.html)
// in the Amazon QuickSight User Guide.
type LineChartVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration of a line chart.
	ChartConfiguration *LineChartConfiguration `type:"structure"`

	// The column hierarchy that is used during drill-downs and drill-ups.
	ColumnHierarchies []*ColumnHierarchy `type:"list"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers.
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LineChartVisual) 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 LineChartVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *LineChartVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "LineChartVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ColumnHierarchies != nil {
		for i, v := range s.ColumnHierarchies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnHierarchies", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *LineChartVisual) SetActions(v []*VisualCustomAction) *LineChartVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *LineChartVisual) SetChartConfiguration(v *LineChartConfiguration) *LineChartVisual {
	s.ChartConfiguration = v
	return s
}

// SetColumnHierarchies sets the ColumnHierarchies field's value.
func (s *LineChartVisual) SetColumnHierarchies(v []*ColumnHierarchy) *LineChartVisual {
	s.ColumnHierarchies = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *LineChartVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *LineChartVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *LineChartVisual) SetTitle(v *VisualTitleLabelOptions) *LineChartVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *LineChartVisual) SetVisualId(v string) *LineChartVisual {
	s.VisualId = &v
	return s
}

// The series axis configuration of a line chart.
type LineSeriesAxisDisplayOptions struct {
	_ struct{} `type:"structure"`

	// The options that determine the presentation of the line series axis.
	AxisOptions *AxisDisplayOptions `type:"structure"`

	// The configuration options that determine how missing data is treated during
	// the rendering of a line chart.
	MissingDataConfigurations []*MissingDataConfiguration `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 LineSeriesAxisDisplayOptions) 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 LineSeriesAxisDisplayOptions) GoString() string {
	return s.String()
}

// SetAxisOptions sets the AxisOptions field's value.
func (s *LineSeriesAxisDisplayOptions) SetAxisOptions(v *AxisDisplayOptions) *LineSeriesAxisDisplayOptions {
	s.AxisOptions = v
	return s
}

// SetMissingDataConfigurations sets the MissingDataConfigurations field's value.
func (s *LineSeriesAxisDisplayOptions) SetMissingDataConfigurations(v []*MissingDataConfiguration) *LineSeriesAxisDisplayOptions {
	s.MissingDataConfigurations = v
	return s
}

// A structure that contains the configuration of a shareable link to the dashboard.
type LinkSharingConfiguration struct {
	_ struct{} `type:"structure"`

	// A structure that contains the permissions of a shareable link.
	Permissions []*ResourcePermission `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LinkSharingConfiguration) 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 LinkSharingConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *LinkSharingConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "LinkSharingConfiguration"}
	if s.Permissions != nil && len(s.Permissions) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Permissions", 1))
	}
	if s.Permissions != nil {
		for i, v := range s.Permissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Permissions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPermissions sets the Permissions field's value.
func (s *LinkSharingConfiguration) SetPermissions(v []*ResourcePermission) *LinkSharingConfiguration {
	s.Permissions = v
	return s
}

type ListAnalysesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the analyses.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to return.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListAnalysesInput) 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 ListAnalysesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListAnalysesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListAnalysesInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListAnalysesInput) SetAwsAccountId(v string) *ListAnalysesInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListAnalysesInput) SetMaxResults(v int64) *ListAnalysesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAnalysesInput) SetNextToken(v string) *ListAnalysesInput {
	s.NextToken = &v
	return s
}

type ListAnalysesOutput struct {
	_ struct{} `type:"structure"`

	// Metadata describing each of the analyses that are listed.
	AnalysisSummaryList []*AnalysisSummary `type:"list"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListAnalysesOutput) 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 ListAnalysesOutput) GoString() string {
	return s.String()
}

// SetAnalysisSummaryList sets the AnalysisSummaryList field's value.
func (s *ListAnalysesOutput) SetAnalysisSummaryList(v []*AnalysisSummary) *ListAnalysesOutput {
	s.AnalysisSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAnalysesOutput) SetNextToken(v string) *ListAnalysesOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListAnalysesOutput) SetRequestId(v string) *ListAnalysesOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListAnalysesOutput) SetStatus(v int64) *ListAnalysesOutput {
	s.Status = &v
	return s
}

type ListAssetBundleExportJobsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that the export jobs were executed
	// in.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListAssetBundleExportJobsInput) 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 ListAssetBundleExportJobsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListAssetBundleExportJobsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListAssetBundleExportJobsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListAssetBundleExportJobsInput) SetAwsAccountId(v string) *ListAssetBundleExportJobsInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListAssetBundleExportJobsInput) SetMaxResults(v int64) *ListAssetBundleExportJobsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssetBundleExportJobsInput) SetNextToken(v string) *ListAssetBundleExportJobsInput {
	s.NextToken = &v
	return s
}

type ListAssetBundleExportJobsOutput struct {
	_ struct{} `type:"structure"`

	// A list of export job summaries.
	AssetBundleExportJobSummaryList []*AssetBundleExportJobSummary `type:"list"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListAssetBundleExportJobsOutput) 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 ListAssetBundleExportJobsOutput) GoString() string {
	return s.String()
}

// SetAssetBundleExportJobSummaryList sets the AssetBundleExportJobSummaryList field's value.
func (s *ListAssetBundleExportJobsOutput) SetAssetBundleExportJobSummaryList(v []*AssetBundleExportJobSummary) *ListAssetBundleExportJobsOutput {
	s.AssetBundleExportJobSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssetBundleExportJobsOutput) SetNextToken(v string) *ListAssetBundleExportJobsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListAssetBundleExportJobsOutput) SetRequestId(v string) *ListAssetBundleExportJobsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListAssetBundleExportJobsOutput) SetStatus(v int64) *ListAssetBundleExportJobsOutput {
	s.Status = &v
	return s
}

type ListAssetBundleImportJobsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that the import jobs were executed
	// in.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListAssetBundleImportJobsInput) 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 ListAssetBundleImportJobsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListAssetBundleImportJobsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListAssetBundleImportJobsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListAssetBundleImportJobsInput) SetAwsAccountId(v string) *ListAssetBundleImportJobsInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListAssetBundleImportJobsInput) SetMaxResults(v int64) *ListAssetBundleImportJobsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssetBundleImportJobsInput) SetNextToken(v string) *ListAssetBundleImportJobsInput {
	s.NextToken = &v
	return s
}

type ListAssetBundleImportJobsOutput struct {
	_ struct{} `type:"structure"`

	// A list of import job summaries.
	AssetBundleImportJobSummaryList []*AssetBundleImportJobSummary `type:"list"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the response.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListAssetBundleImportJobsOutput) 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 ListAssetBundleImportJobsOutput) GoString() string {
	return s.String()
}

// SetAssetBundleImportJobSummaryList sets the AssetBundleImportJobSummaryList field's value.
func (s *ListAssetBundleImportJobsOutput) SetAssetBundleImportJobSummaryList(v []*AssetBundleImportJobSummary) *ListAssetBundleImportJobsOutput {
	s.AssetBundleImportJobSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssetBundleImportJobsOutput) SetNextToken(v string) *ListAssetBundleImportJobsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListAssetBundleImportJobsOutput) SetRequestId(v string) *ListAssetBundleImportJobsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListAssetBundleImportJobsOutput) SetStatus(v int64) *ListAssetBundleImportJobsOutput {
	s.Status = &v
	return s
}

// The display options of a control.
type ListControlDisplayOptions struct {
	_ struct{} `type:"structure"`

	// The configuration of info icon label options.
	InfoIconLabelOptions *SheetControlInfoIconLabelOptions `type:"structure"`

	// The configuration of the search options in a list control.
	SearchOptions *ListControlSearchOptions `type:"structure"`

	// The configuration of the Select all options in a list control.
	SelectAllOptions *ListControlSelectAllOptions `type:"structure"`

	// The options to configure the title visibility, name, and font size.
	TitleOptions *LabelOptions `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 ListControlDisplayOptions) 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 ListControlDisplayOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListControlDisplayOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListControlDisplayOptions"}
	if s.InfoIconLabelOptions != nil {
		if err := s.InfoIconLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("InfoIconLabelOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInfoIconLabelOptions sets the InfoIconLabelOptions field's value.
func (s *ListControlDisplayOptions) SetInfoIconLabelOptions(v *SheetControlInfoIconLabelOptions) *ListControlDisplayOptions {
	s.InfoIconLabelOptions = v
	return s
}

// SetSearchOptions sets the SearchOptions field's value.
func (s *ListControlDisplayOptions) SetSearchOptions(v *ListControlSearchOptions) *ListControlDisplayOptions {
	s.SearchOptions = v
	return s
}

// SetSelectAllOptions sets the SelectAllOptions field's value.
func (s *ListControlDisplayOptions) SetSelectAllOptions(v *ListControlSelectAllOptions) *ListControlDisplayOptions {
	s.SelectAllOptions = v
	return s
}

// SetTitleOptions sets the TitleOptions field's value.
func (s *ListControlDisplayOptions) SetTitleOptions(v *LabelOptions) *ListControlDisplayOptions {
	s.TitleOptions = v
	return s
}

// The configuration of the search options in a list control.
type ListControlSearchOptions struct {
	_ struct{} `type:"structure"`

	// The visibility configuration of the search options in a list control.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 ListControlSearchOptions) 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 ListControlSearchOptions) GoString() string {
	return s.String()
}

// SetVisibility sets the Visibility field's value.
func (s *ListControlSearchOptions) SetVisibility(v string) *ListControlSearchOptions {
	s.Visibility = &v
	return s
}

// The configuration of the Select all options in a list control.
type ListControlSelectAllOptions struct {
	_ struct{} `type:"structure"`

	// The visibility configuration of the Select all options in a list control.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 ListControlSelectAllOptions) 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 ListControlSelectAllOptions) GoString() string {
	return s.String()
}

// SetVisibility sets the Visibility field's value.
func (s *ListControlSelectAllOptions) SetVisibility(v string) *ListControlSelectAllOptions {
	s.Visibility = &v
	return s
}

type ListDashboardVersionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the dashboard that
	// you're listing versions for.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the dashboard.
	//
	// DashboardId is a required field
	DashboardId *string `location:"uri" locationName:"DashboardId" min:"1" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListDashboardVersionsInput) 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 ListDashboardVersionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDashboardVersionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDashboardVersionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DashboardId == nil {
		invalidParams.Add(request.NewErrParamRequired("DashboardId"))
	}
	if s.DashboardId != nil && len(*s.DashboardId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DashboardId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListDashboardVersionsInput) SetAwsAccountId(v string) *ListDashboardVersionsInput {
	s.AwsAccountId = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *ListDashboardVersionsInput) SetDashboardId(v string) *ListDashboardVersionsInput {
	s.DashboardId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDashboardVersionsInput) SetMaxResults(v int64) *ListDashboardVersionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDashboardVersionsInput) SetNextToken(v string) *ListDashboardVersionsInput {
	s.NextToken = &v
	return s
}

type ListDashboardVersionsOutput struct {
	_ struct{} `type:"structure"`

	// A structure that contains information about each version of the dashboard.
	DashboardVersionSummaryList []*DashboardVersionSummary `type:"list"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListDashboardVersionsOutput) 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 ListDashboardVersionsOutput) GoString() string {
	return s.String()
}

// SetDashboardVersionSummaryList sets the DashboardVersionSummaryList field's value.
func (s *ListDashboardVersionsOutput) SetDashboardVersionSummaryList(v []*DashboardVersionSummary) *ListDashboardVersionsOutput {
	s.DashboardVersionSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDashboardVersionsOutput) SetNextToken(v string) *ListDashboardVersionsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListDashboardVersionsOutput) SetRequestId(v string) *ListDashboardVersionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListDashboardVersionsOutput) SetStatus(v int64) *ListDashboardVersionsOutput {
	s.Status = &v
	return s
}

type ListDashboardsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the dashboards that
	// you're listing.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListDashboardsInput) 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 ListDashboardsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDashboardsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDashboardsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListDashboardsInput) SetAwsAccountId(v string) *ListDashboardsInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDashboardsInput) SetMaxResults(v int64) *ListDashboardsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDashboardsInput) SetNextToken(v string) *ListDashboardsInput {
	s.NextToken = &v
	return s
}

type ListDashboardsOutput struct {
	_ struct{} `type:"structure"`

	// A structure that contains all of the dashboards in your Amazon Web Services
	// account. This structure provides basic information about the dashboards.
	DashboardSummaryList []*DashboardSummary `type:"list"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListDashboardsOutput) 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 ListDashboardsOutput) GoString() string {
	return s.String()
}

// SetDashboardSummaryList sets the DashboardSummaryList field's value.
func (s *ListDashboardsOutput) SetDashboardSummaryList(v []*DashboardSummary) *ListDashboardsOutput {
	s.DashboardSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDashboardsOutput) SetNextToken(v string) *ListDashboardsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListDashboardsOutput) SetRequestId(v string) *ListDashboardsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListDashboardsOutput) SetStatus(v int64) *ListDashboardsOutput {
	s.Status = &v
	return s
}

type ListDataSetsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListDataSetsInput) 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 ListDataSetsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDataSetsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDataSetsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListDataSetsInput) SetAwsAccountId(v string) *ListDataSetsInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDataSetsInput) SetMaxResults(v int64) *ListDataSetsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataSetsInput) SetNextToken(v string) *ListDataSetsInput {
	s.NextToken = &v
	return s
}

type ListDataSetsOutput struct {
	_ struct{} `type:"structure"`

	// The list of dataset summaries.
	DataSetSummaries []*DataSetSummary `type:"list"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListDataSetsOutput) 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 ListDataSetsOutput) GoString() string {
	return s.String()
}

// SetDataSetSummaries sets the DataSetSummaries field's value.
func (s *ListDataSetsOutput) SetDataSetSummaries(v []*DataSetSummary) *ListDataSetsOutput {
	s.DataSetSummaries = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataSetsOutput) SetNextToken(v string) *ListDataSetsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListDataSetsOutput) SetRequestId(v string) *ListDataSetsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListDataSetsOutput) SetStatus(v int64) *ListDataSetsOutput {
	s.Status = &v
	return s
}

type ListDataSourcesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListDataSourcesInput) 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 ListDataSourcesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDataSourcesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDataSourcesInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListDataSourcesInput) SetAwsAccountId(v string) *ListDataSourcesInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDataSourcesInput) SetMaxResults(v int64) *ListDataSourcesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataSourcesInput) SetNextToken(v string) *ListDataSourcesInput {
	s.NextToken = &v
	return s
}

type ListDataSourcesOutput struct {
	_ struct{} `type:"structure"`

	// A list of data sources.
	DataSources []*DataSource `type:"list"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListDataSourcesOutput) 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 ListDataSourcesOutput) GoString() string {
	return s.String()
}

// SetDataSources sets the DataSources field's value.
func (s *ListDataSourcesOutput) SetDataSources(v []*DataSource) *ListDataSourcesOutput {
	s.DataSources = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataSourcesOutput) SetNextToken(v string) *ListDataSourcesOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListDataSourcesOutput) SetRequestId(v string) *ListDataSourcesOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListDataSourcesOutput) SetStatus(v int64) *ListDataSourcesOutput {
	s.Status = &v
	return s
}

type ListFolderMembersInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that contains the folder.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the folder.
	//
	// FolderId is a required field
	FolderId *string `location:"uri" locationName:"FolderId" min:"1" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListFolderMembersInput) 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 ListFolderMembersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListFolderMembersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListFolderMembersInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.FolderId == nil {
		invalidParams.Add(request.NewErrParamRequired("FolderId"))
	}
	if s.FolderId != nil && len(*s.FolderId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FolderId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListFolderMembersInput) SetAwsAccountId(v string) *ListFolderMembersInput {
	s.AwsAccountId = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *ListFolderMembersInput) SetFolderId(v string) *ListFolderMembersInput {
	s.FolderId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListFolderMembersInput) SetMaxResults(v int64) *ListFolderMembersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListFolderMembersInput) SetNextToken(v string) *ListFolderMembersInput {
	s.NextToken = &v
	return s
}

type ListFolderMembersOutput struct {
	_ struct{} `type:"structure"`

	// A structure that contains all of the folder members (dashboards, analyses,
	// and datasets) in the folder.
	FolderMemberList []*MemberIdArnPair `type:"list"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListFolderMembersOutput) 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 ListFolderMembersOutput) GoString() string {
	return s.String()
}

// SetFolderMemberList sets the FolderMemberList field's value.
func (s *ListFolderMembersOutput) SetFolderMemberList(v []*MemberIdArnPair) *ListFolderMembersOutput {
	s.FolderMemberList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListFolderMembersOutput) SetNextToken(v string) *ListFolderMembersOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListFolderMembersOutput) SetRequestId(v string) *ListFolderMembersOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListFolderMembersOutput) SetStatus(v int64) *ListFolderMembersOutput {
	s.Status = &v
	return s
}

type ListFoldersInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that contains the folder.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListFoldersInput) 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 ListFoldersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListFoldersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListFoldersInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListFoldersInput) SetAwsAccountId(v string) *ListFoldersInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListFoldersInput) SetMaxResults(v int64) *ListFoldersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListFoldersInput) SetNextToken(v string) *ListFoldersInput {
	s.NextToken = &v
	return s
}

type ListFoldersOutput struct {
	_ struct{} `type:"structure"`

	// A structure that contains all of the folders in the Amazon Web Services account.
	// This structure provides basic information about the folders.
	FolderSummaryList []*FolderSummary `type:"list"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListFoldersOutput) 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 ListFoldersOutput) GoString() string {
	return s.String()
}

// SetFolderSummaryList sets the FolderSummaryList field's value.
func (s *ListFoldersOutput) SetFolderSummaryList(v []*FolderSummary) *ListFoldersOutput {
	s.FolderSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListFoldersOutput) SetNextToken(v string) *ListFoldersOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListFoldersOutput) SetRequestId(v string) *ListFoldersOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListFoldersOutput) SetStatus(v int64) *ListFoldersOutput {
	s.Status = &v
	return s
}

type ListGroupMembershipsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that the group is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The name of the group that you want to see a membership list of.
	//
	// GroupName is a required field
	GroupName *string `location:"uri" locationName:"GroupName" min:"1" type:"string" required:"true"`

	// The maximum number of results to return from this request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The namespace of the group that you want a list of users from.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListGroupMembershipsInput) 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 ListGroupMembershipsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListGroupMembershipsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListGroupMembershipsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.GroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("GroupName"))
	}
	if s.GroupName != nil && len(*s.GroupName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListGroupMembershipsInput) SetAwsAccountId(v string) *ListGroupMembershipsInput {
	s.AwsAccountId = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *ListGroupMembershipsInput) SetGroupName(v string) *ListGroupMembershipsInput {
	s.GroupName = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListGroupMembershipsInput) SetMaxResults(v int64) *ListGroupMembershipsInput {
	s.MaxResults = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *ListGroupMembershipsInput) SetNamespace(v string) *ListGroupMembershipsInput {
	s.Namespace = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListGroupMembershipsInput) SetNextToken(v string) *ListGroupMembershipsInput {
	s.NextToken = &v
	return s
}

type ListGroupMembershipsOutput struct {
	_ struct{} `type:"structure"`

	// The list of the members of the group.
	GroupMemberList []*GroupMember `type:"list"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListGroupMembershipsOutput) 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 ListGroupMembershipsOutput) GoString() string {
	return s.String()
}

// SetGroupMemberList sets the GroupMemberList field's value.
func (s *ListGroupMembershipsOutput) SetGroupMemberList(v []*GroupMember) *ListGroupMembershipsOutput {
	s.GroupMemberList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListGroupMembershipsOutput) SetNextToken(v string) *ListGroupMembershipsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListGroupMembershipsOutput) SetRequestId(v string) *ListGroupMembershipsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListGroupMembershipsOutput) SetStatus(v int64) *ListGroupMembershipsOutput {
	s.Status = &v
	return s
}

type ListGroupsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that the group is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to return.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The namespace that you want a list of groups from.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `location:"querystring" locationName:"next-token" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListGroupsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListGroupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListGroupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListGroupsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListGroupsInput) SetAwsAccountId(v string) *ListGroupsInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListGroupsInput) SetMaxResults(v int64) *ListGroupsInput {
	s.MaxResults = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *ListGroupsInput) SetNamespace(v string) *ListGroupsInput {
	s.Namespace = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListGroupsInput) SetNextToken(v string) *ListGroupsInput {
	s.NextToken = &v
	return s
}

type ListGroupsOutput struct {
	_ struct{} `type:"structure"`

	// The list of the groups.
	GroupList []*Group `type:"list"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListGroupsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListGroupsOutput) GoString() string {
	return s.String()
}

// SetGroupList sets the GroupList field's value.
func (s *ListGroupsOutput) SetGroupList(v []*Group) *ListGroupsOutput {
	s.GroupList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListGroupsOutput) SetNextToken(v string) *ListGroupsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListGroupsOutput) SetRequestId(v string) *ListGroupsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListGroupsOutput) SetStatus(v int64) *ListGroupsOutput {
	s.Status = &v
	return s
}

type ListIAMPolicyAssignmentsForUserInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the assignments.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The namespace of the assignment.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" type:"string"`

	// The name of the user.
	//
	// UserName is a required field
	UserName *string `location:"uri" locationName:"UserName" 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 ListIAMPolicyAssignmentsForUserInput) 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 ListIAMPolicyAssignmentsForUserInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListIAMPolicyAssignmentsForUserInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListIAMPolicyAssignmentsForUserInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}
	if s.UserName == nil {
		invalidParams.Add(request.NewErrParamRequired("UserName"))
	}
	if s.UserName != nil && len(*s.UserName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListIAMPolicyAssignmentsForUserInput) SetAwsAccountId(v string) *ListIAMPolicyAssignmentsForUserInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListIAMPolicyAssignmentsForUserInput) SetMaxResults(v int64) *ListIAMPolicyAssignmentsForUserInput {
	s.MaxResults = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *ListIAMPolicyAssignmentsForUserInput) SetNamespace(v string) *ListIAMPolicyAssignmentsForUserInput {
	s.Namespace = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListIAMPolicyAssignmentsForUserInput) SetNextToken(v string) *ListIAMPolicyAssignmentsForUserInput {
	s.NextToken = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *ListIAMPolicyAssignmentsForUserInput) SetUserName(v string) *ListIAMPolicyAssignmentsForUserInput {
	s.UserName = &v
	return s
}

type ListIAMPolicyAssignmentsForUserOutput struct {
	_ struct{} `type:"structure"`

	// The active assignments for this user.
	ActiveAssignments []*ActiveIAMPolicyAssignment `type:"list"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListIAMPolicyAssignmentsForUserOutput) 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 ListIAMPolicyAssignmentsForUserOutput) GoString() string {
	return s.String()
}

// SetActiveAssignments sets the ActiveAssignments field's value.
func (s *ListIAMPolicyAssignmentsForUserOutput) SetActiveAssignments(v []*ActiveIAMPolicyAssignment) *ListIAMPolicyAssignmentsForUserOutput {
	s.ActiveAssignments = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListIAMPolicyAssignmentsForUserOutput) SetNextToken(v string) *ListIAMPolicyAssignmentsForUserOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListIAMPolicyAssignmentsForUserOutput) SetRequestId(v string) *ListIAMPolicyAssignmentsForUserOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListIAMPolicyAssignmentsForUserOutput) SetStatus(v int64) *ListIAMPolicyAssignmentsForUserOutput {
	s.Status = &v
	return s
}

type ListIAMPolicyAssignmentsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The status of the assignments.
	AssignmentStatus *string `location:"querystring" locationName:"assignment-status" type:"string" enum:"AssignmentStatus"`

	// The ID of the Amazon Web Services account that contains these IAM policy
	// assignments.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The namespace for the assignments.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListIAMPolicyAssignmentsInput) 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 ListIAMPolicyAssignmentsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListIAMPolicyAssignmentsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListIAMPolicyAssignmentsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssignmentStatus sets the AssignmentStatus field's value.
func (s *ListIAMPolicyAssignmentsInput) SetAssignmentStatus(v string) *ListIAMPolicyAssignmentsInput {
	s.AssignmentStatus = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListIAMPolicyAssignmentsInput) SetAwsAccountId(v string) *ListIAMPolicyAssignmentsInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListIAMPolicyAssignmentsInput) SetMaxResults(v int64) *ListIAMPolicyAssignmentsInput {
	s.MaxResults = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *ListIAMPolicyAssignmentsInput) SetNamespace(v string) *ListIAMPolicyAssignmentsInput {
	s.Namespace = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListIAMPolicyAssignmentsInput) SetNextToken(v string) *ListIAMPolicyAssignmentsInput {
	s.NextToken = &v
	return s
}

type ListIAMPolicyAssignmentsOutput struct {
	_ struct{} `type:"structure"`

	// Information describing the IAM policy assignments.
	IAMPolicyAssignments []*IAMPolicyAssignmentSummary `type:"list"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListIAMPolicyAssignmentsOutput) 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 ListIAMPolicyAssignmentsOutput) GoString() string {
	return s.String()
}

// SetIAMPolicyAssignments sets the IAMPolicyAssignments field's value.
func (s *ListIAMPolicyAssignmentsOutput) SetIAMPolicyAssignments(v []*IAMPolicyAssignmentSummary) *ListIAMPolicyAssignmentsOutput {
	s.IAMPolicyAssignments = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListIAMPolicyAssignmentsOutput) SetNextToken(v string) *ListIAMPolicyAssignmentsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListIAMPolicyAssignmentsOutput) SetRequestId(v string) *ListIAMPolicyAssignmentsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListIAMPolicyAssignmentsOutput) SetStatus(v int64) *ListIAMPolicyAssignmentsOutput {
	s.Status = &v
	return s
}

type ListIdentityPropagationConfigsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contain the identity propagation
	// configurations of.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListIdentityPropagationConfigsInput) 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 ListIdentityPropagationConfigsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListIdentityPropagationConfigsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListIdentityPropagationConfigsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListIdentityPropagationConfigsInput) SetAwsAccountId(v string) *ListIdentityPropagationConfigsInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListIdentityPropagationConfigsInput) SetMaxResults(v int64) *ListIdentityPropagationConfigsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListIdentityPropagationConfigsInput) SetNextToken(v string) *ListIdentityPropagationConfigsInput {
	s.NextToken = &v
	return s
}

type ListIdentityPropagationConfigsOutput struct {
	_ struct{} `type:"structure"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// A list of services and their authorized targets that the Amazon QuickSight
	// IAM Identity Center application can access.
	Services []*AuthorizedTargetsByService `type:"list"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListIdentityPropagationConfigsOutput) 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 ListIdentityPropagationConfigsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListIdentityPropagationConfigsOutput) SetNextToken(v string) *ListIdentityPropagationConfigsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListIdentityPropagationConfigsOutput) SetRequestId(v string) *ListIdentityPropagationConfigsOutput {
	s.RequestId = &v
	return s
}

// SetServices sets the Services field's value.
func (s *ListIdentityPropagationConfigsOutput) SetServices(v []*AuthorizedTargetsByService) *ListIdentityPropagationConfigsOutput {
	s.Services = v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListIdentityPropagationConfigsOutput) SetStatus(v int64) *ListIdentityPropagationConfigsOutput {
	s.Status = &v
	return s
}

type ListIngestionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dataset used in the ingestion.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListIngestionsInput) 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 ListIngestionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListIngestionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListIngestionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListIngestionsInput) SetAwsAccountId(v string) *ListIngestionsInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *ListIngestionsInput) SetDataSetId(v string) *ListIngestionsInput {
	s.DataSetId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListIngestionsInput) SetMaxResults(v int64) *ListIngestionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListIngestionsInput) SetNextToken(v string) *ListIngestionsInput {
	s.NextToken = &v
	return s
}

type ListIngestionsOutput struct {
	_ struct{} `type:"structure"`

	// A list of the ingestions.
	Ingestions []*Ingestion `type:"list"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListIngestionsOutput) 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 ListIngestionsOutput) GoString() string {
	return s.String()
}

// SetIngestions sets the Ingestions field's value.
func (s *ListIngestionsOutput) SetIngestions(v []*Ingestion) *ListIngestionsOutput {
	s.Ingestions = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListIngestionsOutput) SetNextToken(v string) *ListIngestionsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListIngestionsOutput) SetRequestId(v string) *ListIngestionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListIngestionsOutput) SetStatus(v int64) *ListIngestionsOutput {
	s.Status = &v
	return s
}

type ListNamespacesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that contains the Amazon QuickSight
	// namespaces that you want to list.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to return.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// A unique pagination token that can be used in a subsequent request. You will
	// receive a pagination token in the response body of a previous ListNameSpaces
	// API call if there is more data that can be returned. To receive the data,
	// make another ListNamespaces API call with the returned token to retrieve
	// the next page of data. Each token is valid for 24 hours. If you try to make
	// a ListNamespaces API call with an expired token, you will receive a HTTP
	// 400 InvalidNextTokenException error.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListNamespacesInput) 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 ListNamespacesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListNamespacesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListNamespacesInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListNamespacesInput) SetAwsAccountId(v string) *ListNamespacesInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListNamespacesInput) SetMaxResults(v int64) *ListNamespacesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListNamespacesInput) SetNextToken(v string) *ListNamespacesInput {
	s.NextToken = &v
	return s
}

type ListNamespacesOutput struct {
	_ struct{} `type:"structure"`

	// The information about the namespaces in this Amazon Web Services account.
	// The response includes the namespace ARN, name, Amazon Web Services Region,
	// notification email address, creation status, and identity store.
	Namespaces []*NamespaceInfoV2 `type:"list"`

	// A unique pagination token that can be used in a subsequent request. Receiving
	// NextToken in your response inticates that there is more data that can be
	// returned. To receive the data, make another ListNamespaces API call with
	// the returned token to retrieve the next page of data. Each token is valid
	// for 24 hours. If you try to make a ListNamespaces API call with an expired
	// token, you will receive a HTTP 400 InvalidNextTokenException error.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListNamespacesOutput) 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 ListNamespacesOutput) GoString() string {
	return s.String()
}

// SetNamespaces sets the Namespaces field's value.
func (s *ListNamespacesOutput) SetNamespaces(v []*NamespaceInfoV2) *ListNamespacesOutput {
	s.Namespaces = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListNamespacesOutput) SetNextToken(v string) *ListNamespacesOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListNamespacesOutput) SetRequestId(v string) *ListNamespacesOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListNamespacesOutput) SetStatus(v int64) *ListNamespacesOutput {
	s.Status = &v
	return s
}

type ListRefreshSchedulesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dataset.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" 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 ListRefreshSchedulesInput) 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 ListRefreshSchedulesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListRefreshSchedulesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListRefreshSchedulesInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListRefreshSchedulesInput) SetAwsAccountId(v string) *ListRefreshSchedulesInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *ListRefreshSchedulesInput) SetDataSetId(v string) *ListRefreshSchedulesInput {
	s.DataSetId = &v
	return s
}

type ListRefreshSchedulesOutput struct {
	_ struct{} `type:"structure"`

	// The list of refresh schedules for the dataset.
	RefreshSchedules []*RefreshSchedule `type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListRefreshSchedulesOutput) 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 ListRefreshSchedulesOutput) GoString() string {
	return s.String()
}

// SetRefreshSchedules sets the RefreshSchedules field's value.
func (s *ListRefreshSchedulesOutput) SetRefreshSchedules(v []*RefreshSchedule) *ListRefreshSchedulesOutput {
	s.RefreshSchedules = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListRefreshSchedulesOutput) SetRequestId(v string) *ListRefreshSchedulesOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListRefreshSchedulesOutput) SetStatus(v int64) *ListRefreshSchedulesOutput {
	s.Status = &v
	return s
}

type ListRoleMembershipsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that you want to create a group
	// in. The Amazon Web Services account ID that you provide must be the same
	// Amazon Web Services account that contains your Amazon QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to return.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The namespace that includes the role.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `location:"querystring" locationName:"next-token" type:"string"`

	// The name of the role.
	//
	// Role is a required field
	Role *string `location:"uri" locationName:"Role" type:"string" required:"true" enum:"Role"`
}

// 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 ListRoleMembershipsInput) 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 ListRoleMembershipsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListRoleMembershipsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListRoleMembershipsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}
	if s.Role == nil {
		invalidParams.Add(request.NewErrParamRequired("Role"))
	}
	if s.Role != nil && len(*s.Role) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Role", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListRoleMembershipsInput) SetAwsAccountId(v string) *ListRoleMembershipsInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListRoleMembershipsInput) SetMaxResults(v int64) *ListRoleMembershipsInput {
	s.MaxResults = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *ListRoleMembershipsInput) SetNamespace(v string) *ListRoleMembershipsInput {
	s.Namespace = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListRoleMembershipsInput) SetNextToken(v string) *ListRoleMembershipsInput {
	s.NextToken = &v
	return s
}

// SetRole sets the Role field's value.
func (s *ListRoleMembershipsInput) SetRole(v string) *ListRoleMembershipsInput {
	s.Role = &v
	return s
}

type ListRoleMembershipsOutput struct {
	_ struct{} `type:"structure"`

	// The list of groups associated with a role
	MembersList []*string `type:"list"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListRoleMembershipsOutput) 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 ListRoleMembershipsOutput) GoString() string {
	return s.String()
}

// SetMembersList sets the MembersList field's value.
func (s *ListRoleMembershipsOutput) SetMembersList(v []*string) *ListRoleMembershipsOutput {
	s.MembersList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListRoleMembershipsOutput) SetNextToken(v string) *ListRoleMembershipsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListRoleMembershipsOutput) SetRequestId(v string) *ListRoleMembershipsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListRoleMembershipsOutput) SetStatus(v int64) *ListRoleMembershipsOutput {
	s.Status = &v
	return s
}

type ListTagsForResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the resource that you want a list of tags
	// for.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"ResourceArn" 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 Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// Contains a map of the key-value pairs for the resource tag or tags assigned
	// to the resource.
	Tags []*Tag `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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()
}

// SetRequestId sets the RequestId field's value.
func (s *ListTagsForResourceOutput) SetRequestId(v string) *ListTagsForResourceOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListTagsForResourceOutput) SetStatus(v int64) *ListTagsForResourceOutput {
	s.Status = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ListTagsForResourceOutput) SetTags(v []*Tag) *ListTagsForResourceOutput {
	s.Tags = v
	return s
}

type ListTemplateAliasesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the template aliases
	// that you're listing.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-result" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" type:"string"`

	// The ID for the template.
	//
	// TemplateId is a required field
	TemplateId *string `location:"uri" locationName:"TemplateId" 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 ListTemplateAliasesInput) 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 ListTemplateAliasesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTemplateAliasesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListTemplateAliasesInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.TemplateId == nil {
		invalidParams.Add(request.NewErrParamRequired("TemplateId"))
	}
	if s.TemplateId != nil && len(*s.TemplateId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TemplateId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListTemplateAliasesInput) SetAwsAccountId(v string) *ListTemplateAliasesInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListTemplateAliasesInput) SetMaxResults(v int64) *ListTemplateAliasesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListTemplateAliasesInput) SetNextToken(v string) *ListTemplateAliasesInput {
	s.NextToken = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *ListTemplateAliasesInput) SetTemplateId(v string) *ListTemplateAliasesInput {
	s.TemplateId = &v
	return s
}

type ListTemplateAliasesOutput struct {
	_ struct{} `type:"structure"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// A structure containing the list of the template's aliases.
	TemplateAliasList []*TemplateAlias `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 ListTemplateAliasesOutput) 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 ListTemplateAliasesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListTemplateAliasesOutput) SetNextToken(v string) *ListTemplateAliasesOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListTemplateAliasesOutput) SetRequestId(v string) *ListTemplateAliasesOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListTemplateAliasesOutput) SetStatus(v int64) *ListTemplateAliasesOutput {
	s.Status = &v
	return s
}

// SetTemplateAliasList sets the TemplateAliasList field's value.
func (s *ListTemplateAliasesOutput) SetTemplateAliasList(v []*TemplateAlias) *ListTemplateAliasesOutput {
	s.TemplateAliasList = v
	return s
}

type ListTemplateVersionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the templates that
	// you're listing.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" type:"string"`

	// The ID for the template.
	//
	// TemplateId is a required field
	TemplateId *string `location:"uri" locationName:"TemplateId" 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 ListTemplateVersionsInput) 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 ListTemplateVersionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTemplateVersionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListTemplateVersionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.TemplateId == nil {
		invalidParams.Add(request.NewErrParamRequired("TemplateId"))
	}
	if s.TemplateId != nil && len(*s.TemplateId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TemplateId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListTemplateVersionsInput) SetAwsAccountId(v string) *ListTemplateVersionsInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListTemplateVersionsInput) SetMaxResults(v int64) *ListTemplateVersionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListTemplateVersionsInput) SetNextToken(v string) *ListTemplateVersionsInput {
	s.NextToken = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *ListTemplateVersionsInput) SetTemplateId(v string) *ListTemplateVersionsInput {
	s.TemplateId = &v
	return s
}

type ListTemplateVersionsOutput struct {
	_ struct{} `type:"structure"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// A structure containing a list of all the versions of the specified template.
	TemplateVersionSummaryList []*TemplateVersionSummary `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 ListTemplateVersionsOutput) 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 ListTemplateVersionsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListTemplateVersionsOutput) SetNextToken(v string) *ListTemplateVersionsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListTemplateVersionsOutput) SetRequestId(v string) *ListTemplateVersionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListTemplateVersionsOutput) SetStatus(v int64) *ListTemplateVersionsOutput {
	s.Status = &v
	return s
}

// SetTemplateVersionSummaryList sets the TemplateVersionSummaryList field's value.
func (s *ListTemplateVersionsOutput) SetTemplateVersionSummaryList(v []*TemplateVersionSummary) *ListTemplateVersionsOutput {
	s.TemplateVersionSummaryList = v
	return s
}

type ListTemplatesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the templates that
	// you're listing.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-result" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListTemplatesInput) 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 ListTemplatesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTemplatesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListTemplatesInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListTemplatesInput) SetAwsAccountId(v string) *ListTemplatesInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListTemplatesInput) SetMaxResults(v int64) *ListTemplatesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListTemplatesInput) SetNextToken(v string) *ListTemplatesInput {
	s.NextToken = &v
	return s
}

type ListTemplatesOutput struct {
	_ struct{} `type:"structure"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// A structure containing information about the templates in the list.
	TemplateSummaryList []*TemplateSummary `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 ListTemplatesOutput) 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 ListTemplatesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListTemplatesOutput) SetNextToken(v string) *ListTemplatesOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListTemplatesOutput) SetRequestId(v string) *ListTemplatesOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListTemplatesOutput) SetStatus(v int64) *ListTemplatesOutput {
	s.Status = &v
	return s
}

// SetTemplateSummaryList sets the TemplateSummaryList field's value.
func (s *ListTemplatesOutput) SetTemplateSummaryList(v []*TemplateSummary) *ListTemplatesOutput {
	s.TemplateSummaryList = v
	return s
}

type ListThemeAliasesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the theme aliases
	// that you're listing.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-result" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" type:"string"`

	// The ID for the theme.
	//
	// ThemeId is a required field
	ThemeId *string `location:"uri" locationName:"ThemeId" 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 ListThemeAliasesInput) 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 ListThemeAliasesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListThemeAliasesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListThemeAliasesInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.ThemeId == nil {
		invalidParams.Add(request.NewErrParamRequired("ThemeId"))
	}
	if s.ThemeId != nil && len(*s.ThemeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ThemeId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListThemeAliasesInput) SetAwsAccountId(v string) *ListThemeAliasesInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListThemeAliasesInput) SetMaxResults(v int64) *ListThemeAliasesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListThemeAliasesInput) SetNextToken(v string) *ListThemeAliasesInput {
	s.NextToken = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *ListThemeAliasesInput) SetThemeId(v string) *ListThemeAliasesInput {
	s.ThemeId = &v
	return s
}

type ListThemeAliasesOutput struct {
	_ struct{} `type:"structure"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// A structure containing the list of the theme's aliases.
	ThemeAliasList []*ThemeAlias `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 ListThemeAliasesOutput) 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 ListThemeAliasesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListThemeAliasesOutput) SetNextToken(v string) *ListThemeAliasesOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListThemeAliasesOutput) SetRequestId(v string) *ListThemeAliasesOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListThemeAliasesOutput) SetStatus(v int64) *ListThemeAliasesOutput {
	s.Status = &v
	return s
}

// SetThemeAliasList sets the ThemeAliasList field's value.
func (s *ListThemeAliasesOutput) SetThemeAliasList(v []*ThemeAlias) *ListThemeAliasesOutput {
	s.ThemeAliasList = v
	return s
}

type ListThemeVersionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the themes that you're
	// listing.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" type:"string"`

	// The ID for the theme.
	//
	// ThemeId is a required field
	ThemeId *string `location:"uri" locationName:"ThemeId" 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 ListThemeVersionsInput) 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 ListThemeVersionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListThemeVersionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListThemeVersionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.ThemeId == nil {
		invalidParams.Add(request.NewErrParamRequired("ThemeId"))
	}
	if s.ThemeId != nil && len(*s.ThemeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ThemeId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListThemeVersionsInput) SetAwsAccountId(v string) *ListThemeVersionsInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListThemeVersionsInput) SetMaxResults(v int64) *ListThemeVersionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListThemeVersionsInput) SetNextToken(v string) *ListThemeVersionsInput {
	s.NextToken = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *ListThemeVersionsInput) SetThemeId(v string) *ListThemeVersionsInput {
	s.ThemeId = &v
	return s
}

type ListThemeVersionsOutput struct {
	_ struct{} `type:"structure"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// A structure containing a list of all the versions of the specified theme.
	ThemeVersionSummaryList []*ThemeVersionSummary `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 ListThemeVersionsOutput) 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 ListThemeVersionsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListThemeVersionsOutput) SetNextToken(v string) *ListThemeVersionsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListThemeVersionsOutput) SetRequestId(v string) *ListThemeVersionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListThemeVersionsOutput) SetStatus(v int64) *ListThemeVersionsOutput {
	s.Status = &v
	return s
}

// SetThemeVersionSummaryList sets the ThemeVersionSummaryList field's value.
func (s *ListThemeVersionsOutput) SetThemeVersionSummaryList(v []*ThemeVersionSummary) *ListThemeVersionsOutput {
	s.ThemeVersionSummaryList = v
	return s
}

type ListThemesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the themes that you're
	// listing.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" type:"string"`

	// The type of themes that you want to list. Valid options include the following:
	//
	//    * ALL (default)- Display all existing themes.
	//
	//    * CUSTOM - Display only the themes created by people using Amazon QuickSight.
	//
	//    * QUICKSIGHT - Display only the starting themes defined by Amazon QuickSight.
	Type *string `location:"querystring" locationName:"type" type:"string" enum:"ThemeType"`
}

// 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 ListThemesInput) 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 ListThemesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListThemesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListThemesInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListThemesInput) SetAwsAccountId(v string) *ListThemesInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListThemesInput) SetMaxResults(v int64) *ListThemesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListThemesInput) SetNextToken(v string) *ListThemesInput {
	s.NextToken = &v
	return s
}

// SetType sets the Type field's value.
func (s *ListThemesInput) SetType(v string) *ListThemesInput {
	s.Type = &v
	return s
}

type ListThemesOutput struct {
	_ struct{} `type:"structure"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// Information about the themes in the list.
	ThemeSummaryList []*ThemeSummary `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 ListThemesOutput) 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 ListThemesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListThemesOutput) SetNextToken(v string) *ListThemesOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListThemesOutput) SetRequestId(v string) *ListThemesOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListThemesOutput) SetStatus(v int64) *ListThemesOutput {
	s.Status = &v
	return s
}

// SetThemeSummaryList sets the ThemeSummaryList field's value.
func (s *ListThemesOutput) SetThemeSummaryList(v []*ThemeSummary) *ListThemesOutput {
	s.ThemeSummaryList = v
	return s
}

type ListTopicRefreshSchedulesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the topic whose refresh
	// schedule you want described.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the topic that you want to describe. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	//
	// TopicId is a required field
	TopicId *string `location:"uri" locationName:"TopicId" 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 ListTopicRefreshSchedulesInput) 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 ListTopicRefreshSchedulesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTopicRefreshSchedulesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListTopicRefreshSchedulesInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.TopicId == nil {
		invalidParams.Add(request.NewErrParamRequired("TopicId"))
	}
	if s.TopicId != nil && len(*s.TopicId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TopicId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListTopicRefreshSchedulesInput) SetAwsAccountId(v string) *ListTopicRefreshSchedulesInput {
	s.AwsAccountId = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *ListTopicRefreshSchedulesInput) SetTopicId(v string) *ListTopicRefreshSchedulesInput {
	s.TopicId = &v
	return s
}

type ListTopicRefreshSchedulesOutput struct {
	_ struct{} `type:"structure"`

	// The list of topic refresh schedules.
	RefreshSchedules []*TopicRefreshScheduleSummary `type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The Amazon Resource Name (ARN) of the topic.
	TopicArn *string `type:"string"`

	// The ID for the topic that you want to describe. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	TopicId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTopicRefreshSchedulesOutput) 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 ListTopicRefreshSchedulesOutput) GoString() string {
	return s.String()
}

// SetRefreshSchedules sets the RefreshSchedules field's value.
func (s *ListTopicRefreshSchedulesOutput) SetRefreshSchedules(v []*TopicRefreshScheduleSummary) *ListTopicRefreshSchedulesOutput {
	s.RefreshSchedules = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListTopicRefreshSchedulesOutput) SetRequestId(v string) *ListTopicRefreshSchedulesOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListTopicRefreshSchedulesOutput) SetStatus(v int64) *ListTopicRefreshSchedulesOutput {
	s.Status = &v
	return s
}

// SetTopicArn sets the TopicArn field's value.
func (s *ListTopicRefreshSchedulesOutput) SetTopicArn(v string) *ListTopicRefreshSchedulesOutput {
	s.TopicArn = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *ListTopicRefreshSchedulesOutput) SetTopicId(v string) *ListTopicRefreshSchedulesOutput {
	s.TopicId = &v
	return s
}

type ListTopicReviewedAnswersInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that containd the reviewed answers
	// that you want listed.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the topic that contains the reviewed answer that you want to list.
	// This ID is unique per Amazon Web Services Region for each Amazon Web Services
	// account.
	//
	// TopicId is a required field
	TopicId *string `location:"uri" locationName:"TopicId" 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 ListTopicReviewedAnswersInput) 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 ListTopicReviewedAnswersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTopicReviewedAnswersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListTopicReviewedAnswersInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.TopicId == nil {
		invalidParams.Add(request.NewErrParamRequired("TopicId"))
	}
	if s.TopicId != nil && len(*s.TopicId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TopicId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListTopicReviewedAnswersInput) SetAwsAccountId(v string) *ListTopicReviewedAnswersInput {
	s.AwsAccountId = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *ListTopicReviewedAnswersInput) SetTopicId(v string) *ListTopicReviewedAnswersInput {
	s.TopicId = &v
	return s
}

type ListTopicReviewedAnswersOutput struct {
	_ struct{} `type:"structure"`

	// The definition of all Answers in the topic.
	Answers []*TopicReviewedAnswer `type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The Amazon Resource Name (ARN) of the topic.
	TopicArn *string `type:"string"`

	// The ID for the topic that contains the reviewed answer that you want to list.
	// This ID is unique per Amazon Web Services Region for each Amazon Web Services
	// account.
	TopicId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTopicReviewedAnswersOutput) 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 ListTopicReviewedAnswersOutput) GoString() string {
	return s.String()
}

// SetAnswers sets the Answers field's value.
func (s *ListTopicReviewedAnswersOutput) SetAnswers(v []*TopicReviewedAnswer) *ListTopicReviewedAnswersOutput {
	s.Answers = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListTopicReviewedAnswersOutput) SetRequestId(v string) *ListTopicReviewedAnswersOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListTopicReviewedAnswersOutput) SetStatus(v int64) *ListTopicReviewedAnswersOutput {
	s.Status = &v
	return s
}

// SetTopicArn sets the TopicArn field's value.
func (s *ListTopicReviewedAnswersOutput) SetTopicArn(v string) *ListTopicReviewedAnswersOutput {
	s.TopicArn = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *ListTopicReviewedAnswersOutput) SetTopicId(v string) *ListTopicReviewedAnswersOutput {
	s.TopicId = &v
	return s
}

type ListTopicsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the topics that you
	// want to list.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListTopicsInput) 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 ListTopicsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTopicsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListTopicsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListTopicsInput) SetAwsAccountId(v string) *ListTopicsInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListTopicsInput) SetMaxResults(v int64) *ListTopicsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListTopicsInput) SetNextToken(v string) *ListTopicsInput {
	s.NextToken = &v
	return s
}

type ListTopicsOutput struct {
	_ struct{} `type:"structure"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// A list of topic summaries.
	TopicsSummaries []*TopicSummary `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 ListTopicsOutput) 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 ListTopicsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListTopicsOutput) SetNextToken(v string) *ListTopicsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListTopicsOutput) SetRequestId(v string) *ListTopicsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListTopicsOutput) SetStatus(v int64) *ListTopicsOutput {
	s.Status = &v
	return s
}

// SetTopicsSummaries sets the TopicsSummaries field's value.
func (s *ListTopicsOutput) SetTopicsSummaries(v []*TopicSummary) *ListTopicsOutput {
	s.TopicsSummaries = v
	return s
}

type ListUserGroupsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID that the user is in. Currently, you use
	// the ID for the Amazon Web Services account that contains your Amazon QuickSight
	// account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to return from this request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The namespace. Currently, you should set this to default.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `location:"querystring" locationName:"next-token" type:"string"`

	// The Amazon QuickSight user name that you want to list group memberships for.
	//
	// UserName is a required field
	UserName *string `location:"uri" locationName:"UserName" 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 ListUserGroupsInput) 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 ListUserGroupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListUserGroupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListUserGroupsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}
	if s.UserName == nil {
		invalidParams.Add(request.NewErrParamRequired("UserName"))
	}
	if s.UserName != nil && len(*s.UserName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListUserGroupsInput) SetAwsAccountId(v string) *ListUserGroupsInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListUserGroupsInput) SetMaxResults(v int64) *ListUserGroupsInput {
	s.MaxResults = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *ListUserGroupsInput) SetNamespace(v string) *ListUserGroupsInput {
	s.Namespace = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListUserGroupsInput) SetNextToken(v string) *ListUserGroupsInput {
	s.NextToken = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *ListUserGroupsInput) SetUserName(v string) *ListUserGroupsInput {
	s.UserName = &v
	return s
}

type ListUserGroupsOutput struct {
	_ struct{} `type:"structure"`

	// The list of groups the user is a member of.
	GroupList []*Group `type:"list"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 ListUserGroupsOutput) 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 ListUserGroupsOutput) GoString() string {
	return s.String()
}

// SetGroupList sets the GroupList field's value.
func (s *ListUserGroupsOutput) SetGroupList(v []*Group) *ListUserGroupsOutput {
	s.GroupList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListUserGroupsOutput) SetNextToken(v string) *ListUserGroupsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListUserGroupsOutput) SetRequestId(v string) *ListUserGroupsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListUserGroupsOutput) SetStatus(v int64) *ListUserGroupsOutput {
	s.Status = &v
	return s
}

type ListUsersInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID for the Amazon Web Services account that the user is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to return from this request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The namespace. Currently, you should set this to default.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListUsersInput) 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 ListUsersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListUsersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListUsersInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListUsersInput) SetAwsAccountId(v string) *ListUsersInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListUsersInput) SetMaxResults(v int64) *ListUsersInput {
	s.MaxResults = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *ListUsersInput) SetNamespace(v string) *ListUsersInput {
	s.Namespace = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListUsersInput) SetNextToken(v string) *ListUsersInput {
	s.NextToken = &v
	return s
}

type ListUsersOutput struct {
	_ struct{} `type:"structure"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The list of users.
	UserList []*User `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 ListUsersOutput) 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 ListUsersOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListUsersOutput) SetNextToken(v string) *ListUsersOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListUsersOutput) SetRequestId(v string) *ListUsersOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListUsersOutput) SetStatus(v int64) *ListUsersOutput {
	s.Status = &v
	return s
}

// SetUserList sets the UserList field's value.
func (s *ListUsersOutput) SetUserList(v []*User) *ListUsersOutput {
	s.UserList = v
	return s
}

type ListVPCConnectionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Web Services account ID of the account that contains the VPC connections
	// that you want to list.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `location:"querystring" locationName:"next-token" 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 ListVPCConnectionsInput) 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 ListVPCConnectionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListVPCConnectionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListVPCConnectionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListVPCConnectionsInput) SetAwsAccountId(v string) *ListVPCConnectionsInput {
	s.AwsAccountId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListVPCConnectionsInput) SetMaxResults(v int64) *ListVPCConnectionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListVPCConnectionsInput) SetNextToken(v string) *ListVPCConnectionsInput {
	s.NextToken = &v
	return s
}

type ListVPCConnectionsOutput struct {
	_ struct{} `type:"structure"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// A VPCConnectionSummaries object that returns a summary of VPC connection
	// objects.
	VPCConnectionSummaries []*VPCConnectionSummary `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 ListVPCConnectionsOutput) 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 ListVPCConnectionsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListVPCConnectionsOutput) SetNextToken(v string) *ListVPCConnectionsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *ListVPCConnectionsOutput) SetRequestId(v string) *ListVPCConnectionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListVPCConnectionsOutput) SetStatus(v int64) *ListVPCConnectionsOutput {
	s.Status = &v
	return s
}

// SetVPCConnectionSummaries sets the VPCConnectionSummaries field's value.
func (s *ListVPCConnectionsOutput) SetVPCConnectionSummaries(v []*VPCConnectionSummary) *ListVPCConnectionsOutput {
	s.VPCConnectionSummaries = v
	return s
}

// The configuration of loading animation in free-form layout.
type LoadingAnimation struct {
	_ struct{} `type:"structure"`

	// The visibility configuration of LoadingAnimation.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 LoadingAnimation) 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 LoadingAnimation) GoString() string {
	return s.String()
}

// SetVisibility sets the Visibility field's value.
func (s *LoadingAnimation) SetVisibility(v string) *LoadingAnimation {
	s.Visibility = &v
	return s
}

// The navigation configuration for CustomActionNavigationOperation.
type LocalNavigationConfiguration struct {
	_ struct{} `type:"structure"`

	// The sheet that is targeted for navigation in the same analysis.
	//
	// TargetSheetId is a required field
	TargetSheetId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LocalNavigationConfiguration) 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 LocalNavigationConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *LocalNavigationConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "LocalNavigationConfiguration"}
	if s.TargetSheetId == nil {
		invalidParams.Add(request.NewErrParamRequired("TargetSheetId"))
	}
	if s.TargetSheetId != nil && len(*s.TargetSheetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TargetSheetId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTargetSheetId sets the TargetSheetId field's value.
func (s *LocalNavigationConfiguration) SetTargetSheetId(v string) *LocalNavigationConfiguration {
	s.TargetSheetId = &v
	return s
}

// A logical table is a unit that joins and that data transformations operate
// on. A logical table has a source, which can be either a physical table or
// result of a join. When a logical table points to a physical table, the logical
// table acts as a mutable copy of that physical table through transform operations.
type LogicalTable struct {
	_ struct{} `type:"structure"`

	// A display name for the logical table.
	//
	// Alias is a required field
	Alias *string `min:"1" type:"string" required:"true"`

	// Transform operations that act on this logical table. For this structure to
	// be valid, only one of the attributes can be non-null.
	DataTransforms []*TransformOperation `min:"1" type:"list"`

	// Source of this logical table.
	//
	// Source is a required field
	Source *LogicalTableSource `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 LogicalTable) 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 LogicalTable) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *LogicalTable) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "LogicalTable"}
	if s.Alias == nil {
		invalidParams.Add(request.NewErrParamRequired("Alias"))
	}
	if s.Alias != nil && len(*s.Alias) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Alias", 1))
	}
	if s.DataTransforms != nil && len(s.DataTransforms) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataTransforms", 1))
	}
	if s.Source == nil {
		invalidParams.Add(request.NewErrParamRequired("Source"))
	}
	if s.DataTransforms != nil {
		for i, v := range s.DataTransforms {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DataTransforms", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Source != nil {
		if err := s.Source.Validate(); err != nil {
			invalidParams.AddNested("Source", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAlias sets the Alias field's value.
func (s *LogicalTable) SetAlias(v string) *LogicalTable {
	s.Alias = &v
	return s
}

// SetDataTransforms sets the DataTransforms field's value.
func (s *LogicalTable) SetDataTransforms(v []*TransformOperation) *LogicalTable {
	s.DataTransforms = v
	return s
}

// SetSource sets the Source field's value.
func (s *LogicalTable) SetSource(v *LogicalTableSource) *LogicalTable {
	s.Source = v
	return s
}

// Information about the source of a logical table. This is a variant type structure.
// For this structure to be valid, only one of the attributes can be non-null.
type LogicalTableSource struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Number (ARN) of the parent dataset.
	DataSetArn *string `type:"string"`

	// Specifies the result of a join of two logical tables.
	JoinInstruction *JoinInstruction `type:"structure"`

	// Physical table ID.
	PhysicalTableId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LogicalTableSource) 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 LogicalTableSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *LogicalTableSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "LogicalTableSource"}
	if s.PhysicalTableId != nil && len(*s.PhysicalTableId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PhysicalTableId", 1))
	}
	if s.JoinInstruction != nil {
		if err := s.JoinInstruction.Validate(); err != nil {
			invalidParams.AddNested("JoinInstruction", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataSetArn sets the DataSetArn field's value.
func (s *LogicalTableSource) SetDataSetArn(v string) *LogicalTableSource {
	s.DataSetArn = &v
	return s
}

// SetJoinInstruction sets the JoinInstruction field's value.
func (s *LogicalTableSource) SetJoinInstruction(v *JoinInstruction) *LogicalTableSource {
	s.JoinInstruction = v
	return s
}

// SetPhysicalTableId sets the PhysicalTableId field's value.
func (s *LogicalTableSource) SetPhysicalTableId(v string) *LogicalTableSource {
	s.PhysicalTableId = &v
	return s
}

// The text format for a subtitle.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type LongFormatText struct {
	_ struct{} `type:"structure"`

	// Plain text format.
	PlainText *string `min:"1" type:"string"`

	// Rich text. Examples of rich text include bold, underline, and italics.
	RichText *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LongFormatText) 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 LongFormatText) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *LongFormatText) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "LongFormatText"}
	if s.PlainText != nil && len(*s.PlainText) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PlainText", 1))
	}
	if s.RichText != nil && len(*s.RichText) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RichText", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPlainText sets the PlainText field's value.
func (s *LongFormatText) SetPlainText(v string) *LongFormatText {
	s.PlainText = &v
	return s
}

// SetRichText sets the RichText field's value.
func (s *LongFormatText) SetRichText(v string) *LongFormatText {
	s.RichText = &v
	return s
}

// The lookback window setup of an incremental refresh configuration.
type LookbackWindow struct {
	_ struct{} `type:"structure"`

	// The name of the lookback window column.
	//
	// ColumnName is a required field
	ColumnName *string `type:"string" required:"true"`

	// The lookback window column size.
	//
	// Size is a required field
	Size *int64 `min:"1" type:"long" required:"true"`

	// The size unit that is used for the lookback window column. Valid values for
	// this structure are HOUR, DAY, and WEEK.
	//
	// SizeUnit is a required field
	SizeUnit *string `type:"string" required:"true" enum:"LookbackWindowSizeUnit"`
}

// 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 LookbackWindow) 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 LookbackWindow) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *LookbackWindow) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "LookbackWindow"}
	if s.ColumnName == nil {
		invalidParams.Add(request.NewErrParamRequired("ColumnName"))
	}
	if s.Size == nil {
		invalidParams.Add(request.NewErrParamRequired("Size"))
	}
	if s.Size != nil && *s.Size < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Size", 1))
	}
	if s.SizeUnit == nil {
		invalidParams.Add(request.NewErrParamRequired("SizeUnit"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumnName sets the ColumnName field's value.
func (s *LookbackWindow) SetColumnName(v string) *LookbackWindow {
	s.ColumnName = &v
	return s
}

// SetSize sets the Size field's value.
func (s *LookbackWindow) SetSize(v int64) *LookbackWindow {
	s.Size = &v
	return s
}

// SetSizeUnit sets the SizeUnit field's value.
func (s *LookbackWindow) SetSizeUnit(v string) *LookbackWindow {
	s.SizeUnit = &v
	return s
}

// Amazon S3 manifest file location.
type ManifestFileLocation struct {
	_ struct{} `type:"structure"`

	// Amazon S3 bucket.
	//
	// Bucket is a required field
	Bucket *string `min:"1" type:"string" required:"true"`

	// Amazon S3 key that identifies an object.
	//
	// Key is a required field
	Key *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ManifestFileLocation) 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 ManifestFileLocation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ManifestFileLocation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ManifestFileLocation"}
	if s.Bucket == nil {
		invalidParams.Add(request.NewErrParamRequired("Bucket"))
	}
	if s.Bucket != nil && len(*s.Bucket) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
	}
	if s.Key == nil {
		invalidParams.Add(request.NewErrParamRequired("Key"))
	}
	if s.Key != nil && len(*s.Key) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBucket sets the Bucket field's value.
func (s *ManifestFileLocation) SetBucket(v string) *ManifestFileLocation {
	s.Bucket = &v
	return s
}

// SetKey sets the Key field's value.
func (s *ManifestFileLocation) SetKey(v string) *ManifestFileLocation {
	s.Key = &v
	return s
}

// A dataset parameter that is mapped to an analysis parameter.
type MappedDataSetParameter struct {
	_ struct{} `type:"structure"`

	// A unique name that identifies a dataset within the analysis or dashboard.
	//
	// DataSetIdentifier is a required field
	DataSetIdentifier *string `min:"1" type:"string" required:"true"`

	// The name of the dataset parameter.
	//
	// DataSetParameterName is a required field
	DataSetParameterName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MappedDataSetParameter) 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 MappedDataSetParameter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MappedDataSetParameter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MappedDataSetParameter"}
	if s.DataSetIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetIdentifier"))
	}
	if s.DataSetIdentifier != nil && len(*s.DataSetIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetIdentifier", 1))
	}
	if s.DataSetParameterName == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetParameterName"))
	}
	if s.DataSetParameterName != nil && len(*s.DataSetParameterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetParameterName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataSetIdentifier sets the DataSetIdentifier field's value.
func (s *MappedDataSetParameter) SetDataSetIdentifier(v string) *MappedDataSetParameter {
	s.DataSetIdentifier = &v
	return s
}

// SetDataSetParameterName sets the DataSetParameterName field's value.
func (s *MappedDataSetParameter) SetDataSetParameterName(v string) *MappedDataSetParameter {
	s.DataSetParameterName = &v
	return s
}

// The display options for margins around the outside edge of sheets.
type MarginStyle struct {
	_ struct{} `type:"structure"`

	// This Boolean value controls whether to display sheet margins.
	Show *bool `type:"boolean"`
}

// 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 MarginStyle) 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 MarginStyle) GoString() string {
	return s.String()
}

// SetShow sets the Show field's value.
func (s *MarginStyle) SetShow(v bool) *MarginStyle {
	s.Show = &v
	return s
}

// The parameters for MariaDB.
type MariaDbParameters struct {
	_ struct{} `type:"structure"`

	// Database.
	//
	// Database is a required field
	Database *string `min:"1" type:"string" required:"true"`

	// Host.
	//
	// Host is a required field
	Host *string `min:"1" type:"string" required:"true"`

	// Port.
	//
	// Port is a required field
	Port *int64 `min:"1" type:"integer" 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 MariaDbParameters) 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 MariaDbParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MariaDbParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MariaDbParameters"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Database != nil && len(*s.Database) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Database", 1))
	}
	if s.Host == nil {
		invalidParams.Add(request.NewErrParamRequired("Host"))
	}
	if s.Host != nil && len(*s.Host) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Host", 1))
	}
	if s.Port == nil {
		invalidParams.Add(request.NewErrParamRequired("Port"))
	}
	if s.Port != nil && *s.Port < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *MariaDbParameters) SetDatabase(v string) *MariaDbParameters {
	s.Database = &v
	return s
}

// SetHost sets the Host field's value.
func (s *MariaDbParameters) SetHost(v string) *MariaDbParameters {
	s.Host = &v
	return s
}

// SetPort sets the Port field's value.
func (s *MariaDbParameters) SetPort(v int64) *MariaDbParameters {
	s.Port = &v
	return s
}

// The maximum label of a data path label.
type MaximumLabelType struct {
	_ struct{} `type:"structure"`

	// The visibility of the maximum label.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 MaximumLabelType) 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 MaximumLabelType) GoString() string {
	return s.String()
}

// SetVisibility sets the Visibility field's value.
func (s *MaximumLabelType) SetVisibility(v string) *MaximumLabelType {
	s.Visibility = &v
	return s
}

// The maximum and minimum computation configuration.
type MaximumMinimumComputation struct {
	_ struct{} `type:"structure"`

	// The ID for a computation.
	//
	// ComputationId is a required field
	ComputationId *string `min:"1" type:"string" required:"true"`

	// The name of a computation.
	Name *string `type:"string"`

	// The time field that is used in a computation.
	Time *DimensionField `type:"structure"`

	// The type of computation. Choose one of the following options:
	//
	//    * MAXIMUM: A maximum computation.
	//
	//    * MINIMUM: A minimum computation.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"MaximumMinimumComputationType"`

	// The value field that is used in a computation.
	Value *MeasureField `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 MaximumMinimumComputation) 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 MaximumMinimumComputation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MaximumMinimumComputation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MaximumMinimumComputation"}
	if s.ComputationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ComputationId"))
	}
	if s.ComputationId != nil && len(*s.ComputationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComputationId", 1))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.Time != nil {
		if err := s.Time.Validate(); err != nil {
			invalidParams.AddNested("Time", err.(request.ErrInvalidParams))
		}
	}
	if s.Value != nil {
		if err := s.Value.Validate(); err != nil {
			invalidParams.AddNested("Value", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetComputationId sets the ComputationId field's value.
func (s *MaximumMinimumComputation) SetComputationId(v string) *MaximumMinimumComputation {
	s.ComputationId = &v
	return s
}

// SetName sets the Name field's value.
func (s *MaximumMinimumComputation) SetName(v string) *MaximumMinimumComputation {
	s.Name = &v
	return s
}

// SetTime sets the Time field's value.
func (s *MaximumMinimumComputation) SetTime(v *DimensionField) *MaximumMinimumComputation {
	s.Time = v
	return s
}

// SetType sets the Type field's value.
func (s *MaximumMinimumComputation) SetType(v string) *MaximumMinimumComputation {
	s.Type = &v
	return s
}

// SetValue sets the Value field's value.
func (s *MaximumMinimumComputation) SetValue(v *MeasureField) *MaximumMinimumComputation {
	s.Value = v
	return s
}

// The measure (metric) type field.
type MeasureField struct {
	_ struct{} `type:"structure"`

	// The calculated measure field only used in pivot tables.
	CalculatedMeasureField *CalculatedMeasureField `type:"structure"`

	// The measure type field with categorical type columns.
	CategoricalMeasureField *CategoricalMeasureField `type:"structure"`

	// The measure type field with date type columns.
	DateMeasureField *DateMeasureField `type:"structure"`

	// The measure type field with numerical type columns.
	NumericalMeasureField *NumericalMeasureField `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 MeasureField) 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 MeasureField) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MeasureField) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MeasureField"}
	if s.CalculatedMeasureField != nil {
		if err := s.CalculatedMeasureField.Validate(); err != nil {
			invalidParams.AddNested("CalculatedMeasureField", err.(request.ErrInvalidParams))
		}
	}
	if s.CategoricalMeasureField != nil {
		if err := s.CategoricalMeasureField.Validate(); err != nil {
			invalidParams.AddNested("CategoricalMeasureField", err.(request.ErrInvalidParams))
		}
	}
	if s.DateMeasureField != nil {
		if err := s.DateMeasureField.Validate(); err != nil {
			invalidParams.AddNested("DateMeasureField", err.(request.ErrInvalidParams))
		}
	}
	if s.NumericalMeasureField != nil {
		if err := s.NumericalMeasureField.Validate(); err != nil {
			invalidParams.AddNested("NumericalMeasureField", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCalculatedMeasureField sets the CalculatedMeasureField field's value.
func (s *MeasureField) SetCalculatedMeasureField(v *CalculatedMeasureField) *MeasureField {
	s.CalculatedMeasureField = v
	return s
}

// SetCategoricalMeasureField sets the CategoricalMeasureField field's value.
func (s *MeasureField) SetCategoricalMeasureField(v *CategoricalMeasureField) *MeasureField {
	s.CategoricalMeasureField = v
	return s
}

// SetDateMeasureField sets the DateMeasureField field's value.
func (s *MeasureField) SetDateMeasureField(v *DateMeasureField) *MeasureField {
	s.DateMeasureField = v
	return s
}

// SetNumericalMeasureField sets the NumericalMeasureField field's value.
func (s *MeasureField) SetNumericalMeasureField(v *NumericalMeasureField) *MeasureField {
	s.NumericalMeasureField = v
	return s
}

// An object that consists of a member Amazon Resource Name (ARN) and a member
// ID.
type MemberIdArnPair struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the member.
	MemberArn *string `type:"string"`

	// The ID of the member.
	MemberId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MemberIdArnPair) 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 MemberIdArnPair) GoString() string {
	return s.String()
}

// SetMemberArn sets the MemberArn field's value.
func (s *MemberIdArnPair) SetMemberArn(v string) *MemberIdArnPair {
	s.MemberArn = &v
	return s
}

// SetMemberId sets the MemberId field's value.
func (s *MemberIdArnPair) SetMemberId(v string) *MemberIdArnPair {
	s.MemberId = &v
	return s
}

// The metric comparison computation configuration.
type MetricComparisonComputation struct {
	_ struct{} `type:"structure"`

	// The ID for a computation.
	//
	// ComputationId is a required field
	ComputationId *string `min:"1" type:"string" required:"true"`

	// The field that is used in a metric comparison from value setup.
	FromValue *MeasureField `type:"structure"`

	// The name of a computation.
	Name *string `type:"string"`

	// The field that is used in a metric comparison to value setup.
	TargetValue *MeasureField `type:"structure"`

	// The time field that is used in a computation.
	Time *DimensionField `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 MetricComparisonComputation) 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 MetricComparisonComputation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MetricComparisonComputation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MetricComparisonComputation"}
	if s.ComputationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ComputationId"))
	}
	if s.ComputationId != nil && len(*s.ComputationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComputationId", 1))
	}
	if s.FromValue != nil {
		if err := s.FromValue.Validate(); err != nil {
			invalidParams.AddNested("FromValue", err.(request.ErrInvalidParams))
		}
	}
	if s.TargetValue != nil {
		if err := s.TargetValue.Validate(); err != nil {
			invalidParams.AddNested("TargetValue", err.(request.ErrInvalidParams))
		}
	}
	if s.Time != nil {
		if err := s.Time.Validate(); err != nil {
			invalidParams.AddNested("Time", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetComputationId sets the ComputationId field's value.
func (s *MetricComparisonComputation) SetComputationId(v string) *MetricComparisonComputation {
	s.ComputationId = &v
	return s
}

// SetFromValue sets the FromValue field's value.
func (s *MetricComparisonComputation) SetFromValue(v *MeasureField) *MetricComparisonComputation {
	s.FromValue = v
	return s
}

// SetName sets the Name field's value.
func (s *MetricComparisonComputation) SetName(v string) *MetricComparisonComputation {
	s.Name = &v
	return s
}

// SetTargetValue sets the TargetValue field's value.
func (s *MetricComparisonComputation) SetTargetValue(v *MeasureField) *MetricComparisonComputation {
	s.TargetValue = v
	return s
}

// SetTime sets the Time field's value.
func (s *MetricComparisonComputation) SetTime(v *DimensionField) *MetricComparisonComputation {
	s.Time = v
	return s
}

// The minimum label of a data path label.
type MinimumLabelType struct {
	_ struct{} `type:"structure"`

	// The visibility of the minimum label.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 MinimumLabelType) 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 MinimumLabelType) GoString() string {
	return s.String()
}

// SetVisibility sets the Visibility field's value.
func (s *MinimumLabelType) SetVisibility(v string) *MinimumLabelType {
	s.Visibility = &v
	return s
}

// The configuration options that determine how missing data is treated during
// the rendering of a line chart.
type MissingDataConfiguration struct {
	_ struct{} `type:"structure"`

	// The treatment option that determines how missing data should be rendered.
	// Choose from the following options:
	//
	//    * INTERPOLATE: Interpolate missing values between the prior and the next
	//    known value.
	//
	//    * SHOW_AS_ZERO: Show missing values as the value 0.
	//
	//    * SHOW_AS_BLANK: Display a blank space when rendering missing data.
	TreatmentOption *string `type:"string" enum:"MissingDataTreatmentOption"`
}

// 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 MissingDataConfiguration) 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 MissingDataConfiguration) GoString() string {
	return s.String()
}

// SetTreatmentOption sets the TreatmentOption field's value.
func (s *MissingDataConfiguration) SetTreatmentOption(v string) *MissingDataConfiguration {
	s.TreatmentOption = &v
	return s
}

// The parameters for MySQL.
type MySqlParameters struct {
	_ struct{} `type:"structure"`

	// Database.
	//
	// Database is a required field
	Database *string `min:"1" type:"string" required:"true"`

	// Host.
	//
	// Host is a required field
	Host *string `min:"1" type:"string" required:"true"`

	// Port.
	//
	// Port is a required field
	Port *int64 `min:"1" type:"integer" 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 MySqlParameters) 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 MySqlParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MySqlParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MySqlParameters"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Database != nil && len(*s.Database) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Database", 1))
	}
	if s.Host == nil {
		invalidParams.Add(request.NewErrParamRequired("Host"))
	}
	if s.Host != nil && len(*s.Host) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Host", 1))
	}
	if s.Port == nil {
		invalidParams.Add(request.NewErrParamRequired("Port"))
	}
	if s.Port != nil && *s.Port < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *MySqlParameters) SetDatabase(v string) *MySqlParameters {
	s.Database = &v
	return s
}

// SetHost sets the Host field's value.
func (s *MySqlParameters) SetHost(v string) *MySqlParameters {
	s.Host = &v
	return s
}

// SetPort sets the Port field's value.
func (s *MySqlParameters) SetPort(v int64) *MySqlParameters {
	s.Port = &v
	return s
}

// A structure that represents a named entity.
type NamedEntityDefinition struct {
	_ struct{} `type:"structure"`

	// The name of the entity.
	FieldName *string `type:"string"`

	// The definition of a metric.
	Metric *NamedEntityDefinitionMetric `type:"structure"`

	// The property name to be used for the named entity.
	PropertyName *string `type:"string"`

	// The property role. Valid values for this structure are PRIMARY and ID.
	PropertyRole *string `type:"string" enum:"PropertyRole"`

	// The property usage. Valid values for this structure are INHERIT, DIMENSION,
	// and MEASURE.
	PropertyUsage *string `type:"string" enum:"PropertyUsage"`
}

// 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 NamedEntityDefinition) 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 NamedEntityDefinition) GoString() string {
	return s.String()
}

// SetFieldName sets the FieldName field's value.
func (s *NamedEntityDefinition) SetFieldName(v string) *NamedEntityDefinition {
	s.FieldName = &v
	return s
}

// SetMetric sets the Metric field's value.
func (s *NamedEntityDefinition) SetMetric(v *NamedEntityDefinitionMetric) *NamedEntityDefinition {
	s.Metric = v
	return s
}

// SetPropertyName sets the PropertyName field's value.
func (s *NamedEntityDefinition) SetPropertyName(v string) *NamedEntityDefinition {
	s.PropertyName = &v
	return s
}

// SetPropertyRole sets the PropertyRole field's value.
func (s *NamedEntityDefinition) SetPropertyRole(v string) *NamedEntityDefinition {
	s.PropertyRole = &v
	return s
}

// SetPropertyUsage sets the PropertyUsage field's value.
func (s *NamedEntityDefinition) SetPropertyUsage(v string) *NamedEntityDefinition {
	s.PropertyUsage = &v
	return s
}

// A structure that represents a metric.
type NamedEntityDefinitionMetric struct {
	_ struct{} `type:"structure"`

	// The aggregation of a named entity. Valid values for this structure are SUM,
	// MIN, MAX, COUNT, AVERAGE, DISTINCT_COUNT, STDEV, STDEVP, VAR, VARP, PERCENTILE,
	// MEDIAN, and CUSTOM.
	Aggregation *string `type:"string" enum:"NamedEntityAggType"`

	// The additional parameters for an aggregation function.
	AggregationFunctionParameters map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NamedEntityDefinitionMetric) 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 NamedEntityDefinitionMetric) GoString() string {
	return s.String()
}

// SetAggregation sets the Aggregation field's value.
func (s *NamedEntityDefinitionMetric) SetAggregation(v string) *NamedEntityDefinitionMetric {
	s.Aggregation = &v
	return s
}

// SetAggregationFunctionParameters sets the AggregationFunctionParameters field's value.
func (s *NamedEntityDefinitionMetric) SetAggregationFunctionParameters(v map[string]*string) *NamedEntityDefinitionMetric {
	s.AggregationFunctionParameters = v
	return s
}

// The definition for a NamedEntityRef.
type NamedEntityRef struct {
	_ struct{} `type:"structure"`

	// The NamedEntityName for the NamedEntityRef.
	NamedEntityName *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NamedEntityRef) 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 NamedEntityRef) GoString() string {
	return s.String()
}

// SetNamedEntityName sets the NamedEntityName field's value.
func (s *NamedEntityRef) SetNamedEntityName(v string) *NamedEntityRef {
	s.NamedEntityName = &v
	return s
}

// Errors that occur during namespace creation.
type NamespaceError struct {
	_ struct{} `type:"structure"`

	// The message for the error.
	Message *string `type:"string"`

	// The error type.
	Type *string `type:"string" enum:"NamespaceErrorType"`
}

// 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 NamespaceError) 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 NamespaceError) GoString() string {
	return s.String()
}

// SetMessage sets the Message field's value.
func (s *NamespaceError) SetMessage(v string) *NamespaceError {
	s.Message = &v
	return s
}

// SetType sets the Type field's value.
func (s *NamespaceError) SetType(v string) *NamespaceError {
	s.Type = &v
	return s
}

// The error type.
type NamespaceInfoV2 struct {
	_ struct{} `type:"structure"`

	// The namespace ARN.
	Arn *string `type:"string"`

	// The namespace Amazon Web Services Region.
	CapacityRegion *string `type:"string"`

	// The creation status of a namespace that is not yet completely created.
	CreationStatus *string `type:"string" enum:"NamespaceStatus"`

	// The identity store used for the namespace.
	IdentityStore *string `type:"string" enum:"IdentityStore"`

	// The name of the error.
	Name *string `type:"string"`

	// An error that occurred when the namespace was created.
	NamespaceError *NamespaceError `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 NamespaceInfoV2) 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 NamespaceInfoV2) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *NamespaceInfoV2) SetArn(v string) *NamespaceInfoV2 {
	s.Arn = &v
	return s
}

// SetCapacityRegion sets the CapacityRegion field's value.
func (s *NamespaceInfoV2) SetCapacityRegion(v string) *NamespaceInfoV2 {
	s.CapacityRegion = &v
	return s
}

// SetCreationStatus sets the CreationStatus field's value.
func (s *NamespaceInfoV2) SetCreationStatus(v string) *NamespaceInfoV2 {
	s.CreationStatus = &v
	return s
}

// SetIdentityStore sets the IdentityStore field's value.
func (s *NamespaceInfoV2) SetIdentityStore(v string) *NamespaceInfoV2 {
	s.IdentityStore = &v
	return s
}

// SetName sets the Name field's value.
func (s *NamespaceInfoV2) SetName(v string) *NamespaceInfoV2 {
	s.Name = &v
	return s
}

// SetNamespaceError sets the NamespaceError field's value.
func (s *NamespaceInfoV2) SetNamespaceError(v *NamespaceError) *NamespaceInfoV2 {
	s.NamespaceError = v
	return s
}

// A structure that represents a negative format.
type NegativeFormat struct {
	_ struct{} `type:"structure"`

	// The prefix for a negative format.
	Prefix *string `type:"string"`

	// The suffix for a negative format.
	Suffix *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NegativeFormat) 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 NegativeFormat) GoString() string {
	return s.String()
}

// SetPrefix sets the Prefix field's value.
func (s *NegativeFormat) SetPrefix(v string) *NegativeFormat {
	s.Prefix = &v
	return s
}

// SetSuffix sets the Suffix field's value.
func (s *NegativeFormat) SetSuffix(v string) *NegativeFormat {
	s.Suffix = &v
	return s
}

// The options that determine the negative value configuration.
type NegativeValueConfiguration struct {
	_ struct{} `type:"structure"`

	// Determines the display mode of the negative value configuration.
	//
	// DisplayMode is a required field
	DisplayMode *string `type:"string" required:"true" enum:"NegativeValueDisplayMode"`
}

// 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 NegativeValueConfiguration) 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 NegativeValueConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NegativeValueConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NegativeValueConfiguration"}
	if s.DisplayMode == nil {
		invalidParams.Add(request.NewErrParamRequired("DisplayMode"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDisplayMode sets the DisplayMode field's value.
func (s *NegativeValueConfiguration) SetDisplayMode(v string) *NegativeValueConfiguration {
	s.DisplayMode = &v
	return s
}

// A NestedFilter filters data with a subset of data that is defined by the
// nested inner filter.
type NestedFilter struct {
	_ struct{} `type:"structure"`

	// The column that the filter is applied to.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// An identifier that uniquely identifies a filter within a dashboard, analysis,
	// or template.
	//
	// FilterId is a required field
	FilterId *string `min:"1" type:"string" required:"true"`

	// A boolean condition to include or exclude the subset that is defined by the
	// values of the nested inner filter.
	//
	// IncludeInnerSet is a required field
	IncludeInnerSet *bool `type:"boolean" required:"true"`

	// The InnerFilter defines the subset of data to be used with the NestedFilter.
	//
	// InnerFilter is a required field
	InnerFilter *InnerFilter `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 NestedFilter) 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 NestedFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NestedFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NestedFilter"}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.FilterId == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterId"))
	}
	if s.FilterId != nil && len(*s.FilterId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterId", 1))
	}
	if s.IncludeInnerSet == nil {
		invalidParams.Add(request.NewErrParamRequired("IncludeInnerSet"))
	}
	if s.InnerFilter == nil {
		invalidParams.Add(request.NewErrParamRequired("InnerFilter"))
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}
	if s.InnerFilter != nil {
		if err := s.InnerFilter.Validate(); err != nil {
			invalidParams.AddNested("InnerFilter", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumn sets the Column field's value.
func (s *NestedFilter) SetColumn(v *ColumnIdentifier) *NestedFilter {
	s.Column = v
	return s
}

// SetFilterId sets the FilterId field's value.
func (s *NestedFilter) SetFilterId(v string) *NestedFilter {
	s.FilterId = &v
	return s
}

// SetIncludeInnerSet sets the IncludeInnerSet field's value.
func (s *NestedFilter) SetIncludeInnerSet(v bool) *NestedFilter {
	s.IncludeInnerSet = &v
	return s
}

// SetInnerFilter sets the InnerFilter field's value.
func (s *NestedFilter) SetInnerFilter(v *InnerFilter) *NestedFilter {
	s.InnerFilter = v
	return s
}

// The structure that contains information about a network interface.
type NetworkInterface struct {
	_ struct{} `type:"structure"`

	// The availability zone that the network interface resides in.
	AvailabilityZone *string `type:"string"`

	// An error message.
	ErrorMessage *string `type:"string"`

	// The network interface ID.
	NetworkInterfaceId *string `type:"string"`

	// The status of the network interface.
	Status *string `type:"string" enum:"NetworkInterfaceStatus"`

	// The subnet ID associated with the network interface.
	SubnetId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NetworkInterface) 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 NetworkInterface) GoString() string {
	return s.String()
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *NetworkInterface) SetAvailabilityZone(v string) *NetworkInterface {
	s.AvailabilityZone = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *NetworkInterface) SetErrorMessage(v string) *NetworkInterface {
	s.ErrorMessage = &v
	return s
}

// SetNetworkInterfaceId sets the NetworkInterfaceId field's value.
func (s *NetworkInterface) SetNetworkInterfaceId(v string) *NetworkInterface {
	s.NetworkInterfaceId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *NetworkInterface) SetStatus(v string) *NetworkInterface {
	s.Status = &v
	return s
}

// SetSubnetId sets the SubnetId field's value.
func (s *NetworkInterface) SetSubnetId(v string) *NetworkInterface {
	s.SubnetId = &v
	return s
}

// The configuration that overrides the existing default values for a dataset
// parameter that is inherited from another dataset.
type NewDefaultValues struct {
	_ struct{} `type:"structure"`

	// A list of static default values for a given date time parameter.
	DateTimeStaticValues []*time.Time `min:"1" type:"list"`

	// A list of static default values for a given decimal parameter.
	DecimalStaticValues []*float64 `min:"1" type:"list"`

	// A list of static default values for a given integer parameter.
	IntegerStaticValues []*int64 `min:"1" type:"list"`

	// A list of static default values for a given string parameter.
	StringStaticValues []*string `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NewDefaultValues) 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 NewDefaultValues) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NewDefaultValues) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NewDefaultValues"}
	if s.DateTimeStaticValues != nil && len(s.DateTimeStaticValues) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DateTimeStaticValues", 1))
	}
	if s.DecimalStaticValues != nil && len(s.DecimalStaticValues) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DecimalStaticValues", 1))
	}
	if s.IntegerStaticValues != nil && len(s.IntegerStaticValues) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("IntegerStaticValues", 1))
	}
	if s.StringStaticValues != nil && len(s.StringStaticValues) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("StringStaticValues", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDateTimeStaticValues sets the DateTimeStaticValues field's value.
func (s *NewDefaultValues) SetDateTimeStaticValues(v []*time.Time) *NewDefaultValues {
	s.DateTimeStaticValues = v
	return s
}

// SetDecimalStaticValues sets the DecimalStaticValues field's value.
func (s *NewDefaultValues) SetDecimalStaticValues(v []*float64) *NewDefaultValues {
	s.DecimalStaticValues = v
	return s
}

// SetIntegerStaticValues sets the IntegerStaticValues field's value.
func (s *NewDefaultValues) SetIntegerStaticValues(v []*int64) *NewDefaultValues {
	s.IntegerStaticValues = v
	return s
}

// SetStringStaticValues sets the StringStaticValues field's value.
func (s *NewDefaultValues) SetStringStaticValues(v []*string) *NewDefaultValues {
	s.StringStaticValues = v
	return s
}

// The options that determine the null value format configuration.
type NullValueFormatConfiguration struct {
	_ struct{} `type:"structure"`

	// Determines the null string of null values.
	//
	// NullString is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by NullValueFormatConfiguration's
	// String and GoString methods.
	//
	// NullString is a required field
	NullString *string `min:"1" type:"string" required:"true" sensitive:"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 NullValueFormatConfiguration) 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 NullValueFormatConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NullValueFormatConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NullValueFormatConfiguration"}
	if s.NullString == nil {
		invalidParams.Add(request.NewErrParamRequired("NullString"))
	}
	if s.NullString != nil && len(*s.NullString) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NullString", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetNullString sets the NullString field's value.
func (s *NullValueFormatConfiguration) SetNullString(v string) *NullValueFormatConfiguration {
	s.NullString = &v
	return s
}

// The options that determine the number display format configuration.
type NumberDisplayFormatConfiguration struct {
	_ struct{} `type:"structure"`

	// The option that determines the decimal places configuration.
	DecimalPlacesConfiguration *DecimalPlacesConfiguration `type:"structure"`

	// The options that determine the negative value configuration.
	NegativeValueConfiguration *NegativeValueConfiguration `type:"structure"`

	// The options that determine the null value format configuration.
	NullValueFormatConfiguration *NullValueFormatConfiguration `type:"structure"`

	// Determines the number scale value of the number format.
	NumberScale *string `type:"string" enum:"NumberScale"`

	// Determines the prefix value of the number format.
	//
	// Prefix is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by NumberDisplayFormatConfiguration's
	// String and GoString methods.
	Prefix *string `min:"1" type:"string" sensitive:"true"`

	// The options that determine the numeric separator configuration.
	SeparatorConfiguration *NumericSeparatorConfiguration `type:"structure"`

	// Determines the suffix value of the number format.
	//
	// Suffix is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by NumberDisplayFormatConfiguration's
	// String and GoString methods.
	Suffix *string `min:"1" type:"string" sensitive:"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 NumberDisplayFormatConfiguration) 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 NumberDisplayFormatConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NumberDisplayFormatConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NumberDisplayFormatConfiguration"}
	if s.Prefix != nil && len(*s.Prefix) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Prefix", 1))
	}
	if s.Suffix != nil && len(*s.Suffix) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Suffix", 1))
	}
	if s.DecimalPlacesConfiguration != nil {
		if err := s.DecimalPlacesConfiguration.Validate(); err != nil {
			invalidParams.AddNested("DecimalPlacesConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.NegativeValueConfiguration != nil {
		if err := s.NegativeValueConfiguration.Validate(); err != nil {
			invalidParams.AddNested("NegativeValueConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.NullValueFormatConfiguration != nil {
		if err := s.NullValueFormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("NullValueFormatConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDecimalPlacesConfiguration sets the DecimalPlacesConfiguration field's value.
func (s *NumberDisplayFormatConfiguration) SetDecimalPlacesConfiguration(v *DecimalPlacesConfiguration) *NumberDisplayFormatConfiguration {
	s.DecimalPlacesConfiguration = v
	return s
}

// SetNegativeValueConfiguration sets the NegativeValueConfiguration field's value.
func (s *NumberDisplayFormatConfiguration) SetNegativeValueConfiguration(v *NegativeValueConfiguration) *NumberDisplayFormatConfiguration {
	s.NegativeValueConfiguration = v
	return s
}

// SetNullValueFormatConfiguration sets the NullValueFormatConfiguration field's value.
func (s *NumberDisplayFormatConfiguration) SetNullValueFormatConfiguration(v *NullValueFormatConfiguration) *NumberDisplayFormatConfiguration {
	s.NullValueFormatConfiguration = v
	return s
}

// SetNumberScale sets the NumberScale field's value.
func (s *NumberDisplayFormatConfiguration) SetNumberScale(v string) *NumberDisplayFormatConfiguration {
	s.NumberScale = &v
	return s
}

// SetPrefix sets the Prefix field's value.
func (s *NumberDisplayFormatConfiguration) SetPrefix(v string) *NumberDisplayFormatConfiguration {
	s.Prefix = &v
	return s
}

// SetSeparatorConfiguration sets the SeparatorConfiguration field's value.
func (s *NumberDisplayFormatConfiguration) SetSeparatorConfiguration(v *NumericSeparatorConfiguration) *NumberDisplayFormatConfiguration {
	s.SeparatorConfiguration = v
	return s
}

// SetSuffix sets the Suffix field's value.
func (s *NumberDisplayFormatConfiguration) SetSuffix(v string) *NumberDisplayFormatConfiguration {
	s.Suffix = &v
	return s
}

// Formatting configuration for number fields.
type NumberFormatConfiguration struct {
	_ struct{} `type:"structure"`

	// The options that determine the numeric format configuration.
	FormatConfiguration *NumericFormatConfiguration `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 NumberFormatConfiguration) 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 NumberFormatConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NumberFormatConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NumberFormatConfiguration"}
	if s.FormatConfiguration != nil {
		if err := s.FormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("FormatConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFormatConfiguration sets the FormatConfiguration field's value.
func (s *NumberFormatConfiguration) SetFormatConfiguration(v *NumericFormatConfiguration) *NumberFormatConfiguration {
	s.FormatConfiguration = v
	return s
}

// The options for an axis with a numeric field.
type NumericAxisOptions struct {
	_ struct{} `type:"structure"`

	// The range setup of a numeric axis.
	Range *AxisDisplayRange `type:"structure"`

	// The scale setup of a numeric axis.
	Scale *AxisScale `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 NumericAxisOptions) 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 NumericAxisOptions) GoString() string {
	return s.String()
}

// SetRange sets the Range field's value.
func (s *NumericAxisOptions) SetRange(v *AxisDisplayRange) *NumericAxisOptions {
	s.Range = v
	return s
}

// SetScale sets the Scale field's value.
func (s *NumericAxisOptions) SetScale(v *AxisScale) *NumericAxisOptions {
	s.Scale = v
	return s
}

// The numeric equality type drill down filter.
type NumericEqualityDrillDownFilter struct {
	_ struct{} `type:"structure"`

	// The column that the filter is applied to.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The value of the double input numeric drill down filter.
	//
	// Value is a required field
	Value *float64 `type:"double" 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 NumericEqualityDrillDownFilter) 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 NumericEqualityDrillDownFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NumericEqualityDrillDownFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NumericEqualityDrillDownFilter"}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumn sets the Column field's value.
func (s *NumericEqualityDrillDownFilter) SetColumn(v *ColumnIdentifier) *NumericEqualityDrillDownFilter {
	s.Column = v
	return s
}

// SetValue sets the Value field's value.
func (s *NumericEqualityDrillDownFilter) SetValue(v float64) *NumericEqualityDrillDownFilter {
	s.Value = &v
	return s
}

// A NumericEqualityFilter filters values that are equal to the specified value.
type NumericEqualityFilter struct {
	_ struct{} `type:"structure"`

	// The aggregation function of the filter.
	AggregationFunction *AggregationFunction `type:"structure"`

	// The column that the filter is applied to.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The default configurations for the associated controls. This applies only
	// for filters that are scoped to multiple sheets.
	DefaultFilterControlConfiguration *DefaultFilterControlConfiguration `type:"structure"`

	// An identifier that uniquely identifies a filter within a dashboard, analysis,
	// or template.
	//
	// FilterId is a required field
	FilterId *string `min:"1" type:"string" required:"true"`

	// The match operator that is used to determine if a filter should be applied.
	//
	// MatchOperator is a required field
	MatchOperator *string `type:"string" required:"true" enum:"NumericEqualityMatchOperator"`

	// This option determines how null values should be treated when filtering data.
	//
	//    * ALL_VALUES: Include null values in filtered results.
	//
	//    * NULLS_ONLY: Only include null values in filtered results.
	//
	//    * NON_NULLS_ONLY: Exclude null values from filtered results.
	//
	// NullOption is a required field
	NullOption *string `type:"string" required:"true" enum:"FilterNullOption"`

	// The parameter whose value should be used for the filter value.
	ParameterName *string `min:"1" type:"string"`

	// Select all of the values. Null is not the assigned value of select all.
	//
	//    * FILTER_ALL_VALUES
	SelectAllOptions *string `type:"string" enum:"NumericFilterSelectAllOptions"`

	// The input value.
	Value *float64 `type:"double"`
}

// 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 NumericEqualityFilter) 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 NumericEqualityFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NumericEqualityFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NumericEqualityFilter"}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.FilterId == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterId"))
	}
	if s.FilterId != nil && len(*s.FilterId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterId", 1))
	}
	if s.MatchOperator == nil {
		invalidParams.Add(request.NewErrParamRequired("MatchOperator"))
	}
	if s.NullOption == nil {
		invalidParams.Add(request.NewErrParamRequired("NullOption"))
	}
	if s.ParameterName != nil && len(*s.ParameterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ParameterName", 1))
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}
	if s.DefaultFilterControlConfiguration != nil {
		if err := s.DefaultFilterControlConfiguration.Validate(); err != nil {
			invalidParams.AddNested("DefaultFilterControlConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAggregationFunction sets the AggregationFunction field's value.
func (s *NumericEqualityFilter) SetAggregationFunction(v *AggregationFunction) *NumericEqualityFilter {
	s.AggregationFunction = v
	return s
}

// SetColumn sets the Column field's value.
func (s *NumericEqualityFilter) SetColumn(v *ColumnIdentifier) *NumericEqualityFilter {
	s.Column = v
	return s
}

// SetDefaultFilterControlConfiguration sets the DefaultFilterControlConfiguration field's value.
func (s *NumericEqualityFilter) SetDefaultFilterControlConfiguration(v *DefaultFilterControlConfiguration) *NumericEqualityFilter {
	s.DefaultFilterControlConfiguration = v
	return s
}

// SetFilterId sets the FilterId field's value.
func (s *NumericEqualityFilter) SetFilterId(v string) *NumericEqualityFilter {
	s.FilterId = &v
	return s
}

// SetMatchOperator sets the MatchOperator field's value.
func (s *NumericEqualityFilter) SetMatchOperator(v string) *NumericEqualityFilter {
	s.MatchOperator = &v
	return s
}

// SetNullOption sets the NullOption field's value.
func (s *NumericEqualityFilter) SetNullOption(v string) *NumericEqualityFilter {
	s.NullOption = &v
	return s
}

// SetParameterName sets the ParameterName field's value.
func (s *NumericEqualityFilter) SetParameterName(v string) *NumericEqualityFilter {
	s.ParameterName = &v
	return s
}

// SetSelectAllOptions sets the SelectAllOptions field's value.
func (s *NumericEqualityFilter) SetSelectAllOptions(v string) *NumericEqualityFilter {
	s.SelectAllOptions = &v
	return s
}

// SetValue sets the Value field's value.
func (s *NumericEqualityFilter) SetValue(v float64) *NumericEqualityFilter {
	s.Value = &v
	return s
}

// The options that determine the numeric format configuration.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type NumericFormatConfiguration struct {
	_ struct{} `type:"structure"`

	// The options that determine the currency display format configuration.
	CurrencyDisplayFormatConfiguration *CurrencyDisplayFormatConfiguration `type:"structure"`

	// The options that determine the number display format configuration.
	NumberDisplayFormatConfiguration *NumberDisplayFormatConfiguration `type:"structure"`

	// The options that determine the percentage display format configuration.
	PercentageDisplayFormatConfiguration *PercentageDisplayFormatConfiguration `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 NumericFormatConfiguration) 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 NumericFormatConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NumericFormatConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NumericFormatConfiguration"}
	if s.CurrencyDisplayFormatConfiguration != nil {
		if err := s.CurrencyDisplayFormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("CurrencyDisplayFormatConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.NumberDisplayFormatConfiguration != nil {
		if err := s.NumberDisplayFormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("NumberDisplayFormatConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.PercentageDisplayFormatConfiguration != nil {
		if err := s.PercentageDisplayFormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("PercentageDisplayFormatConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCurrencyDisplayFormatConfiguration sets the CurrencyDisplayFormatConfiguration field's value.
func (s *NumericFormatConfiguration) SetCurrencyDisplayFormatConfiguration(v *CurrencyDisplayFormatConfiguration) *NumericFormatConfiguration {
	s.CurrencyDisplayFormatConfiguration = v
	return s
}

// SetNumberDisplayFormatConfiguration sets the NumberDisplayFormatConfiguration field's value.
func (s *NumericFormatConfiguration) SetNumberDisplayFormatConfiguration(v *NumberDisplayFormatConfiguration) *NumericFormatConfiguration {
	s.NumberDisplayFormatConfiguration = v
	return s
}

// SetPercentageDisplayFormatConfiguration sets the PercentageDisplayFormatConfiguration field's value.
func (s *NumericFormatConfiguration) SetPercentageDisplayFormatConfiguration(v *PercentageDisplayFormatConfiguration) *NumericFormatConfiguration {
	s.PercentageDisplayFormatConfiguration = v
	return s
}

// A NumericRangeFilter filters values that are within the value range.
type NumericRangeFilter struct {
	_ struct{} `type:"structure"`

	// The aggregation function of the filter.
	AggregationFunction *AggregationFunction `type:"structure"`

	// The column that the filter is applied to.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The default configurations for the associated controls. This applies only
	// for filters that are scoped to multiple sheets.
	DefaultFilterControlConfiguration *DefaultFilterControlConfiguration `type:"structure"`

	// An identifier that uniquely identifies a filter within a dashboard, analysis,
	// or template.
	//
	// FilterId is a required field
	FilterId *string `min:"1" type:"string" required:"true"`

	// Determines whether the maximum value in the filter value range should be
	// included in the filtered results.
	IncludeMaximum *bool `type:"boolean"`

	// Determines whether the minimum value in the filter value range should be
	// included in the filtered results.
	IncludeMinimum *bool `type:"boolean"`

	// This option determines how null values should be treated when filtering data.
	//
	//    * ALL_VALUES: Include null values in filtered results.
	//
	//    * NULLS_ONLY: Only include null values in filtered results.
	//
	//    * NON_NULLS_ONLY: Exclude null values from filtered results.
	//
	// NullOption is a required field
	NullOption *string `type:"string" required:"true" enum:"FilterNullOption"`

	// The maximum value for the filter value range.
	RangeMaximum *NumericRangeFilterValue `type:"structure"`

	// The minimum value for the filter value range.
	RangeMinimum *NumericRangeFilterValue `type:"structure"`

	// Select all of the values. Null is not the assigned value of select all.
	//
	//    * FILTER_ALL_VALUES
	SelectAllOptions *string `type:"string" enum:"NumericFilterSelectAllOptions"`
}

// 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 NumericRangeFilter) 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 NumericRangeFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NumericRangeFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NumericRangeFilter"}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.FilterId == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterId"))
	}
	if s.FilterId != nil && len(*s.FilterId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterId", 1))
	}
	if s.NullOption == nil {
		invalidParams.Add(request.NewErrParamRequired("NullOption"))
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}
	if s.DefaultFilterControlConfiguration != nil {
		if err := s.DefaultFilterControlConfiguration.Validate(); err != nil {
			invalidParams.AddNested("DefaultFilterControlConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.RangeMaximum != nil {
		if err := s.RangeMaximum.Validate(); err != nil {
			invalidParams.AddNested("RangeMaximum", err.(request.ErrInvalidParams))
		}
	}
	if s.RangeMinimum != nil {
		if err := s.RangeMinimum.Validate(); err != nil {
			invalidParams.AddNested("RangeMinimum", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAggregationFunction sets the AggregationFunction field's value.
func (s *NumericRangeFilter) SetAggregationFunction(v *AggregationFunction) *NumericRangeFilter {
	s.AggregationFunction = v
	return s
}

// SetColumn sets the Column field's value.
func (s *NumericRangeFilter) SetColumn(v *ColumnIdentifier) *NumericRangeFilter {
	s.Column = v
	return s
}

// SetDefaultFilterControlConfiguration sets the DefaultFilterControlConfiguration field's value.
func (s *NumericRangeFilter) SetDefaultFilterControlConfiguration(v *DefaultFilterControlConfiguration) *NumericRangeFilter {
	s.DefaultFilterControlConfiguration = v
	return s
}

// SetFilterId sets the FilterId field's value.
func (s *NumericRangeFilter) SetFilterId(v string) *NumericRangeFilter {
	s.FilterId = &v
	return s
}

// SetIncludeMaximum sets the IncludeMaximum field's value.
func (s *NumericRangeFilter) SetIncludeMaximum(v bool) *NumericRangeFilter {
	s.IncludeMaximum = &v
	return s
}

// SetIncludeMinimum sets the IncludeMinimum field's value.
func (s *NumericRangeFilter) SetIncludeMinimum(v bool) *NumericRangeFilter {
	s.IncludeMinimum = &v
	return s
}

// SetNullOption sets the NullOption field's value.
func (s *NumericRangeFilter) SetNullOption(v string) *NumericRangeFilter {
	s.NullOption = &v
	return s
}

// SetRangeMaximum sets the RangeMaximum field's value.
func (s *NumericRangeFilter) SetRangeMaximum(v *NumericRangeFilterValue) *NumericRangeFilter {
	s.RangeMaximum = v
	return s
}

// SetRangeMinimum sets the RangeMinimum field's value.
func (s *NumericRangeFilter) SetRangeMinimum(v *NumericRangeFilterValue) *NumericRangeFilter {
	s.RangeMinimum = v
	return s
}

// SetSelectAllOptions sets the SelectAllOptions field's value.
func (s *NumericRangeFilter) SetSelectAllOptions(v string) *NumericRangeFilter {
	s.SelectAllOptions = &v
	return s
}

// The value input pf the numeric range filter.
type NumericRangeFilterValue struct {
	_ struct{} `type:"structure"`

	// The parameter that is used in the numeric range.
	Parameter *string `min:"1" type:"string"`

	// The static value of the numeric range filter.
	StaticValue *float64 `type:"double"`
}

// 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 NumericRangeFilterValue) 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 NumericRangeFilterValue) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NumericRangeFilterValue) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NumericRangeFilterValue"}
	if s.Parameter != nil && len(*s.Parameter) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Parameter", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetParameter sets the Parameter field's value.
func (s *NumericRangeFilterValue) SetParameter(v string) *NumericRangeFilterValue {
	s.Parameter = &v
	return s
}

// SetStaticValue sets the StaticValue field's value.
func (s *NumericRangeFilterValue) SetStaticValue(v float64) *NumericRangeFilterValue {
	s.StaticValue = &v
	return s
}

// The options that determine the numeric separator configuration.
type NumericSeparatorConfiguration struct {
	_ struct{} `type:"structure"`

	// Determines the decimal separator.
	DecimalSeparator *string `type:"string" enum:"NumericSeparatorSymbol"`

	// The options that determine the thousands separator configuration.
	ThousandsSeparator *ThousandSeparatorOptions `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 NumericSeparatorConfiguration) 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 NumericSeparatorConfiguration) GoString() string {
	return s.String()
}

// SetDecimalSeparator sets the DecimalSeparator field's value.
func (s *NumericSeparatorConfiguration) SetDecimalSeparator(v string) *NumericSeparatorConfiguration {
	s.DecimalSeparator = &v
	return s
}

// SetThousandsSeparator sets the ThousandsSeparator field's value.
func (s *NumericSeparatorConfiguration) SetThousandsSeparator(v *ThousandSeparatorOptions) *NumericSeparatorConfiguration {
	s.ThousandsSeparator = v
	return s
}

// Aggregation for numerical values.
type NumericalAggregationFunction struct {
	_ struct{} `type:"structure"`

	// An aggregation based on the percentile of values in a dimension or measure.
	PercentileAggregation *PercentileAggregation `type:"structure"`

	// Built-in aggregation functions for numerical values.
	//
	//    * SUM: The sum of a dimension or measure.
	//
	//    * AVERAGE: The average of a dimension or measure.
	//
	//    * MIN: The minimum value of a dimension or measure.
	//
	//    * MAX: The maximum value of a dimension or measure.
	//
	//    * COUNT: The count of a dimension or measure.
	//
	//    * DISTINCT_COUNT: The count of distinct values in a dimension or measure.
	//
	//    * VAR: The variance of a dimension or measure.
	//
	//    * VARP: The partitioned variance of a dimension or measure.
	//
	//    * STDEV: The standard deviation of a dimension or measure.
	//
	//    * STDEVP: The partitioned standard deviation of a dimension or measure.
	//
	//    * MEDIAN: The median value of a dimension or measure.
	SimpleNumericalAggregation *string `type:"string" enum:"SimpleNumericalAggregationFunction"`
}

// 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 NumericalAggregationFunction) 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 NumericalAggregationFunction) GoString() string {
	return s.String()
}

// SetPercentileAggregation sets the PercentileAggregation field's value.
func (s *NumericalAggregationFunction) SetPercentileAggregation(v *PercentileAggregation) *NumericalAggregationFunction {
	s.PercentileAggregation = v
	return s
}

// SetSimpleNumericalAggregation sets the SimpleNumericalAggregation field's value.
func (s *NumericalAggregationFunction) SetSimpleNumericalAggregation(v string) *NumericalAggregationFunction {
	s.SimpleNumericalAggregation = &v
	return s
}

// The dimension type field with numerical type columns.
type NumericalDimensionField struct {
	_ struct{} `type:"structure"`

	// The column that is used in the NumericalDimensionField.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The custom field ID.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The format configuration of the field.
	FormatConfiguration *NumberFormatConfiguration `type:"structure"`

	// The custom hierarchy ID.
	HierarchyId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NumericalDimensionField) 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 NumericalDimensionField) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NumericalDimensionField) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NumericalDimensionField"}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.FieldId == nil {
		invalidParams.Add(request.NewErrParamRequired("FieldId"))
	}
	if s.FieldId != nil && len(*s.FieldId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FieldId", 1))
	}
	if s.HierarchyId != nil && len(*s.HierarchyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("HierarchyId", 1))
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}
	if s.FormatConfiguration != nil {
		if err := s.FormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("FormatConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumn sets the Column field's value.
func (s *NumericalDimensionField) SetColumn(v *ColumnIdentifier) *NumericalDimensionField {
	s.Column = v
	return s
}

// SetFieldId sets the FieldId field's value.
func (s *NumericalDimensionField) SetFieldId(v string) *NumericalDimensionField {
	s.FieldId = &v
	return s
}

// SetFormatConfiguration sets the FormatConfiguration field's value.
func (s *NumericalDimensionField) SetFormatConfiguration(v *NumberFormatConfiguration) *NumericalDimensionField {
	s.FormatConfiguration = v
	return s
}

// SetHierarchyId sets the HierarchyId field's value.
func (s *NumericalDimensionField) SetHierarchyId(v string) *NumericalDimensionField {
	s.HierarchyId = &v
	return s
}

// The measure type field with numerical type columns.
type NumericalMeasureField struct {
	_ struct{} `type:"structure"`

	// The aggregation function of the measure field.
	AggregationFunction *NumericalAggregationFunction `type:"structure"`

	// The column that is used in the NumericalMeasureField.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The custom field ID.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The format configuration of the field.
	FormatConfiguration *NumberFormatConfiguration `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 NumericalMeasureField) 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 NumericalMeasureField) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NumericalMeasureField) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NumericalMeasureField"}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.FieldId == nil {
		invalidParams.Add(request.NewErrParamRequired("FieldId"))
	}
	if s.FieldId != nil && len(*s.FieldId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FieldId", 1))
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}
	if s.FormatConfiguration != nil {
		if err := s.FormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("FormatConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAggregationFunction sets the AggregationFunction field's value.
func (s *NumericalMeasureField) SetAggregationFunction(v *NumericalAggregationFunction) *NumericalMeasureField {
	s.AggregationFunction = v
	return s
}

// SetColumn sets the Column field's value.
func (s *NumericalMeasureField) SetColumn(v *ColumnIdentifier) *NumericalMeasureField {
	s.Column = v
	return s
}

// SetFieldId sets the FieldId field's value.
func (s *NumericalMeasureField) SetFieldId(v string) *NumericalMeasureField {
	s.FieldId = &v
	return s
}

// SetFormatConfiguration sets the FormatConfiguration field's value.
func (s *NumericalMeasureField) SetFormatConfiguration(v *NumberFormatConfiguration) *NumericalMeasureField {
	s.FormatConfiguration = v
	return s
}

// The parameters for Oracle.
type OracleParameters struct {
	_ struct{} `type:"structure"`

	// The database.
	//
	// Database is a required field
	Database *string `min:"1" type:"string" required:"true"`

	// An Oracle host.
	//
	// Host is a required field
	Host *string `min:"1" type:"string" required:"true"`

	// The port.
	//
	// Port is a required field
	Port *int64 `min:"1" type:"integer" 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 OracleParameters) 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 OracleParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *OracleParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "OracleParameters"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Database != nil && len(*s.Database) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Database", 1))
	}
	if s.Host == nil {
		invalidParams.Add(request.NewErrParamRequired("Host"))
	}
	if s.Host != nil && len(*s.Host) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Host", 1))
	}
	if s.Port == nil {
		invalidParams.Add(request.NewErrParamRequired("Port"))
	}
	if s.Port != nil && *s.Port < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *OracleParameters) SetDatabase(v string) *OracleParameters {
	s.Database = &v
	return s
}

// SetHost sets the Host field's value.
func (s *OracleParameters) SetHost(v string) *OracleParameters {
	s.Host = &v
	return s
}

// SetPort sets the Port field's value.
func (s *OracleParameters) SetPort(v int64) *OracleParameters {
	s.Port = &v
	return s
}

// Output column.
type OutputColumn struct {
	_ struct{} `type:"structure"`

	// A description for a column.
	Description *string `type:"string"`

	// The display name of the column..
	Name *string `min:"1" type:"string"`

	// The sub data type of the column.
	SubType *string `type:"string" enum:"ColumnDataSubType"`

	// The data type of the column.
	Type *string `type:"string" enum:"ColumnDataType"`
}

// 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 OutputColumn) 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 OutputColumn) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *OutputColumn) SetDescription(v string) *OutputColumn {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *OutputColumn) SetName(v string) *OutputColumn {
	s.Name = &v
	return s
}

// SetSubType sets the SubType field's value.
func (s *OutputColumn) SetSubType(v string) *OutputColumn {
	s.SubType = &v
	return s
}

// SetType sets the Type field's value.
func (s *OutputColumn) SetType(v string) *OutputColumn {
	s.Type = &v
	return s
}

// A transform operation that overrides the dataset parameter values that are
// defined in another dataset.
type OverrideDatasetParameterOperation struct {
	_ struct{} `type:"structure"`

	// The new default values for the parameter.
	NewDefaultValues *NewDefaultValues `type:"structure"`

	// The new name for the parameter.
	NewParameterName *string `min:"1" type:"string"`

	// The name of the parameter to be overridden with different values.
	//
	// ParameterName is a required field
	ParameterName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OverrideDatasetParameterOperation) 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 OverrideDatasetParameterOperation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *OverrideDatasetParameterOperation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "OverrideDatasetParameterOperation"}
	if s.NewParameterName != nil && len(*s.NewParameterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NewParameterName", 1))
	}
	if s.ParameterName == nil {
		invalidParams.Add(request.NewErrParamRequired("ParameterName"))
	}
	if s.ParameterName != nil && len(*s.ParameterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ParameterName", 1))
	}
	if s.NewDefaultValues != nil {
		if err := s.NewDefaultValues.Validate(); err != nil {
			invalidParams.AddNested("NewDefaultValues", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetNewDefaultValues sets the NewDefaultValues field's value.
func (s *OverrideDatasetParameterOperation) SetNewDefaultValues(v *NewDefaultValues) *OverrideDatasetParameterOperation {
	s.NewDefaultValues = v
	return s
}

// SetNewParameterName sets the NewParameterName field's value.
func (s *OverrideDatasetParameterOperation) SetNewParameterName(v string) *OverrideDatasetParameterOperation {
	s.NewParameterName = &v
	return s
}

// SetParameterName sets the ParameterName field's value.
func (s *OverrideDatasetParameterOperation) SetParameterName(v string) *OverrideDatasetParameterOperation {
	s.ParameterName = &v
	return s
}

// The pagination configuration for a table visual or boxplot.
type PaginationConfiguration struct {
	_ struct{} `type:"structure"`

	// Indicates the page number.
	//
	// PageNumber is a required field
	PageNumber *int64 `type:"long" required:"true"`

	// Indicates how many items render in one page.
	//
	// PageSize is a required field
	PageSize *int64 `type:"long" 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 PaginationConfiguration) 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 PaginationConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PaginationConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PaginationConfiguration"}
	if s.PageNumber == nil {
		invalidParams.Add(request.NewErrParamRequired("PageNumber"))
	}
	if s.PageSize == nil {
		invalidParams.Add(request.NewErrParamRequired("PageSize"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPageNumber sets the PageNumber field's value.
func (s *PaginationConfiguration) SetPageNumber(v int64) *PaginationConfiguration {
	s.PageNumber = &v
	return s
}

// SetPageSize sets the PageSize field's value.
func (s *PaginationConfiguration) SetPageSize(v int64) *PaginationConfiguration {
	s.PageSize = &v
	return s
}

// A collection of options that configure how each panel displays in a small
// multiples chart.
type PanelConfiguration struct {
	_ struct{} `type:"structure"`

	// Sets the background color for each panel.
	BackgroundColor *string `type:"string"`

	// Determines whether or not a background for each small multiples panel is
	// rendered.
	BackgroundVisibility *string `type:"string" enum:"Visibility"`

	// Sets the line color of panel borders.
	BorderColor *string `type:"string"`

	// Sets the line style of panel borders.
	BorderStyle *string `type:"string" enum:"PanelBorderStyle"`

	// Sets the line thickness of panel borders.
	BorderThickness *string `type:"string"`

	// Determines whether or not each panel displays a border.
	BorderVisibility *string `type:"string" enum:"Visibility"`

	// Sets the total amount of negative space to display between sibling panels.
	GutterSpacing *string `type:"string"`

	// Determines whether or not negative space between sibling panels is rendered.
	GutterVisibility *string `type:"string" enum:"Visibility"`

	// Configures the title display within each small multiples panel.
	Title *PanelTitleOptions `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 PanelConfiguration) 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 PanelConfiguration) GoString() string {
	return s.String()
}

// SetBackgroundColor sets the BackgroundColor field's value.
func (s *PanelConfiguration) SetBackgroundColor(v string) *PanelConfiguration {
	s.BackgroundColor = &v
	return s
}

// SetBackgroundVisibility sets the BackgroundVisibility field's value.
func (s *PanelConfiguration) SetBackgroundVisibility(v string) *PanelConfiguration {
	s.BackgroundVisibility = &v
	return s
}

// SetBorderColor sets the BorderColor field's value.
func (s *PanelConfiguration) SetBorderColor(v string) *PanelConfiguration {
	s.BorderColor = &v
	return s
}

// SetBorderStyle sets the BorderStyle field's value.
func (s *PanelConfiguration) SetBorderStyle(v string) *PanelConfiguration {
	s.BorderStyle = &v
	return s
}

// SetBorderThickness sets the BorderThickness field's value.
func (s *PanelConfiguration) SetBorderThickness(v string) *PanelConfiguration {
	s.BorderThickness = &v
	return s
}

// SetBorderVisibility sets the BorderVisibility field's value.
func (s *PanelConfiguration) SetBorderVisibility(v string) *PanelConfiguration {
	s.BorderVisibility = &v
	return s
}

// SetGutterSpacing sets the GutterSpacing field's value.
func (s *PanelConfiguration) SetGutterSpacing(v string) *PanelConfiguration {
	s.GutterSpacing = &v
	return s
}

// SetGutterVisibility sets the GutterVisibility field's value.
func (s *PanelConfiguration) SetGutterVisibility(v string) *PanelConfiguration {
	s.GutterVisibility = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *PanelConfiguration) SetTitle(v *PanelTitleOptions) *PanelConfiguration {
	s.Title = v
	return s
}

// The options that determine the title styles for each small multiples panel.
type PanelTitleOptions struct {
	_ struct{} `type:"structure"`

	// Configures the display properties of the given text.
	FontConfiguration *FontConfiguration `type:"structure"`

	// Sets the horizontal text alignment of the title within each panel.
	HorizontalTextAlignment *string `type:"string" enum:"HorizontalTextAlignment"`

	// Determines whether or not panel titles are displayed.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 PanelTitleOptions) 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 PanelTitleOptions) GoString() string {
	return s.String()
}

// SetFontConfiguration sets the FontConfiguration field's value.
func (s *PanelTitleOptions) SetFontConfiguration(v *FontConfiguration) *PanelTitleOptions {
	s.FontConfiguration = v
	return s
}

// SetHorizontalTextAlignment sets the HorizontalTextAlignment field's value.
func (s *PanelTitleOptions) SetHorizontalTextAlignment(v string) *PanelTitleOptions {
	s.HorizontalTextAlignment = &v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *PanelTitleOptions) SetVisibility(v string) *PanelTitleOptions {
	s.Visibility = &v
	return s
}

// The control of a parameter that users can interact with in a dashboard or
// an analysis.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type ParameterControl struct {
	_ struct{} `type:"structure"`

	// A control from a date parameter that specifies date and time.
	DateTimePicker *ParameterDateTimePickerControl `type:"structure"`

	// A control to display a dropdown list with buttons that are used to select
	// a single value.
	Dropdown *ParameterDropDownControl `type:"structure"`

	// A control to display a list with buttons or boxes that are used to select
	// either a single value or multiple values.
	List *ParameterListControl `type:"structure"`

	// A control to display a horizontal toggle bar. This is used to change a value
	// by sliding the toggle.
	Slider *ParameterSliderControl `type:"structure"`

	// A control to display a text box that is used to enter multiple entries.
	TextArea *ParameterTextAreaControl `type:"structure"`

	// A control to display a text box that is used to enter a single entry.
	TextField *ParameterTextFieldControl `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 ParameterControl) 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 ParameterControl) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ParameterControl) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ParameterControl"}
	if s.DateTimePicker != nil {
		if err := s.DateTimePicker.Validate(); err != nil {
			invalidParams.AddNested("DateTimePicker", err.(request.ErrInvalidParams))
		}
	}
	if s.Dropdown != nil {
		if err := s.Dropdown.Validate(); err != nil {
			invalidParams.AddNested("Dropdown", err.(request.ErrInvalidParams))
		}
	}
	if s.List != nil {
		if err := s.List.Validate(); err != nil {
			invalidParams.AddNested("List", err.(request.ErrInvalidParams))
		}
	}
	if s.Slider != nil {
		if err := s.Slider.Validate(); err != nil {
			invalidParams.AddNested("Slider", err.(request.ErrInvalidParams))
		}
	}
	if s.TextArea != nil {
		if err := s.TextArea.Validate(); err != nil {
			invalidParams.AddNested("TextArea", err.(request.ErrInvalidParams))
		}
	}
	if s.TextField != nil {
		if err := s.TextField.Validate(); err != nil {
			invalidParams.AddNested("TextField", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDateTimePicker sets the DateTimePicker field's value.
func (s *ParameterControl) SetDateTimePicker(v *ParameterDateTimePickerControl) *ParameterControl {
	s.DateTimePicker = v
	return s
}

// SetDropdown sets the Dropdown field's value.
func (s *ParameterControl) SetDropdown(v *ParameterDropDownControl) *ParameterControl {
	s.Dropdown = v
	return s
}

// SetList sets the List field's value.
func (s *ParameterControl) SetList(v *ParameterListControl) *ParameterControl {
	s.List = v
	return s
}

// SetSlider sets the Slider field's value.
func (s *ParameterControl) SetSlider(v *ParameterSliderControl) *ParameterControl {
	s.Slider = v
	return s
}

// SetTextArea sets the TextArea field's value.
func (s *ParameterControl) SetTextArea(v *ParameterTextAreaControl) *ParameterControl {
	s.TextArea = v
	return s
}

// SetTextField sets the TextField field's value.
func (s *ParameterControl) SetTextField(v *ParameterTextFieldControl) *ParameterControl {
	s.TextField = v
	return s
}

// A control from a date parameter that specifies date and time.
type ParameterDateTimePickerControl struct {
	_ struct{} `type:"structure"`

	// The display options of a control.
	DisplayOptions *DateTimePickerControlDisplayOptions `type:"structure"`

	// The ID of the ParameterDateTimePickerControl.
	//
	// ParameterControlId is a required field
	ParameterControlId *string `min:"1" type:"string" required:"true"`

	// The name of the ParameterDateTimePickerControl.
	//
	// SourceParameterName is a required field
	SourceParameterName *string `min:"1" type:"string" required:"true"`

	// The title of the ParameterDateTimePickerControl.
	//
	// Title is a required field
	Title *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParameterDateTimePickerControl) 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 ParameterDateTimePickerControl) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ParameterDateTimePickerControl) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ParameterDateTimePickerControl"}
	if s.ParameterControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("ParameterControlId"))
	}
	if s.ParameterControlId != nil && len(*s.ParameterControlId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ParameterControlId", 1))
	}
	if s.SourceParameterName == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceParameterName"))
	}
	if s.SourceParameterName != nil && len(*s.SourceParameterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceParameterName", 1))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.Title != nil && len(*s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *ParameterDateTimePickerControl) SetDisplayOptions(v *DateTimePickerControlDisplayOptions) *ParameterDateTimePickerControl {
	s.DisplayOptions = v
	return s
}

// SetParameterControlId sets the ParameterControlId field's value.
func (s *ParameterDateTimePickerControl) SetParameterControlId(v string) *ParameterDateTimePickerControl {
	s.ParameterControlId = &v
	return s
}

// SetSourceParameterName sets the SourceParameterName field's value.
func (s *ParameterDateTimePickerControl) SetSourceParameterName(v string) *ParameterDateTimePickerControl {
	s.SourceParameterName = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *ParameterDateTimePickerControl) SetTitle(v string) *ParameterDateTimePickerControl {
	s.Title = &v
	return s
}

// The declaration definition of a parameter.
//
// For more information, see Parameters in Amazon QuickSight (https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html)
// in the Amazon QuickSight User Guide.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type ParameterDeclaration struct {
	_ struct{} `type:"structure"`

	// A parameter declaration for the DateTime data type.
	DateTimeParameterDeclaration *DateTimeParameterDeclaration `type:"structure"`

	// A parameter declaration for the Decimal data type.
	DecimalParameterDeclaration *DecimalParameterDeclaration `type:"structure"`

	// A parameter declaration for the Integer data type.
	IntegerParameterDeclaration *IntegerParameterDeclaration `type:"structure"`

	// A parameter declaration for the String data type.
	StringParameterDeclaration *StringParameterDeclaration `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 ParameterDeclaration) 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 ParameterDeclaration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ParameterDeclaration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ParameterDeclaration"}
	if s.DateTimeParameterDeclaration != nil {
		if err := s.DateTimeParameterDeclaration.Validate(); err != nil {
			invalidParams.AddNested("DateTimeParameterDeclaration", err.(request.ErrInvalidParams))
		}
	}
	if s.DecimalParameterDeclaration != nil {
		if err := s.DecimalParameterDeclaration.Validate(); err != nil {
			invalidParams.AddNested("DecimalParameterDeclaration", err.(request.ErrInvalidParams))
		}
	}
	if s.IntegerParameterDeclaration != nil {
		if err := s.IntegerParameterDeclaration.Validate(); err != nil {
			invalidParams.AddNested("IntegerParameterDeclaration", err.(request.ErrInvalidParams))
		}
	}
	if s.StringParameterDeclaration != nil {
		if err := s.StringParameterDeclaration.Validate(); err != nil {
			invalidParams.AddNested("StringParameterDeclaration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDateTimeParameterDeclaration sets the DateTimeParameterDeclaration field's value.
func (s *ParameterDeclaration) SetDateTimeParameterDeclaration(v *DateTimeParameterDeclaration) *ParameterDeclaration {
	s.DateTimeParameterDeclaration = v
	return s
}

// SetDecimalParameterDeclaration sets the DecimalParameterDeclaration field's value.
func (s *ParameterDeclaration) SetDecimalParameterDeclaration(v *DecimalParameterDeclaration) *ParameterDeclaration {
	s.DecimalParameterDeclaration = v
	return s
}

// SetIntegerParameterDeclaration sets the IntegerParameterDeclaration field's value.
func (s *ParameterDeclaration) SetIntegerParameterDeclaration(v *IntegerParameterDeclaration) *ParameterDeclaration {
	s.IntegerParameterDeclaration = v
	return s
}

// SetStringParameterDeclaration sets the StringParameterDeclaration field's value.
func (s *ParameterDeclaration) SetStringParameterDeclaration(v *StringParameterDeclaration) *ParameterDeclaration {
	s.StringParameterDeclaration = v
	return s
}

// A control to display a dropdown list with buttons that are used to select
// a single value.
type ParameterDropDownControl struct {
	_ struct{} `type:"structure"`

	// The values that are displayed in a control can be configured to only show
	// values that are valid based on what's selected in other controls.
	CascadingControlConfiguration *CascadingControlConfiguration `type:"structure"`

	// The display options of a control.
	DisplayOptions *DropDownControlDisplayOptions `type:"structure"`

	// The ID of the ParameterDropDownControl.
	//
	// ParameterControlId is a required field
	ParameterControlId *string `min:"1" type:"string" required:"true"`

	// A list of selectable values that are used in a control.
	SelectableValues *ParameterSelectableValues `type:"structure"`

	// The source parameter name of the ParameterDropDownControl.
	//
	// SourceParameterName is a required field
	SourceParameterName *string `min:"1" type:"string" required:"true"`

	// The title of the ParameterDropDownControl.
	//
	// Title is a required field
	Title *string `min:"1" type:"string" required:"true"`

	// The type parameter name of the ParameterDropDownControl.
	Type *string `type:"string" enum:"SheetControlListType"`
}

// 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 ParameterDropDownControl) 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 ParameterDropDownControl) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ParameterDropDownControl) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ParameterDropDownControl"}
	if s.ParameterControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("ParameterControlId"))
	}
	if s.ParameterControlId != nil && len(*s.ParameterControlId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ParameterControlId", 1))
	}
	if s.SourceParameterName == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceParameterName"))
	}
	if s.SourceParameterName != nil && len(*s.SourceParameterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceParameterName", 1))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.Title != nil && len(*s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.CascadingControlConfiguration != nil {
		if err := s.CascadingControlConfiguration.Validate(); err != nil {
			invalidParams.AddNested("CascadingControlConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.SelectableValues != nil {
		if err := s.SelectableValues.Validate(); err != nil {
			invalidParams.AddNested("SelectableValues", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCascadingControlConfiguration sets the CascadingControlConfiguration field's value.
func (s *ParameterDropDownControl) SetCascadingControlConfiguration(v *CascadingControlConfiguration) *ParameterDropDownControl {
	s.CascadingControlConfiguration = v
	return s
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *ParameterDropDownControl) SetDisplayOptions(v *DropDownControlDisplayOptions) *ParameterDropDownControl {
	s.DisplayOptions = v
	return s
}

// SetParameterControlId sets the ParameterControlId field's value.
func (s *ParameterDropDownControl) SetParameterControlId(v string) *ParameterDropDownControl {
	s.ParameterControlId = &v
	return s
}

// SetSelectableValues sets the SelectableValues field's value.
func (s *ParameterDropDownControl) SetSelectableValues(v *ParameterSelectableValues) *ParameterDropDownControl {
	s.SelectableValues = v
	return s
}

// SetSourceParameterName sets the SourceParameterName field's value.
func (s *ParameterDropDownControl) SetSourceParameterName(v string) *ParameterDropDownControl {
	s.SourceParameterName = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *ParameterDropDownControl) SetTitle(v string) *ParameterDropDownControl {
	s.Title = &v
	return s
}

// SetType sets the Type field's value.
func (s *ParameterDropDownControl) SetType(v string) *ParameterDropDownControl {
	s.Type = &v
	return s
}

// A control to display a list with buttons or boxes that are used to select
// either a single value or multiple values.
type ParameterListControl struct {
	_ struct{} `type:"structure"`

	// The values that are displayed in a control can be configured to only show
	// values that are valid based on what's selected in other controls.
	CascadingControlConfiguration *CascadingControlConfiguration `type:"structure"`

	// The display options of a control.
	DisplayOptions *ListControlDisplayOptions `type:"structure"`

	// The ID of the ParameterListControl.
	//
	// ParameterControlId is a required field
	ParameterControlId *string `min:"1" type:"string" required:"true"`

	// A list of selectable values that are used in a control.
	SelectableValues *ParameterSelectableValues `type:"structure"`

	// The source parameter name of the ParameterListControl.
	//
	// SourceParameterName is a required field
	SourceParameterName *string `min:"1" type:"string" required:"true"`

	// The title of the ParameterListControl.
	//
	// Title is a required field
	Title *string `min:"1" type:"string" required:"true"`

	// The type of ParameterListControl.
	Type *string `type:"string" enum:"SheetControlListType"`
}

// 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 ParameterListControl) 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 ParameterListControl) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ParameterListControl) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ParameterListControl"}
	if s.ParameterControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("ParameterControlId"))
	}
	if s.ParameterControlId != nil && len(*s.ParameterControlId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ParameterControlId", 1))
	}
	if s.SourceParameterName == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceParameterName"))
	}
	if s.SourceParameterName != nil && len(*s.SourceParameterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceParameterName", 1))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.Title != nil && len(*s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.CascadingControlConfiguration != nil {
		if err := s.CascadingControlConfiguration.Validate(); err != nil {
			invalidParams.AddNested("CascadingControlConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.SelectableValues != nil {
		if err := s.SelectableValues.Validate(); err != nil {
			invalidParams.AddNested("SelectableValues", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCascadingControlConfiguration sets the CascadingControlConfiguration field's value.
func (s *ParameterListControl) SetCascadingControlConfiguration(v *CascadingControlConfiguration) *ParameterListControl {
	s.CascadingControlConfiguration = v
	return s
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *ParameterListControl) SetDisplayOptions(v *ListControlDisplayOptions) *ParameterListControl {
	s.DisplayOptions = v
	return s
}

// SetParameterControlId sets the ParameterControlId field's value.
func (s *ParameterListControl) SetParameterControlId(v string) *ParameterListControl {
	s.ParameterControlId = &v
	return s
}

// SetSelectableValues sets the SelectableValues field's value.
func (s *ParameterListControl) SetSelectableValues(v *ParameterSelectableValues) *ParameterListControl {
	s.SelectableValues = v
	return s
}

// SetSourceParameterName sets the SourceParameterName field's value.
func (s *ParameterListControl) SetSourceParameterName(v string) *ParameterListControl {
	s.SourceParameterName = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *ParameterListControl) SetTitle(v string) *ParameterListControl {
	s.Title = &v
	return s
}

// SetType sets the Type field's value.
func (s *ParameterListControl) SetType(v string) *ParameterListControl {
	s.Type = &v
	return s
}

// A list of selectable values that are used in a control.
type ParameterSelectableValues struct {
	_ struct{} `type:"structure"`

	// The column identifier that fetches values from the data set.
	LinkToDataSetColumn *ColumnIdentifier `type:"structure"`

	// The values that are used in ParameterSelectableValues.
	Values []*string `type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParameterSelectableValues) 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 ParameterSelectableValues) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ParameterSelectableValues) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ParameterSelectableValues"}
	if s.LinkToDataSetColumn != nil {
		if err := s.LinkToDataSetColumn.Validate(); err != nil {
			invalidParams.AddNested("LinkToDataSetColumn", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetLinkToDataSetColumn sets the LinkToDataSetColumn field's value.
func (s *ParameterSelectableValues) SetLinkToDataSetColumn(v *ColumnIdentifier) *ParameterSelectableValues {
	s.LinkToDataSetColumn = v
	return s
}

// SetValues sets the Values field's value.
func (s *ParameterSelectableValues) SetValues(v []*string) *ParameterSelectableValues {
	s.Values = v
	return s
}

// A control to display a horizontal toggle bar. This is used to change a value
// by sliding the toggle.
type ParameterSliderControl struct {
	_ struct{} `type:"structure"`

	// The display options of a control.
	DisplayOptions *SliderControlDisplayOptions `type:"structure"`

	// The larger value that is displayed at the right of the slider.
	//
	// MaximumValue is a required field
	MaximumValue *float64 `type:"double" required:"true"`

	// The smaller value that is displayed at the left of the slider.
	//
	// MinimumValue is a required field
	MinimumValue *float64 `type:"double" required:"true"`

	// The ID of the ParameterSliderControl.
	//
	// ParameterControlId is a required field
	ParameterControlId *string `min:"1" type:"string" required:"true"`

	// The source parameter name of the ParameterSliderControl.
	//
	// SourceParameterName is a required field
	SourceParameterName *string `min:"1" type:"string" required:"true"`

	// The number of increments that the slider bar is divided into.
	//
	// StepSize is a required field
	StepSize *float64 `type:"double" required:"true"`

	// The title of the ParameterSliderControl.
	//
	// Title is a required field
	Title *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParameterSliderControl) 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 ParameterSliderControl) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ParameterSliderControl) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ParameterSliderControl"}
	if s.MaximumValue == nil {
		invalidParams.Add(request.NewErrParamRequired("MaximumValue"))
	}
	if s.MinimumValue == nil {
		invalidParams.Add(request.NewErrParamRequired("MinimumValue"))
	}
	if s.ParameterControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("ParameterControlId"))
	}
	if s.ParameterControlId != nil && len(*s.ParameterControlId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ParameterControlId", 1))
	}
	if s.SourceParameterName == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceParameterName"))
	}
	if s.SourceParameterName != nil && len(*s.SourceParameterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceParameterName", 1))
	}
	if s.StepSize == nil {
		invalidParams.Add(request.NewErrParamRequired("StepSize"))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.Title != nil && len(*s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *ParameterSliderControl) SetDisplayOptions(v *SliderControlDisplayOptions) *ParameterSliderControl {
	s.DisplayOptions = v
	return s
}

// SetMaximumValue sets the MaximumValue field's value.
func (s *ParameterSliderControl) SetMaximumValue(v float64) *ParameterSliderControl {
	s.MaximumValue = &v
	return s
}

// SetMinimumValue sets the MinimumValue field's value.
func (s *ParameterSliderControl) SetMinimumValue(v float64) *ParameterSliderControl {
	s.MinimumValue = &v
	return s
}

// SetParameterControlId sets the ParameterControlId field's value.
func (s *ParameterSliderControl) SetParameterControlId(v string) *ParameterSliderControl {
	s.ParameterControlId = &v
	return s
}

// SetSourceParameterName sets the SourceParameterName field's value.
func (s *ParameterSliderControl) SetSourceParameterName(v string) *ParameterSliderControl {
	s.SourceParameterName = &v
	return s
}

// SetStepSize sets the StepSize field's value.
func (s *ParameterSliderControl) SetStepSize(v float64) *ParameterSliderControl {
	s.StepSize = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *ParameterSliderControl) SetTitle(v string) *ParameterSliderControl {
	s.Title = &v
	return s
}

// A control to display a text box that is used to enter multiple entries.
type ParameterTextAreaControl struct {
	_ struct{} `type:"structure"`

	// The delimiter that is used to separate the lines in text.
	Delimiter *string `min:"1" type:"string"`

	// The display options of a control.
	DisplayOptions *TextAreaControlDisplayOptions `type:"structure"`

	// The ID of the ParameterTextAreaControl.
	//
	// ParameterControlId is a required field
	ParameterControlId *string `min:"1" type:"string" required:"true"`

	// The source parameter name of the ParameterTextAreaControl.
	//
	// SourceParameterName is a required field
	SourceParameterName *string `min:"1" type:"string" required:"true"`

	// The title of the ParameterTextAreaControl.
	//
	// Title is a required field
	Title *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParameterTextAreaControl) 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 ParameterTextAreaControl) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ParameterTextAreaControl) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ParameterTextAreaControl"}
	if s.Delimiter != nil && len(*s.Delimiter) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Delimiter", 1))
	}
	if s.ParameterControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("ParameterControlId"))
	}
	if s.ParameterControlId != nil && len(*s.ParameterControlId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ParameterControlId", 1))
	}
	if s.SourceParameterName == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceParameterName"))
	}
	if s.SourceParameterName != nil && len(*s.SourceParameterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceParameterName", 1))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.Title != nil && len(*s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDelimiter sets the Delimiter field's value.
func (s *ParameterTextAreaControl) SetDelimiter(v string) *ParameterTextAreaControl {
	s.Delimiter = &v
	return s
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *ParameterTextAreaControl) SetDisplayOptions(v *TextAreaControlDisplayOptions) *ParameterTextAreaControl {
	s.DisplayOptions = v
	return s
}

// SetParameterControlId sets the ParameterControlId field's value.
func (s *ParameterTextAreaControl) SetParameterControlId(v string) *ParameterTextAreaControl {
	s.ParameterControlId = &v
	return s
}

// SetSourceParameterName sets the SourceParameterName field's value.
func (s *ParameterTextAreaControl) SetSourceParameterName(v string) *ParameterTextAreaControl {
	s.SourceParameterName = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *ParameterTextAreaControl) SetTitle(v string) *ParameterTextAreaControl {
	s.Title = &v
	return s
}

// A control to display a text box that is used to enter a single entry.
type ParameterTextFieldControl struct {
	_ struct{} `type:"structure"`

	// The display options of a control.
	DisplayOptions *TextFieldControlDisplayOptions `type:"structure"`

	// The ID of the ParameterTextFieldControl.
	//
	// ParameterControlId is a required field
	ParameterControlId *string `min:"1" type:"string" required:"true"`

	// The source parameter name of the ParameterTextFieldControl.
	//
	// SourceParameterName is a required field
	SourceParameterName *string `min:"1" type:"string" required:"true"`

	// The title of the ParameterTextFieldControl.
	//
	// Title is a required field
	Title *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ParameterTextFieldControl) 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 ParameterTextFieldControl) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ParameterTextFieldControl) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ParameterTextFieldControl"}
	if s.ParameterControlId == nil {
		invalidParams.Add(request.NewErrParamRequired("ParameterControlId"))
	}
	if s.ParameterControlId != nil && len(*s.ParameterControlId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ParameterControlId", 1))
	}
	if s.SourceParameterName == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceParameterName"))
	}
	if s.SourceParameterName != nil && len(*s.SourceParameterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SourceParameterName", 1))
	}
	if s.Title == nil {
		invalidParams.Add(request.NewErrParamRequired("Title"))
	}
	if s.Title != nil && len(*s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.DisplayOptions != nil {
		if err := s.DisplayOptions.Validate(); err != nil {
			invalidParams.AddNested("DisplayOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDisplayOptions sets the DisplayOptions field's value.
func (s *ParameterTextFieldControl) SetDisplayOptions(v *TextFieldControlDisplayOptions) *ParameterTextFieldControl {
	s.DisplayOptions = v
	return s
}

// SetParameterControlId sets the ParameterControlId field's value.
func (s *ParameterTextFieldControl) SetParameterControlId(v string) *ParameterTextFieldControl {
	s.ParameterControlId = &v
	return s
}

// SetSourceParameterName sets the SourceParameterName field's value.
func (s *ParameterTextFieldControl) SetSourceParameterName(v string) *ParameterTextFieldControl {
	s.SourceParameterName = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *ParameterTextFieldControl) SetTitle(v string) *ParameterTextFieldControl {
	s.Title = &v
	return s
}

// A list of Amazon QuickSight parameters and the list's override values.
type Parameters struct {
	_ struct{} `type:"structure"`

	// The parameters that have a data type of date-time.
	DateTimeParameters []*DateTimeParameter `type:"list"`

	// The parameters that have a data type of decimal.
	DecimalParameters []*DecimalParameter `type:"list"`

	// The parameters that have a data type of integer.
	IntegerParameters []*IntegerParameter `type:"list"`

	// The parameters that have a data type of string.
	StringParameters []*StringParameter `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 Parameters) 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 Parameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Parameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Parameters"}
	if s.DateTimeParameters != nil {
		for i, v := range s.DateTimeParameters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DateTimeParameters", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.DecimalParameters != nil {
		for i, v := range s.DecimalParameters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DecimalParameters", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.IntegerParameters != nil {
		for i, v := range s.IntegerParameters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "IntegerParameters", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.StringParameters != nil {
		for i, v := range s.StringParameters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "StringParameters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDateTimeParameters sets the DateTimeParameters field's value.
func (s *Parameters) SetDateTimeParameters(v []*DateTimeParameter) *Parameters {
	s.DateTimeParameters = v
	return s
}

// SetDecimalParameters sets the DecimalParameters field's value.
func (s *Parameters) SetDecimalParameters(v []*DecimalParameter) *Parameters {
	s.DecimalParameters = v
	return s
}

// SetIntegerParameters sets the IntegerParameters field's value.
func (s *Parameters) SetIntegerParameters(v []*IntegerParameter) *Parameters {
	s.IntegerParameters = v
	return s
}

// SetStringParameters sets the StringParameters field's value.
func (s *Parameters) SetStringParameters(v []*StringParameter) *Parameters {
	s.StringParameters = v
	return s
}

// The percent range in the visible range.
type PercentVisibleRange struct {
	_ struct{} `type:"structure"`

	// The lower bound of the range.
	From *float64 `type:"double"`

	// The top bound of the range.
	To *float64 `type:"double"`
}

// 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 PercentVisibleRange) 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 PercentVisibleRange) GoString() string {
	return s.String()
}

// SetFrom sets the From field's value.
func (s *PercentVisibleRange) SetFrom(v float64) *PercentVisibleRange {
	s.From = &v
	return s
}

// SetTo sets the To field's value.
func (s *PercentVisibleRange) SetTo(v float64) *PercentVisibleRange {
	s.To = &v
	return s
}

// The options that determine the percentage display format configuration.
type PercentageDisplayFormatConfiguration struct {
	_ struct{} `type:"structure"`

	// The option that determines the decimal places configuration.
	DecimalPlacesConfiguration *DecimalPlacesConfiguration `type:"structure"`

	// The options that determine the negative value configuration.
	NegativeValueConfiguration *NegativeValueConfiguration `type:"structure"`

	// The options that determine the null value format configuration.
	NullValueFormatConfiguration *NullValueFormatConfiguration `type:"structure"`

	// Determines the prefix value of the percentage format.
	//
	// Prefix is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by PercentageDisplayFormatConfiguration's
	// String and GoString methods.
	Prefix *string `min:"1" type:"string" sensitive:"true"`

	// The options that determine the numeric separator configuration.
	SeparatorConfiguration *NumericSeparatorConfiguration `type:"structure"`

	// Determines the suffix value of the percentage format.
	//
	// Suffix is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by PercentageDisplayFormatConfiguration's
	// String and GoString methods.
	Suffix *string `min:"1" type:"string" sensitive:"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 PercentageDisplayFormatConfiguration) 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 PercentageDisplayFormatConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PercentageDisplayFormatConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PercentageDisplayFormatConfiguration"}
	if s.Prefix != nil && len(*s.Prefix) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Prefix", 1))
	}
	if s.Suffix != nil && len(*s.Suffix) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Suffix", 1))
	}
	if s.DecimalPlacesConfiguration != nil {
		if err := s.DecimalPlacesConfiguration.Validate(); err != nil {
			invalidParams.AddNested("DecimalPlacesConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.NegativeValueConfiguration != nil {
		if err := s.NegativeValueConfiguration.Validate(); err != nil {
			invalidParams.AddNested("NegativeValueConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.NullValueFormatConfiguration != nil {
		if err := s.NullValueFormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("NullValueFormatConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDecimalPlacesConfiguration sets the DecimalPlacesConfiguration field's value.
func (s *PercentageDisplayFormatConfiguration) SetDecimalPlacesConfiguration(v *DecimalPlacesConfiguration) *PercentageDisplayFormatConfiguration {
	s.DecimalPlacesConfiguration = v
	return s
}

// SetNegativeValueConfiguration sets the NegativeValueConfiguration field's value.
func (s *PercentageDisplayFormatConfiguration) SetNegativeValueConfiguration(v *NegativeValueConfiguration) *PercentageDisplayFormatConfiguration {
	s.NegativeValueConfiguration = v
	return s
}

// SetNullValueFormatConfiguration sets the NullValueFormatConfiguration field's value.
func (s *PercentageDisplayFormatConfiguration) SetNullValueFormatConfiguration(v *NullValueFormatConfiguration) *PercentageDisplayFormatConfiguration {
	s.NullValueFormatConfiguration = v
	return s
}

// SetPrefix sets the Prefix field's value.
func (s *PercentageDisplayFormatConfiguration) SetPrefix(v string) *PercentageDisplayFormatConfiguration {
	s.Prefix = &v
	return s
}

// SetSeparatorConfiguration sets the SeparatorConfiguration field's value.
func (s *PercentageDisplayFormatConfiguration) SetSeparatorConfiguration(v *NumericSeparatorConfiguration) *PercentageDisplayFormatConfiguration {
	s.SeparatorConfiguration = v
	return s
}

// SetSuffix sets the Suffix field's value.
func (s *PercentageDisplayFormatConfiguration) SetSuffix(v string) *PercentageDisplayFormatConfiguration {
	s.Suffix = &v
	return s
}

// An aggregation based on the percentile of values in a dimension or measure.
type PercentileAggregation struct {
	_ struct{} `type:"structure"`

	// The percentile value. This value can be any numeric constant 0–100. A percentile
	// value of 50 computes the median value of the measure.
	PercentileValue *float64 `type:"double"`
}

// 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 PercentileAggregation) 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 PercentileAggregation) GoString() string {
	return s.String()
}

// SetPercentileValue sets the PercentileValue field's value.
func (s *PercentileAggregation) SetPercentileValue(v float64) *PercentileAggregation {
	s.PercentileValue = &v
	return s
}

// The period over period computation configuration.
type PeriodOverPeriodComputation struct {
	_ struct{} `type:"structure"`

	// The ID for a computation.
	//
	// ComputationId is a required field
	ComputationId *string `min:"1" type:"string" required:"true"`

	// The name of a computation.
	Name *string `type:"string"`

	// The time field that is used in a computation.
	Time *DimensionField `type:"structure"`

	// The value field that is used in a computation.
	Value *MeasureField `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 PeriodOverPeriodComputation) 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 PeriodOverPeriodComputation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PeriodOverPeriodComputation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PeriodOverPeriodComputation"}
	if s.ComputationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ComputationId"))
	}
	if s.ComputationId != nil && len(*s.ComputationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComputationId", 1))
	}
	if s.Time != nil {
		if err := s.Time.Validate(); err != nil {
			invalidParams.AddNested("Time", err.(request.ErrInvalidParams))
		}
	}
	if s.Value != nil {
		if err := s.Value.Validate(); err != nil {
			invalidParams.AddNested("Value", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetComputationId sets the ComputationId field's value.
func (s *PeriodOverPeriodComputation) SetComputationId(v string) *PeriodOverPeriodComputation {
	s.ComputationId = &v
	return s
}

// SetName sets the Name field's value.
func (s *PeriodOverPeriodComputation) SetName(v string) *PeriodOverPeriodComputation {
	s.Name = &v
	return s
}

// SetTime sets the Time field's value.
func (s *PeriodOverPeriodComputation) SetTime(v *DimensionField) *PeriodOverPeriodComputation {
	s.Time = v
	return s
}

// SetValue sets the Value field's value.
func (s *PeriodOverPeriodComputation) SetValue(v *MeasureField) *PeriodOverPeriodComputation {
	s.Value = v
	return s
}

// The period to date computation configuration.
type PeriodToDateComputation struct {
	_ struct{} `type:"structure"`

	// The ID for a computation.
	//
	// ComputationId is a required field
	ComputationId *string `min:"1" type:"string" required:"true"`

	// The name of a computation.
	Name *string `type:"string"`

	// The time granularity setup of period to date computation. Choose from the
	// following options:
	//
	//    * YEAR: Year to date.
	//
	//    * MONTH: Month to date.
	PeriodTimeGranularity *string `type:"string" enum:"TimeGranularity"`

	// The time field that is used in a computation.
	Time *DimensionField `type:"structure"`

	// The value field that is used in a computation.
	Value *MeasureField `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 PeriodToDateComputation) 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 PeriodToDateComputation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PeriodToDateComputation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PeriodToDateComputation"}
	if s.ComputationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ComputationId"))
	}
	if s.ComputationId != nil && len(*s.ComputationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComputationId", 1))
	}
	if s.Time != nil {
		if err := s.Time.Validate(); err != nil {
			invalidParams.AddNested("Time", err.(request.ErrInvalidParams))
		}
	}
	if s.Value != nil {
		if err := s.Value.Validate(); err != nil {
			invalidParams.AddNested("Value", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetComputationId sets the ComputationId field's value.
func (s *PeriodToDateComputation) SetComputationId(v string) *PeriodToDateComputation {
	s.ComputationId = &v
	return s
}

// SetName sets the Name field's value.
func (s *PeriodToDateComputation) SetName(v string) *PeriodToDateComputation {
	s.Name = &v
	return s
}

// SetPeriodTimeGranularity sets the PeriodTimeGranularity field's value.
func (s *PeriodToDateComputation) SetPeriodTimeGranularity(v string) *PeriodToDateComputation {
	s.PeriodTimeGranularity = &v
	return s
}

// SetTime sets the Time field's value.
func (s *PeriodToDateComputation) SetTime(v *DimensionField) *PeriodToDateComputation {
	s.Time = v
	return s
}

// SetValue sets the Value field's value.
func (s *PeriodToDateComputation) SetValue(v *MeasureField) *PeriodToDateComputation {
	s.Value = v
	return s
}

// A view of a data source that contains information about the shape of the
// data in the underlying source. This is a variant type structure. For this
// structure to be valid, only one of the attributes can be non-null.
type PhysicalTable struct {
	_ struct{} `type:"structure"`

	// A physical table type built from the results of the custom SQL query.
	CustomSql *CustomSql `type:"structure"`

	// A physical table type for relational data sources.
	RelationalTable *RelationalTable `type:"structure"`

	// A physical table type for as S3 data source.
	S3Source *S3Source `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 PhysicalTable) 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 PhysicalTable) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PhysicalTable) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PhysicalTable"}
	if s.CustomSql != nil {
		if err := s.CustomSql.Validate(); err != nil {
			invalidParams.AddNested("CustomSql", err.(request.ErrInvalidParams))
		}
	}
	if s.RelationalTable != nil {
		if err := s.RelationalTable.Validate(); err != nil {
			invalidParams.AddNested("RelationalTable", err.(request.ErrInvalidParams))
		}
	}
	if s.S3Source != nil {
		if err := s.S3Source.Validate(); err != nil {
			invalidParams.AddNested("S3Source", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCustomSql sets the CustomSql field's value.
func (s *PhysicalTable) SetCustomSql(v *CustomSql) *PhysicalTable {
	s.CustomSql = v
	return s
}

// SetRelationalTable sets the RelationalTable field's value.
func (s *PhysicalTable) SetRelationalTable(v *RelationalTable) *PhysicalTable {
	s.RelationalTable = v
	return s
}

// SetS3Source sets the S3Source field's value.
func (s *PhysicalTable) SetS3Source(v *S3Source) *PhysicalTable {
	s.S3Source = v
	return s
}

// The field well configuration of a pie chart.
type PieChartAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The category (group/color) field wells of a pie chart.
	Category []*DimensionField `type:"list"`

	// The small multiples field well of a pie chart.
	SmallMultiples []*DimensionField `type:"list"`

	// The value field wells of a pie chart. Values are aggregated based on categories.
	Values []*MeasureField `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 PieChartAggregatedFieldWells) 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 PieChartAggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PieChartAggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PieChartAggregatedFieldWells"}
	if s.Category != nil {
		for i, v := range s.Category {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Category", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.SmallMultiples != nil {
		for i, v := range s.SmallMultiples {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SmallMultiples", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Values != nil {
		for i, v := range s.Values {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Values", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategory sets the Category field's value.
func (s *PieChartAggregatedFieldWells) SetCategory(v []*DimensionField) *PieChartAggregatedFieldWells {
	s.Category = v
	return s
}

// SetSmallMultiples sets the SmallMultiples field's value.
func (s *PieChartAggregatedFieldWells) SetSmallMultiples(v []*DimensionField) *PieChartAggregatedFieldWells {
	s.SmallMultiples = v
	return s
}

// SetValues sets the Values field's value.
func (s *PieChartAggregatedFieldWells) SetValues(v []*MeasureField) *PieChartAggregatedFieldWells {
	s.Values = v
	return s
}

// The configuration of a pie chart.
type PieChartConfiguration struct {
	_ struct{} `type:"structure"`

	// The label options of the group/color that is displayed in a pie chart.
	CategoryLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The contribution analysis (anomaly configuration) setup of the visual.
	ContributionAnalysisDefaults []*ContributionAnalysisDefault `min:"1" type:"list"`

	// The options that determine if visual data labels are displayed.
	DataLabels *DataLabelOptions `type:"structure"`

	// The options that determine the shape of the chart. This option determines
	// whether the chart is a pie chart or a donut chart.
	DonutOptions *DonutOptions `type:"structure"`

	// The field wells of the visual.
	FieldWells *PieChartFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The legend display setup of the visual.
	Legend *LegendOptions `type:"structure"`

	// The small multiples setup for the visual.
	SmallMultiplesOptions *SmallMultiplesOptions `type:"structure"`

	// The sort configuration of a pie chart.
	SortConfiguration *PieChartSortConfiguration `type:"structure"`

	// The tooltip display setup of the visual.
	Tooltip *TooltipOptions `type:"structure"`

	// The label options for the value that is displayed in a pie chart.
	ValueLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The palette (chart color) display setup of the visual.
	VisualPalette *VisualPalette `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 PieChartConfiguration) 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 PieChartConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PieChartConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PieChartConfiguration"}
	if s.ContributionAnalysisDefaults != nil && len(s.ContributionAnalysisDefaults) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContributionAnalysisDefaults", 1))
	}
	if s.CategoryLabelOptions != nil {
		if err := s.CategoryLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("CategoryLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.ContributionAnalysisDefaults != nil {
		for i, v := range s.ContributionAnalysisDefaults {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ContributionAnalysisDefaults", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.DataLabels != nil {
		if err := s.DataLabels.Validate(); err != nil {
			invalidParams.AddNested("DataLabels", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.SmallMultiplesOptions != nil {
		if err := s.SmallMultiplesOptions.Validate(); err != nil {
			invalidParams.AddNested("SmallMultiplesOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.SortConfiguration != nil {
		if err := s.SortConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SortConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Tooltip != nil {
		if err := s.Tooltip.Validate(); err != nil {
			invalidParams.AddNested("Tooltip", err.(request.ErrInvalidParams))
		}
	}
	if s.ValueLabelOptions != nil {
		if err := s.ValueLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("ValueLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.VisualPalette != nil {
		if err := s.VisualPalette.Validate(); err != nil {
			invalidParams.AddNested("VisualPalette", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategoryLabelOptions sets the CategoryLabelOptions field's value.
func (s *PieChartConfiguration) SetCategoryLabelOptions(v *ChartAxisLabelOptions) *PieChartConfiguration {
	s.CategoryLabelOptions = v
	return s
}

// SetContributionAnalysisDefaults sets the ContributionAnalysisDefaults field's value.
func (s *PieChartConfiguration) SetContributionAnalysisDefaults(v []*ContributionAnalysisDefault) *PieChartConfiguration {
	s.ContributionAnalysisDefaults = v
	return s
}

// SetDataLabels sets the DataLabels field's value.
func (s *PieChartConfiguration) SetDataLabels(v *DataLabelOptions) *PieChartConfiguration {
	s.DataLabels = v
	return s
}

// SetDonutOptions sets the DonutOptions field's value.
func (s *PieChartConfiguration) SetDonutOptions(v *DonutOptions) *PieChartConfiguration {
	s.DonutOptions = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *PieChartConfiguration) SetFieldWells(v *PieChartFieldWells) *PieChartConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *PieChartConfiguration) SetInteractions(v *VisualInteractionOptions) *PieChartConfiguration {
	s.Interactions = v
	return s
}

// SetLegend sets the Legend field's value.
func (s *PieChartConfiguration) SetLegend(v *LegendOptions) *PieChartConfiguration {
	s.Legend = v
	return s
}

// SetSmallMultiplesOptions sets the SmallMultiplesOptions field's value.
func (s *PieChartConfiguration) SetSmallMultiplesOptions(v *SmallMultiplesOptions) *PieChartConfiguration {
	s.SmallMultiplesOptions = v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *PieChartConfiguration) SetSortConfiguration(v *PieChartSortConfiguration) *PieChartConfiguration {
	s.SortConfiguration = v
	return s
}

// SetTooltip sets the Tooltip field's value.
func (s *PieChartConfiguration) SetTooltip(v *TooltipOptions) *PieChartConfiguration {
	s.Tooltip = v
	return s
}

// SetValueLabelOptions sets the ValueLabelOptions field's value.
func (s *PieChartConfiguration) SetValueLabelOptions(v *ChartAxisLabelOptions) *PieChartConfiguration {
	s.ValueLabelOptions = v
	return s
}

// SetVisualPalette sets the VisualPalette field's value.
func (s *PieChartConfiguration) SetVisualPalette(v *VisualPalette) *PieChartConfiguration {
	s.VisualPalette = v
	return s
}

// The field well configuration of a pie chart.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type PieChartFieldWells struct {
	_ struct{} `type:"structure"`

	// The field well configuration of a pie chart.
	PieChartAggregatedFieldWells *PieChartAggregatedFieldWells `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 PieChartFieldWells) 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 PieChartFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PieChartFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PieChartFieldWells"}
	if s.PieChartAggregatedFieldWells != nil {
		if err := s.PieChartAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("PieChartAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPieChartAggregatedFieldWells sets the PieChartAggregatedFieldWells field's value.
func (s *PieChartFieldWells) SetPieChartAggregatedFieldWells(v *PieChartAggregatedFieldWells) *PieChartFieldWells {
	s.PieChartAggregatedFieldWells = v
	return s
}

// The sort configuration of a pie chart.
type PieChartSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The limit on the number of categories that are displayed in a pie chart.
	CategoryItemsLimit *ItemsLimitConfiguration `type:"structure"`

	// The sort configuration of the category fields.
	CategorySort []*FieldSortOptions `type:"list"`

	// The limit on the number of small multiples panels that are displayed.
	SmallMultiplesLimitConfiguration *ItemsLimitConfiguration `type:"structure"`

	// The sort configuration of the small multiples field.
	SmallMultiplesSort []*FieldSortOptions `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 PieChartSortConfiguration) 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 PieChartSortConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PieChartSortConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PieChartSortConfiguration"}
	if s.CategorySort != nil {
		for i, v := range s.CategorySort {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CategorySort", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.SmallMultiplesSort != nil {
		for i, v := range s.SmallMultiplesSort {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SmallMultiplesSort", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategoryItemsLimit sets the CategoryItemsLimit field's value.
func (s *PieChartSortConfiguration) SetCategoryItemsLimit(v *ItemsLimitConfiguration) *PieChartSortConfiguration {
	s.CategoryItemsLimit = v
	return s
}

// SetCategorySort sets the CategorySort field's value.
func (s *PieChartSortConfiguration) SetCategorySort(v []*FieldSortOptions) *PieChartSortConfiguration {
	s.CategorySort = v
	return s
}

// SetSmallMultiplesLimitConfiguration sets the SmallMultiplesLimitConfiguration field's value.
func (s *PieChartSortConfiguration) SetSmallMultiplesLimitConfiguration(v *ItemsLimitConfiguration) *PieChartSortConfiguration {
	s.SmallMultiplesLimitConfiguration = v
	return s
}

// SetSmallMultiplesSort sets the SmallMultiplesSort field's value.
func (s *PieChartSortConfiguration) SetSmallMultiplesSort(v []*FieldSortOptions) *PieChartSortConfiguration {
	s.SmallMultiplesSort = v
	return s
}

// A pie or donut chart.
//
// The PieChartVisual structure describes a visual that is a member of the pie
// chart family.
//
// The following charts can be described by using this structure:
//
//   - Pie charts
//
//   - Donut charts
//
// For more information, see Using pie charts (https://docs.aws.amazon.com/quicksight/latest/user/pie-chart.html)
// in the Amazon QuickSight User Guide.
//
// For more information, see Using donut charts (https://docs.aws.amazon.com/quicksight/latest/user/donut-chart.html)
// in the Amazon QuickSight User Guide.
type PieChartVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration of a pie chart.
	ChartConfiguration *PieChartConfiguration `type:"structure"`

	// The column hierarchy that is used during drill-downs and drill-ups.
	ColumnHierarchies []*ColumnHierarchy `type:"list"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers.
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PieChartVisual) 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 PieChartVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PieChartVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PieChartVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ColumnHierarchies != nil {
		for i, v := range s.ColumnHierarchies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnHierarchies", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *PieChartVisual) SetActions(v []*VisualCustomAction) *PieChartVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *PieChartVisual) SetChartConfiguration(v *PieChartConfiguration) *PieChartVisual {
	s.ChartConfiguration = v
	return s
}

// SetColumnHierarchies sets the ColumnHierarchies field's value.
func (s *PieChartVisual) SetColumnHierarchies(v []*ColumnHierarchy) *PieChartVisual {
	s.ColumnHierarchies = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *PieChartVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *PieChartVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *PieChartVisual) SetTitle(v *VisualTitleLabelOptions) *PieChartVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *PieChartVisual) SetVisualId(v string) *PieChartVisual {
	s.VisualId = &v
	return s
}

// The field sort options for a pivot table sort configuration.
type PivotFieldSortOptions struct {
	_ struct{} `type:"structure"`

	// The field ID for the field sort options.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The sort by field for the field sort options.
	//
	// SortBy is a required field
	SortBy *PivotTableSortBy `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 PivotFieldSortOptions) 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 PivotFieldSortOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotFieldSortOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotFieldSortOptions"}
	if s.FieldId == nil {
		invalidParams.Add(request.NewErrParamRequired("FieldId"))
	}
	if s.FieldId != nil && len(*s.FieldId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FieldId", 1))
	}
	if s.SortBy == nil {
		invalidParams.Add(request.NewErrParamRequired("SortBy"))
	}
	if s.SortBy != nil {
		if err := s.SortBy.Validate(); err != nil {
			invalidParams.AddNested("SortBy", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldId sets the FieldId field's value.
func (s *PivotFieldSortOptions) SetFieldId(v string) *PivotFieldSortOptions {
	s.FieldId = &v
	return s
}

// SetSortBy sets the SortBy field's value.
func (s *PivotFieldSortOptions) SetSortBy(v *PivotTableSortBy) *PivotFieldSortOptions {
	s.SortBy = v
	return s
}

// The aggregated field well for the pivot table.
type PivotTableAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The columns field well for a pivot table. Values are grouped by columns fields.
	Columns []*DimensionField `type:"list"`

	// The rows field well for a pivot table. Values are grouped by rows fields.
	Rows []*DimensionField `type:"list"`

	// The values field well for a pivot table. Values are aggregated based on rows
	// and columns fields.
	Values []*MeasureField `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 PivotTableAggregatedFieldWells) 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 PivotTableAggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableAggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableAggregatedFieldWells"}
	if s.Columns != nil {
		for i, v := range s.Columns {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Columns", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Rows != nil {
		for i, v := range s.Rows {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rows", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Values != nil {
		for i, v := range s.Values {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Values", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumns sets the Columns field's value.
func (s *PivotTableAggregatedFieldWells) SetColumns(v []*DimensionField) *PivotTableAggregatedFieldWells {
	s.Columns = v
	return s
}

// SetRows sets the Rows field's value.
func (s *PivotTableAggregatedFieldWells) SetRows(v []*DimensionField) *PivotTableAggregatedFieldWells {
	s.Rows = v
	return s
}

// SetValues sets the Values field's value.
func (s *PivotTableAggregatedFieldWells) SetValues(v []*MeasureField) *PivotTableAggregatedFieldWells {
	s.Values = v
	return s
}

// The cell conditional formatting option for a pivot table.
type PivotTableCellConditionalFormatting struct {
	_ struct{} `type:"structure"`

	// The field ID of the cell for conditional formatting.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The scope of the cell for conditional formatting.
	Scope *PivotTableConditionalFormattingScope `type:"structure"`

	// A list of cell scopes for conditional formatting.
	Scopes []*PivotTableConditionalFormattingScope `type:"list"`

	// The text format of the cell for conditional formatting.
	TextFormat *TextConditionalFormat `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 PivotTableCellConditionalFormatting) 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 PivotTableCellConditionalFormatting) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableCellConditionalFormatting) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableCellConditionalFormatting"}
	if s.FieldId == nil {
		invalidParams.Add(request.NewErrParamRequired("FieldId"))
	}
	if s.FieldId != nil && len(*s.FieldId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FieldId", 1))
	}
	if s.TextFormat != nil {
		if err := s.TextFormat.Validate(); err != nil {
			invalidParams.AddNested("TextFormat", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldId sets the FieldId field's value.
func (s *PivotTableCellConditionalFormatting) SetFieldId(v string) *PivotTableCellConditionalFormatting {
	s.FieldId = &v
	return s
}

// SetScope sets the Scope field's value.
func (s *PivotTableCellConditionalFormatting) SetScope(v *PivotTableConditionalFormattingScope) *PivotTableCellConditionalFormatting {
	s.Scope = v
	return s
}

// SetScopes sets the Scopes field's value.
func (s *PivotTableCellConditionalFormatting) SetScopes(v []*PivotTableConditionalFormattingScope) *PivotTableCellConditionalFormatting {
	s.Scopes = v
	return s
}

// SetTextFormat sets the TextFormat field's value.
func (s *PivotTableCellConditionalFormatting) SetTextFormat(v *TextConditionalFormat) *PivotTableCellConditionalFormatting {
	s.TextFormat = v
	return s
}

// The conditional formatting for a PivotTableVisual.
type PivotTableConditionalFormatting struct {
	_ struct{} `type:"structure"`

	// Conditional formatting options for a PivotTableVisual.
	ConditionalFormattingOptions []*PivotTableConditionalFormattingOption `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 PivotTableConditionalFormatting) 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 PivotTableConditionalFormatting) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableConditionalFormatting) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableConditionalFormatting"}
	if s.ConditionalFormattingOptions != nil {
		for i, v := range s.ConditionalFormattingOptions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ConditionalFormattingOptions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConditionalFormattingOptions sets the ConditionalFormattingOptions field's value.
func (s *PivotTableConditionalFormatting) SetConditionalFormattingOptions(v []*PivotTableConditionalFormattingOption) *PivotTableConditionalFormatting {
	s.ConditionalFormattingOptions = v
	return s
}

// Conditional formatting options for a PivotTableVisual.
type PivotTableConditionalFormattingOption struct {
	_ struct{} `type:"structure"`

	// The cell conditional formatting option for a pivot table.
	Cell *PivotTableCellConditionalFormatting `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 PivotTableConditionalFormattingOption) 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 PivotTableConditionalFormattingOption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableConditionalFormattingOption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableConditionalFormattingOption"}
	if s.Cell != nil {
		if err := s.Cell.Validate(); err != nil {
			invalidParams.AddNested("Cell", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCell sets the Cell field's value.
func (s *PivotTableConditionalFormattingOption) SetCell(v *PivotTableCellConditionalFormatting) *PivotTableConditionalFormattingOption {
	s.Cell = v
	return s
}

// The scope of the cell for conditional formatting.
type PivotTableConditionalFormattingScope struct {
	_ struct{} `type:"structure"`

	// The role (field, field total, grand total) of the cell for conditional formatting.
	Role *string `type:"string" enum:"PivotTableConditionalFormattingScopeRole"`
}

// 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 PivotTableConditionalFormattingScope) 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 PivotTableConditionalFormattingScope) GoString() string {
	return s.String()
}

// SetRole sets the Role field's value.
func (s *PivotTableConditionalFormattingScope) SetRole(v string) *PivotTableConditionalFormattingScope {
	s.Role = &v
	return s
}

// The configuration for a PivotTableVisual.
type PivotTableConfiguration struct {
	_ struct{} `type:"structure"`

	// The field options for a pivot table visual.
	FieldOptions *PivotTableFieldOptions `type:"structure"`

	// The field wells of the visual.
	FieldWells *PivotTableFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The paginated report options for a pivot table visual.
	PaginatedReportOptions *PivotTablePaginatedReportOptions `type:"structure"`

	// The sort configuration for a PivotTableVisual.
	SortConfiguration *PivotTableSortConfiguration `type:"structure"`

	// The table options for a pivot table visual.
	TableOptions *PivotTableOptions `type:"structure"`

	// The total options for a pivot table visual.
	TotalOptions *PivotTableTotalOptions `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 PivotTableConfiguration) 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 PivotTableConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableConfiguration"}
	if s.FieldOptions != nil {
		if err := s.FieldOptions.Validate(); err != nil {
			invalidParams.AddNested("FieldOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.SortConfiguration != nil {
		if err := s.SortConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SortConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.TableOptions != nil {
		if err := s.TableOptions.Validate(); err != nil {
			invalidParams.AddNested("TableOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.TotalOptions != nil {
		if err := s.TotalOptions.Validate(); err != nil {
			invalidParams.AddNested("TotalOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldOptions sets the FieldOptions field's value.
func (s *PivotTableConfiguration) SetFieldOptions(v *PivotTableFieldOptions) *PivotTableConfiguration {
	s.FieldOptions = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *PivotTableConfiguration) SetFieldWells(v *PivotTableFieldWells) *PivotTableConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *PivotTableConfiguration) SetInteractions(v *VisualInteractionOptions) *PivotTableConfiguration {
	s.Interactions = v
	return s
}

// SetPaginatedReportOptions sets the PaginatedReportOptions field's value.
func (s *PivotTableConfiguration) SetPaginatedReportOptions(v *PivotTablePaginatedReportOptions) *PivotTableConfiguration {
	s.PaginatedReportOptions = v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *PivotTableConfiguration) SetSortConfiguration(v *PivotTableSortConfiguration) *PivotTableConfiguration {
	s.SortConfiguration = v
	return s
}

// SetTableOptions sets the TableOptions field's value.
func (s *PivotTableConfiguration) SetTableOptions(v *PivotTableOptions) *PivotTableConfiguration {
	s.TableOptions = v
	return s
}

// SetTotalOptions sets the TotalOptions field's value.
func (s *PivotTableConfiguration) SetTotalOptions(v *PivotTableTotalOptions) *PivotTableConfiguration {
	s.TotalOptions = v
	return s
}

// The data path options for the pivot table field options.
type PivotTableDataPathOption struct {
	_ struct{} `type:"structure"`

	// The list of data path values for the data path options.
	//
	// DataPathList is a required field
	DataPathList []*DataPathValue `type:"list" required:"true"`

	// The width of the data path option.
	Width *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PivotTableDataPathOption) 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 PivotTableDataPathOption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableDataPathOption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableDataPathOption"}
	if s.DataPathList == nil {
		invalidParams.Add(request.NewErrParamRequired("DataPathList"))
	}
	if s.DataPathList != nil {
		for i, v := range s.DataPathList {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DataPathList", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataPathList sets the DataPathList field's value.
func (s *PivotTableDataPathOption) SetDataPathList(v []*DataPathValue) *PivotTableDataPathOption {
	s.DataPathList = v
	return s
}

// SetWidth sets the Width field's value.
func (s *PivotTableDataPathOption) SetWidth(v string) *PivotTableDataPathOption {
	s.Width = &v
	return s
}

// The collapse state options for the pivot table field options.
type PivotTableFieldCollapseStateOption struct {
	_ struct{} `type:"structure"`

	// The state of the field target of a pivot table. Choose one of the following
	// options:
	//
	//    * COLLAPSED
	//
	//    * EXPANDED
	State *string `type:"string" enum:"PivotTableFieldCollapseState"`

	// A tagged-union object that sets the collapse state.
	//
	// Target is a required field
	Target *PivotTableFieldCollapseStateTarget `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 PivotTableFieldCollapseStateOption) 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 PivotTableFieldCollapseStateOption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableFieldCollapseStateOption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableFieldCollapseStateOption"}
	if s.Target == nil {
		invalidParams.Add(request.NewErrParamRequired("Target"))
	}
	if s.Target != nil {
		if err := s.Target.Validate(); err != nil {
			invalidParams.AddNested("Target", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetState sets the State field's value.
func (s *PivotTableFieldCollapseStateOption) SetState(v string) *PivotTableFieldCollapseStateOption {
	s.State = &v
	return s
}

// SetTarget sets the Target field's value.
func (s *PivotTableFieldCollapseStateOption) SetTarget(v *PivotTableFieldCollapseStateTarget) *PivotTableFieldCollapseStateOption {
	s.Target = v
	return s
}

// The target of a pivot table field collapse state.
type PivotTableFieldCollapseStateTarget struct {
	_ struct{} `type:"structure"`

	// The data path of the pivot table's header. Used to set the collapse state.
	FieldDataPathValues []*DataPathValue `type:"list"`

	// The field ID of the pivot table that the collapse state needs to be set to.
	FieldId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PivotTableFieldCollapseStateTarget) 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 PivotTableFieldCollapseStateTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableFieldCollapseStateTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableFieldCollapseStateTarget"}
	if s.FieldDataPathValues != nil {
		for i, v := range s.FieldDataPathValues {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "FieldDataPathValues", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldDataPathValues sets the FieldDataPathValues field's value.
func (s *PivotTableFieldCollapseStateTarget) SetFieldDataPathValues(v []*DataPathValue) *PivotTableFieldCollapseStateTarget {
	s.FieldDataPathValues = v
	return s
}

// SetFieldId sets the FieldId field's value.
func (s *PivotTableFieldCollapseStateTarget) SetFieldId(v string) *PivotTableFieldCollapseStateTarget {
	s.FieldId = &v
	return s
}

// The selected field options for the pivot table field options.
type PivotTableFieldOption struct {
	_ struct{} `type:"structure"`

	// The custom label of the pivot table field.
	CustomLabel *string `min:"1" type:"string"`

	// The field ID of the pivot table field.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The visibility of the pivot table field.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 PivotTableFieldOption) 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 PivotTableFieldOption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableFieldOption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableFieldOption"}
	if s.CustomLabel != nil && len(*s.CustomLabel) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CustomLabel", 1))
	}
	if s.FieldId == nil {
		invalidParams.Add(request.NewErrParamRequired("FieldId"))
	}
	if s.FieldId != nil && len(*s.FieldId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FieldId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCustomLabel sets the CustomLabel field's value.
func (s *PivotTableFieldOption) SetCustomLabel(v string) *PivotTableFieldOption {
	s.CustomLabel = &v
	return s
}

// SetFieldId sets the FieldId field's value.
func (s *PivotTableFieldOption) SetFieldId(v string) *PivotTableFieldOption {
	s.FieldId = &v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *PivotTableFieldOption) SetVisibility(v string) *PivotTableFieldOption {
	s.Visibility = &v
	return s
}

// The field options for a pivot table visual.
type PivotTableFieldOptions struct {
	_ struct{} `type:"structure"`

	// The collapse state options for the pivot table field options.
	CollapseStateOptions []*PivotTableFieldCollapseStateOption `type:"list"`

	// The data path options for the pivot table field options.
	DataPathOptions []*PivotTableDataPathOption `type:"list"`

	// The selected field options for the pivot table field options.
	SelectedFieldOptions []*PivotTableFieldOption `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 PivotTableFieldOptions) 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 PivotTableFieldOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableFieldOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableFieldOptions"}
	if s.CollapseStateOptions != nil {
		for i, v := range s.CollapseStateOptions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CollapseStateOptions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.DataPathOptions != nil {
		for i, v := range s.DataPathOptions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DataPathOptions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.SelectedFieldOptions != nil {
		for i, v := range s.SelectedFieldOptions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SelectedFieldOptions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCollapseStateOptions sets the CollapseStateOptions field's value.
func (s *PivotTableFieldOptions) SetCollapseStateOptions(v []*PivotTableFieldCollapseStateOption) *PivotTableFieldOptions {
	s.CollapseStateOptions = v
	return s
}

// SetDataPathOptions sets the DataPathOptions field's value.
func (s *PivotTableFieldOptions) SetDataPathOptions(v []*PivotTableDataPathOption) *PivotTableFieldOptions {
	s.DataPathOptions = v
	return s
}

// SetSelectedFieldOptions sets the SelectedFieldOptions field's value.
func (s *PivotTableFieldOptions) SetSelectedFieldOptions(v []*PivotTableFieldOption) *PivotTableFieldOptions {
	s.SelectedFieldOptions = v
	return s
}

// The optional configuration of subtotals cells.
type PivotTableFieldSubtotalOptions struct {
	_ struct{} `type:"structure"`

	// The field ID of the subtotal options.
	FieldId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PivotTableFieldSubtotalOptions) 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 PivotTableFieldSubtotalOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableFieldSubtotalOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableFieldSubtotalOptions"}
	if s.FieldId != nil && len(*s.FieldId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FieldId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldId sets the FieldId field's value.
func (s *PivotTableFieldSubtotalOptions) SetFieldId(v string) *PivotTableFieldSubtotalOptions {
	s.FieldId = &v
	return s
}

// The field wells for a pivot table visual.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type PivotTableFieldWells struct {
	_ struct{} `type:"structure"`

	// The aggregated field well for the pivot table.
	PivotTableAggregatedFieldWells *PivotTableAggregatedFieldWells `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 PivotTableFieldWells) 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 PivotTableFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableFieldWells"}
	if s.PivotTableAggregatedFieldWells != nil {
		if err := s.PivotTableAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("PivotTableAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPivotTableAggregatedFieldWells sets the PivotTableAggregatedFieldWells field's value.
func (s *PivotTableFieldWells) SetPivotTableAggregatedFieldWells(v *PivotTableAggregatedFieldWells) *PivotTableFieldWells {
	s.PivotTableAggregatedFieldWells = v
	return s
}

// The table options for a pivot table visual.
type PivotTableOptions struct {
	_ struct{} `type:"structure"`

	// The table cell style of cells.
	CellStyle *TableCellStyle `type:"structure"`

	// The visibility setting of a pivot table's collapsed row dimension fields.
	// If the value of this structure is HIDDEN, all collapsed columns in a pivot
	// table are automatically hidden. The default value is VISIBLE.
	CollapsedRowDimensionsVisibility *string `type:"string" enum:"Visibility"`

	// The table cell style of the column header.
	ColumnHeaderStyle *TableCellStyle `type:"structure"`

	// The visibility of the column names.
	ColumnNamesVisibility *string `type:"string" enum:"Visibility"`

	// The default cell width of the pivot table.
	DefaultCellWidth *string `type:"string"`

	// The metric placement (row, column) options.
	MetricPlacement *string `type:"string" enum:"PivotTableMetricPlacement"`

	// The row alternate color options (widget status, row alternate colors).
	RowAlternateColorOptions *RowAlternateColorOptions `type:"structure"`

	// The table cell style of row field names.
	RowFieldNamesStyle *TableCellStyle `type:"structure"`

	// The table cell style of the row headers.
	RowHeaderStyle *TableCellStyle `type:"structure"`

	// The options for the label that is located above the row headers. This option
	// is only applicable when RowsLayout is set to HIERARCHY.
	RowsLabelOptions *PivotTableRowsLabelOptions `type:"structure"`

	// The layout for the row dimension headers of a pivot table. Choose one of
	// the following options.
	//
	//    * TABULAR: (Default) Each row field is displayed in a separate column.
	//
	//    * HIERARCHY: All row fields are displayed in a single column. Indentation
	//    is used to differentiate row headers of different fields.
	RowsLayout *string `type:"string" enum:"PivotTableRowsLayout"`

	// The visibility of the single metric options.
	SingleMetricVisibility *string `type:"string" enum:"Visibility"`

	// Determines the visibility of the pivot table.
	ToggleButtonsVisibility *string `type:"string" enum:"Visibility"`
}

// 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 PivotTableOptions) 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 PivotTableOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableOptions"}
	if s.CellStyle != nil {
		if err := s.CellStyle.Validate(); err != nil {
			invalidParams.AddNested("CellStyle", err.(request.ErrInvalidParams))
		}
	}
	if s.ColumnHeaderStyle != nil {
		if err := s.ColumnHeaderStyle.Validate(); err != nil {
			invalidParams.AddNested("ColumnHeaderStyle", err.(request.ErrInvalidParams))
		}
	}
	if s.RowFieldNamesStyle != nil {
		if err := s.RowFieldNamesStyle.Validate(); err != nil {
			invalidParams.AddNested("RowFieldNamesStyle", err.(request.ErrInvalidParams))
		}
	}
	if s.RowHeaderStyle != nil {
		if err := s.RowHeaderStyle.Validate(); err != nil {
			invalidParams.AddNested("RowHeaderStyle", err.(request.ErrInvalidParams))
		}
	}
	if s.RowsLabelOptions != nil {
		if err := s.RowsLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("RowsLabelOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCellStyle sets the CellStyle field's value.
func (s *PivotTableOptions) SetCellStyle(v *TableCellStyle) *PivotTableOptions {
	s.CellStyle = v
	return s
}

// SetCollapsedRowDimensionsVisibility sets the CollapsedRowDimensionsVisibility field's value.
func (s *PivotTableOptions) SetCollapsedRowDimensionsVisibility(v string) *PivotTableOptions {
	s.CollapsedRowDimensionsVisibility = &v
	return s
}

// SetColumnHeaderStyle sets the ColumnHeaderStyle field's value.
func (s *PivotTableOptions) SetColumnHeaderStyle(v *TableCellStyle) *PivotTableOptions {
	s.ColumnHeaderStyle = v
	return s
}

// SetColumnNamesVisibility sets the ColumnNamesVisibility field's value.
func (s *PivotTableOptions) SetColumnNamesVisibility(v string) *PivotTableOptions {
	s.ColumnNamesVisibility = &v
	return s
}

// SetDefaultCellWidth sets the DefaultCellWidth field's value.
func (s *PivotTableOptions) SetDefaultCellWidth(v string) *PivotTableOptions {
	s.DefaultCellWidth = &v
	return s
}

// SetMetricPlacement sets the MetricPlacement field's value.
func (s *PivotTableOptions) SetMetricPlacement(v string) *PivotTableOptions {
	s.MetricPlacement = &v
	return s
}

// SetRowAlternateColorOptions sets the RowAlternateColorOptions field's value.
func (s *PivotTableOptions) SetRowAlternateColorOptions(v *RowAlternateColorOptions) *PivotTableOptions {
	s.RowAlternateColorOptions = v
	return s
}

// SetRowFieldNamesStyle sets the RowFieldNamesStyle field's value.
func (s *PivotTableOptions) SetRowFieldNamesStyle(v *TableCellStyle) *PivotTableOptions {
	s.RowFieldNamesStyle = v
	return s
}

// SetRowHeaderStyle sets the RowHeaderStyle field's value.
func (s *PivotTableOptions) SetRowHeaderStyle(v *TableCellStyle) *PivotTableOptions {
	s.RowHeaderStyle = v
	return s
}

// SetRowsLabelOptions sets the RowsLabelOptions field's value.
func (s *PivotTableOptions) SetRowsLabelOptions(v *PivotTableRowsLabelOptions) *PivotTableOptions {
	s.RowsLabelOptions = v
	return s
}

// SetRowsLayout sets the RowsLayout field's value.
func (s *PivotTableOptions) SetRowsLayout(v string) *PivotTableOptions {
	s.RowsLayout = &v
	return s
}

// SetSingleMetricVisibility sets the SingleMetricVisibility field's value.
func (s *PivotTableOptions) SetSingleMetricVisibility(v string) *PivotTableOptions {
	s.SingleMetricVisibility = &v
	return s
}

// SetToggleButtonsVisibility sets the ToggleButtonsVisibility field's value.
func (s *PivotTableOptions) SetToggleButtonsVisibility(v string) *PivotTableOptions {
	s.ToggleButtonsVisibility = &v
	return s
}

// The paginated report options for a pivot table visual.
type PivotTablePaginatedReportOptions struct {
	_ struct{} `type:"structure"`

	// The visibility of the repeating header rows on each page.
	OverflowColumnHeaderVisibility *string `type:"string" enum:"Visibility"`

	// The visibility of the printing table overflow across pages.
	VerticalOverflowVisibility *string `type:"string" enum:"Visibility"`
}

// 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 PivotTablePaginatedReportOptions) 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 PivotTablePaginatedReportOptions) GoString() string {
	return s.String()
}

// SetOverflowColumnHeaderVisibility sets the OverflowColumnHeaderVisibility field's value.
func (s *PivotTablePaginatedReportOptions) SetOverflowColumnHeaderVisibility(v string) *PivotTablePaginatedReportOptions {
	s.OverflowColumnHeaderVisibility = &v
	return s
}

// SetVerticalOverflowVisibility sets the VerticalOverflowVisibility field's value.
func (s *PivotTablePaginatedReportOptions) SetVerticalOverflowVisibility(v string) *PivotTablePaginatedReportOptions {
	s.VerticalOverflowVisibility = &v
	return s
}

// The options for the label thta is located above the row headers. This option
// is only applicable when RowsLayout is set to HIERARCHY.
type PivotTableRowsLabelOptions struct {
	_ struct{} `type:"structure"`

	// The custom label string for the rows label.
	CustomLabel *string `min:"1" type:"string"`

	// The visibility of the rows label.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 PivotTableRowsLabelOptions) 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 PivotTableRowsLabelOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableRowsLabelOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableRowsLabelOptions"}
	if s.CustomLabel != nil && len(*s.CustomLabel) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CustomLabel", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCustomLabel sets the CustomLabel field's value.
func (s *PivotTableRowsLabelOptions) SetCustomLabel(v string) *PivotTableRowsLabelOptions {
	s.CustomLabel = &v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *PivotTableRowsLabelOptions) SetVisibility(v string) *PivotTableRowsLabelOptions {
	s.Visibility = &v
	return s
}

// The sort by field for the field sort options.
type PivotTableSortBy struct {
	_ struct{} `type:"structure"`

	// The column sort (field id, direction) for the pivot table sort by options.
	Column *ColumnSort `type:"structure"`

	// The data path sort (data path value, direction) for the pivot table sort
	// by options.
	DataPath *DataPathSort `type:"structure"`

	// The field sort (field id, direction) for the pivot table sort by options.
	Field *FieldSort `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 PivotTableSortBy) 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 PivotTableSortBy) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableSortBy) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableSortBy"}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}
	if s.DataPath != nil {
		if err := s.DataPath.Validate(); err != nil {
			invalidParams.AddNested("DataPath", err.(request.ErrInvalidParams))
		}
	}
	if s.Field != nil {
		if err := s.Field.Validate(); err != nil {
			invalidParams.AddNested("Field", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumn sets the Column field's value.
func (s *PivotTableSortBy) SetColumn(v *ColumnSort) *PivotTableSortBy {
	s.Column = v
	return s
}

// SetDataPath sets the DataPath field's value.
func (s *PivotTableSortBy) SetDataPath(v *DataPathSort) *PivotTableSortBy {
	s.DataPath = v
	return s
}

// SetField sets the Field field's value.
func (s *PivotTableSortBy) SetField(v *FieldSort) *PivotTableSortBy {
	s.Field = v
	return s
}

// The sort configuration for a PivotTableVisual.
type PivotTableSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The field sort options for a pivot table sort configuration.
	FieldSortOptions []*PivotFieldSortOptions `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 PivotTableSortConfiguration) 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 PivotTableSortConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableSortConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableSortConfiguration"}
	if s.FieldSortOptions != nil {
		for i, v := range s.FieldSortOptions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "FieldSortOptions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldSortOptions sets the FieldSortOptions field's value.
func (s *PivotTableSortConfiguration) SetFieldSortOptions(v []*PivotFieldSortOptions) *PivotTableSortConfiguration {
	s.FieldSortOptions = v
	return s
}

// The total options for a pivot table visual.
type PivotTableTotalOptions struct {
	_ struct{} `type:"structure"`

	// The column subtotal options.
	ColumnSubtotalOptions *SubtotalOptions `type:"structure"`

	// The column total options.
	ColumnTotalOptions *PivotTotalOptions `type:"structure"`

	// The row subtotal options.
	RowSubtotalOptions *SubtotalOptions `type:"structure"`

	// The row total options.
	RowTotalOptions *PivotTotalOptions `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 PivotTableTotalOptions) 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 PivotTableTotalOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableTotalOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableTotalOptions"}
	if s.ColumnSubtotalOptions != nil {
		if err := s.ColumnSubtotalOptions.Validate(); err != nil {
			invalidParams.AddNested("ColumnSubtotalOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.ColumnTotalOptions != nil {
		if err := s.ColumnTotalOptions.Validate(); err != nil {
			invalidParams.AddNested("ColumnTotalOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.RowSubtotalOptions != nil {
		if err := s.RowSubtotalOptions.Validate(); err != nil {
			invalidParams.AddNested("RowSubtotalOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.RowTotalOptions != nil {
		if err := s.RowTotalOptions.Validate(); err != nil {
			invalidParams.AddNested("RowTotalOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumnSubtotalOptions sets the ColumnSubtotalOptions field's value.
func (s *PivotTableTotalOptions) SetColumnSubtotalOptions(v *SubtotalOptions) *PivotTableTotalOptions {
	s.ColumnSubtotalOptions = v
	return s
}

// SetColumnTotalOptions sets the ColumnTotalOptions field's value.
func (s *PivotTableTotalOptions) SetColumnTotalOptions(v *PivotTotalOptions) *PivotTableTotalOptions {
	s.ColumnTotalOptions = v
	return s
}

// SetRowSubtotalOptions sets the RowSubtotalOptions field's value.
func (s *PivotTableTotalOptions) SetRowSubtotalOptions(v *SubtotalOptions) *PivotTableTotalOptions {
	s.RowSubtotalOptions = v
	return s
}

// SetRowTotalOptions sets the RowTotalOptions field's value.
func (s *PivotTableTotalOptions) SetRowTotalOptions(v *PivotTotalOptions) *PivotTableTotalOptions {
	s.RowTotalOptions = v
	return s
}

// A pivot table.
//
// For more information, see Using pivot tables (https://docs.aws.amazon.com/quicksight/latest/user/pivot-table.html)
// in the Amazon QuickSight User Guide.
type PivotTableVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration settings of the visual.
	ChartConfiguration *PivotTableConfiguration `type:"structure"`

	// The conditional formatting for a PivotTableVisual.
	ConditionalFormatting *PivotTableConditionalFormatting `type:"structure"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers..
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PivotTableVisual) 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 PivotTableVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTableVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTableVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ConditionalFormatting != nil {
		if err := s.ConditionalFormatting.Validate(); err != nil {
			invalidParams.AddNested("ConditionalFormatting", err.(request.ErrInvalidParams))
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *PivotTableVisual) SetActions(v []*VisualCustomAction) *PivotTableVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *PivotTableVisual) SetChartConfiguration(v *PivotTableConfiguration) *PivotTableVisual {
	s.ChartConfiguration = v
	return s
}

// SetConditionalFormatting sets the ConditionalFormatting field's value.
func (s *PivotTableVisual) SetConditionalFormatting(v *PivotTableConditionalFormatting) *PivotTableVisual {
	s.ConditionalFormatting = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *PivotTableVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *PivotTableVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *PivotTableVisual) SetTitle(v *VisualTitleLabelOptions) *PivotTableVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *PivotTableVisual) SetVisualId(v string) *PivotTableVisual {
	s.VisualId = &v
	return s
}

// The optional configuration of totals cells in a PivotTableVisual.
type PivotTotalOptions struct {
	_ struct{} `type:"structure"`

	// The custom label string for the total cells.
	CustomLabel *string `type:"string"`

	// The cell styling options for the total of header cells.
	MetricHeaderCellStyle *TableCellStyle `type:"structure"`

	// The placement (start, end) for the total cells.
	Placement *string `type:"string" enum:"TableTotalsPlacement"`

	// The scroll status (pinned, scrolled) for the total cells.
	ScrollStatus *string `type:"string" enum:"TableTotalsScrollStatus"`

	// The total aggregation options for each value field.
	TotalAggregationOptions []*TotalAggregationOption `type:"list"`

	// The cell styling options for the total cells.
	TotalCellStyle *TableCellStyle `type:"structure"`

	// The visibility configuration for the total cells.
	TotalsVisibility *string `type:"string" enum:"Visibility"`

	// The cell styling options for the totals of value cells.
	ValueCellStyle *TableCellStyle `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 PivotTotalOptions) 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 PivotTotalOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PivotTotalOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PivotTotalOptions"}
	if s.MetricHeaderCellStyle != nil {
		if err := s.MetricHeaderCellStyle.Validate(); err != nil {
			invalidParams.AddNested("MetricHeaderCellStyle", err.(request.ErrInvalidParams))
		}
	}
	if s.TotalAggregationOptions != nil {
		for i, v := range s.TotalAggregationOptions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TotalAggregationOptions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.TotalCellStyle != nil {
		if err := s.TotalCellStyle.Validate(); err != nil {
			invalidParams.AddNested("TotalCellStyle", err.(request.ErrInvalidParams))
		}
	}
	if s.ValueCellStyle != nil {
		if err := s.ValueCellStyle.Validate(); err != nil {
			invalidParams.AddNested("ValueCellStyle", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCustomLabel sets the CustomLabel field's value.
func (s *PivotTotalOptions) SetCustomLabel(v string) *PivotTotalOptions {
	s.CustomLabel = &v
	return s
}

// SetMetricHeaderCellStyle sets the MetricHeaderCellStyle field's value.
func (s *PivotTotalOptions) SetMetricHeaderCellStyle(v *TableCellStyle) *PivotTotalOptions {
	s.MetricHeaderCellStyle = v
	return s
}

// SetPlacement sets the Placement field's value.
func (s *PivotTotalOptions) SetPlacement(v string) *PivotTotalOptions {
	s.Placement = &v
	return s
}

// SetScrollStatus sets the ScrollStatus field's value.
func (s *PivotTotalOptions) SetScrollStatus(v string) *PivotTotalOptions {
	s.ScrollStatus = &v
	return s
}

// SetTotalAggregationOptions sets the TotalAggregationOptions field's value.
func (s *PivotTotalOptions) SetTotalAggregationOptions(v []*TotalAggregationOption) *PivotTotalOptions {
	s.TotalAggregationOptions = v
	return s
}

// SetTotalCellStyle sets the TotalCellStyle field's value.
func (s *PivotTotalOptions) SetTotalCellStyle(v *TableCellStyle) *PivotTotalOptions {
	s.TotalCellStyle = v
	return s
}

// SetTotalsVisibility sets the TotalsVisibility field's value.
func (s *PivotTotalOptions) SetTotalsVisibility(v string) *PivotTotalOptions {
	s.TotalsVisibility = &v
	return s
}

// SetValueCellStyle sets the ValueCellStyle field's value.
func (s *PivotTotalOptions) SetValueCellStyle(v *TableCellStyle) *PivotTotalOptions {
	s.ValueCellStyle = v
	return s
}

// The parameters for PostgreSQL.
type PostgreSqlParameters struct {
	_ struct{} `type:"structure"`

	// Database.
	//
	// Database is a required field
	Database *string `min:"1" type:"string" required:"true"`

	// Host.
	//
	// Host is a required field
	Host *string `min:"1" type:"string" required:"true"`

	// Port.
	//
	// Port is a required field
	Port *int64 `min:"1" type:"integer" 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 PostgreSqlParameters) 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 PostgreSqlParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PostgreSqlParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PostgreSqlParameters"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Database != nil && len(*s.Database) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Database", 1))
	}
	if s.Host == nil {
		invalidParams.Add(request.NewErrParamRequired("Host"))
	}
	if s.Host != nil && len(*s.Host) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Host", 1))
	}
	if s.Port == nil {
		invalidParams.Add(request.NewErrParamRequired("Port"))
	}
	if s.Port != nil && *s.Port < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *PostgreSqlParameters) SetDatabase(v string) *PostgreSqlParameters {
	s.Database = &v
	return s
}

// SetHost sets the Host field's value.
func (s *PostgreSqlParameters) SetHost(v string) *PostgreSqlParameters {
	s.Host = &v
	return s
}

// SetPort sets the Port field's value.
func (s *PostgreSqlParameters) SetPort(v int64) *PostgreSqlParameters {
	s.Port = &v
	return s
}

// One or more preconditions aren't met.
type PreconditionNotMetException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PreconditionNotMetException) 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 PreconditionNotMetException) GoString() string {
	return s.String()
}

func newErrorPreconditionNotMetException(v protocol.ResponseMetadata) error {
	return &PreconditionNotMetException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *PreconditionNotMetException) Code() string {
	return "PreconditionNotMetException"
}

// Message returns the exception's message.
func (s *PreconditionNotMetException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *PreconditionNotMetException) OrigErr() error {
	return nil
}

func (s *PreconditionNotMetException) 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 *PreconditionNotMetException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *PreconditionNotMetException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The option that determines the hierarchy of the fields that are defined during
// data preparation. These fields are available to use in any analysis that
// uses the data source.
type PredefinedHierarchy struct {
	_ struct{} `type:"structure"`

	// The list of columns that define the predefined hierarchy.
	//
	// Columns is a required field
	Columns []*ColumnIdentifier `min:"1" type:"list" required:"true"`

	// The option that determines the drill down filters for the predefined hierarchy.
	DrillDownFilters []*DrillDownFilter `type:"list"`

	// The hierarchy ID of the predefined hierarchy.
	//
	// HierarchyId is a required field
	HierarchyId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PredefinedHierarchy) 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 PredefinedHierarchy) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PredefinedHierarchy) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PredefinedHierarchy"}
	if s.Columns == nil {
		invalidParams.Add(request.NewErrParamRequired("Columns"))
	}
	if s.Columns != nil && len(s.Columns) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Columns", 1))
	}
	if s.HierarchyId == nil {
		invalidParams.Add(request.NewErrParamRequired("HierarchyId"))
	}
	if s.HierarchyId != nil && len(*s.HierarchyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("HierarchyId", 1))
	}
	if s.Columns != nil {
		for i, v := range s.Columns {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Columns", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.DrillDownFilters != nil {
		for i, v := range s.DrillDownFilters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DrillDownFilters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumns sets the Columns field's value.
func (s *PredefinedHierarchy) SetColumns(v []*ColumnIdentifier) *PredefinedHierarchy {
	s.Columns = v
	return s
}

// SetDrillDownFilters sets the DrillDownFilters field's value.
func (s *PredefinedHierarchy) SetDrillDownFilters(v []*DrillDownFilter) *PredefinedHierarchy {
	s.DrillDownFilters = v
	return s
}

// SetHierarchyId sets the HierarchyId field's value.
func (s *PredefinedHierarchy) SetHierarchyId(v string) *PredefinedHierarchy {
	s.HierarchyId = &v
	return s
}

// The parameters for Presto.
type PrestoParameters struct {
	_ struct{} `type:"structure"`

	// Catalog.
	//
	// Catalog is a required field
	Catalog *string `type:"string" required:"true"`

	// Host.
	//
	// Host is a required field
	Host *string `min:"1" type:"string" required:"true"`

	// Port.
	//
	// Port is a required field
	Port *int64 `min:"1" type:"integer" 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 PrestoParameters) 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 PrestoParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PrestoParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PrestoParameters"}
	if s.Catalog == nil {
		invalidParams.Add(request.NewErrParamRequired("Catalog"))
	}
	if s.Host == nil {
		invalidParams.Add(request.NewErrParamRequired("Host"))
	}
	if s.Host != nil && len(*s.Host) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Host", 1))
	}
	if s.Port == nil {
		invalidParams.Add(request.NewErrParamRequired("Port"))
	}
	if s.Port != nil && *s.Port < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalog sets the Catalog field's value.
func (s *PrestoParameters) SetCatalog(v string) *PrestoParameters {
	s.Catalog = &v
	return s
}

// SetHost sets the Host field's value.
func (s *PrestoParameters) SetHost(v string) *PrestoParameters {
	s.Host = &v
	return s
}

// SetPort sets the Port field's value.
func (s *PrestoParameters) SetPort(v int64) *PrestoParameters {
	s.Port = &v
	return s
}

// The options that determine the presentation of the progress bar of a KPI
// visual.
type ProgressBarOptions struct {
	_ struct{} `type:"structure"`

	// The visibility of the progress bar.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 ProgressBarOptions) 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 ProgressBarOptions) GoString() string {
	return s.String()
}

// SetVisibility sets the Visibility field's value.
func (s *ProgressBarOptions) SetVisibility(v string) *ProgressBarOptions {
	s.Visibility = &v
	return s
}

// A transform operation that projects columns. Operations that come after a
// projection can only refer to projected columns.
type ProjectOperation struct {
	_ struct{} `type:"structure"`

	// Projected columns.
	//
	// ProjectedColumns is a required field
	ProjectedColumns []*string `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProjectOperation) 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 ProjectOperation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ProjectOperation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ProjectOperation"}
	if s.ProjectedColumns == nil {
		invalidParams.Add(request.NewErrParamRequired("ProjectedColumns"))
	}
	if s.ProjectedColumns != nil && len(s.ProjectedColumns) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ProjectedColumns", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetProjectedColumns sets the ProjectedColumns field's value.
func (s *ProjectOperation) SetProjectedColumns(v []*string) *ProjectOperation {
	s.ProjectedColumns = v
	return s
}

type PutDataSetRefreshPropertiesInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dataset.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" type:"string" required:"true"`

	// The dataset refresh properties.
	//
	// DataSetRefreshProperties is a required field
	DataSetRefreshProperties *DataSetRefreshProperties `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 PutDataSetRefreshPropertiesInput) 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 PutDataSetRefreshPropertiesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutDataSetRefreshPropertiesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutDataSetRefreshPropertiesInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}
	if s.DataSetRefreshProperties == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetRefreshProperties"))
	}
	if s.DataSetRefreshProperties != nil {
		if err := s.DataSetRefreshProperties.Validate(); err != nil {
			invalidParams.AddNested("DataSetRefreshProperties", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *PutDataSetRefreshPropertiesInput) SetAwsAccountId(v string) *PutDataSetRefreshPropertiesInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *PutDataSetRefreshPropertiesInput) SetDataSetId(v string) *PutDataSetRefreshPropertiesInput {
	s.DataSetId = &v
	return s
}

// SetDataSetRefreshProperties sets the DataSetRefreshProperties field's value.
func (s *PutDataSetRefreshPropertiesInput) SetDataSetRefreshProperties(v *DataSetRefreshProperties) *PutDataSetRefreshPropertiesInput {
	s.DataSetRefreshProperties = v
	return s
}

type PutDataSetRefreshPropertiesOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 PutDataSetRefreshPropertiesOutput) 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 PutDataSetRefreshPropertiesOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *PutDataSetRefreshPropertiesOutput) SetRequestId(v string) *PutDataSetRefreshPropertiesOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *PutDataSetRefreshPropertiesOutput) SetStatus(v int64) *PutDataSetRefreshPropertiesOutput {
	s.Status = &v
	return s
}

// Information about a queued dataset SPICE ingestion.
type QueueInfo struct {
	_ struct{} `type:"structure"`

	// The ID of the ongoing ingestion. The queued ingestion is waiting for the
	// ongoing ingestion to complete.
	//
	// QueuedIngestion is a required field
	QueuedIngestion *string `type:"string" required:"true"`

	// The ID of the queued ingestion.
	//
	// WaitingOnIngestion is a required field
	WaitingOnIngestion *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QueueInfo) 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 QueueInfo) GoString() string {
	return s.String()
}

// SetQueuedIngestion sets the QueuedIngestion field's value.
func (s *QueueInfo) SetQueuedIngestion(v string) *QueueInfo {
	s.QueuedIngestion = &v
	return s
}

// SetWaitingOnIngestion sets the WaitingOnIngestion field's value.
func (s *QueueInfo) SetWaitingOnIngestion(v string) *QueueInfo {
	s.WaitingOnIngestion = &v
	return s
}

// The aggregated field well configuration of a RadarChartVisual.
type RadarChartAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The aggregated field well categories of a radar chart.
	Category []*DimensionField `type:"list"`

	// The color that are assigned to the aggregated field wells of a radar chart.
	Color []*DimensionField `type:"list"`

	// The values that are assigned to the aggregated field wells of a radar chart.
	Values []*MeasureField `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 RadarChartAggregatedFieldWells) 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 RadarChartAggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RadarChartAggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RadarChartAggregatedFieldWells"}
	if s.Category != nil {
		for i, v := range s.Category {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Category", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Color != nil {
		for i, v := range s.Color {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Color", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Values != nil {
		for i, v := range s.Values {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Values", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategory sets the Category field's value.
func (s *RadarChartAggregatedFieldWells) SetCategory(v []*DimensionField) *RadarChartAggregatedFieldWells {
	s.Category = v
	return s
}

// SetColor sets the Color field's value.
func (s *RadarChartAggregatedFieldWells) SetColor(v []*DimensionField) *RadarChartAggregatedFieldWells {
	s.Color = v
	return s
}

// SetValues sets the Values field's value.
func (s *RadarChartAggregatedFieldWells) SetValues(v []*MeasureField) *RadarChartAggregatedFieldWells {
	s.Values = v
	return s
}

// The configured style settings of a radar chart.
type RadarChartAreaStyleSettings struct {
	_ struct{} `type:"structure"`

	// The visibility settings of a radar chart.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 RadarChartAreaStyleSettings) 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 RadarChartAreaStyleSettings) GoString() string {
	return s.String()
}

// SetVisibility sets the Visibility field's value.
func (s *RadarChartAreaStyleSettings) SetVisibility(v string) *RadarChartAreaStyleSettings {
	s.Visibility = &v
	return s
}

// The configuration of a RadarChartVisual.
type RadarChartConfiguration struct {
	_ struct{} `type:"structure"`

	// Determines the visibility of the colors of alternatign bands in a radar chart.
	AlternateBandColorsVisibility *string `type:"string" enum:"Visibility"`

	// The color of the even-numbered alternate bands of a radar chart.
	AlternateBandEvenColor *string `type:"string"`

	// The color of the odd-numbered alternate bands of a radar chart.
	AlternateBandOddColor *string `type:"string"`

	// The axis behavior options of a radar chart.
	AxesRangeScale *string `type:"string" enum:"RadarChartAxesRangeScale"`

	// The base sreies settings of a radar chart.
	BaseSeriesSettings *RadarChartSeriesSettings `type:"structure"`

	// The category axis of a radar chart.
	CategoryAxis *AxisDisplayOptions `type:"structure"`

	// The category label options of a radar chart.
	CategoryLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The color axis of a radar chart.
	ColorAxis *AxisDisplayOptions `type:"structure"`

	// The color label options of a radar chart.
	ColorLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The field well configuration of a RadarChartVisual.
	FieldWells *RadarChartFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The legend display setup of the visual.
	Legend *LegendOptions `type:"structure"`

	// The shape of the radar chart.
	Shape *string `type:"string" enum:"RadarChartShape"`

	// The sort configuration of a RadarChartVisual.
	SortConfiguration *RadarChartSortConfiguration `type:"structure"`

	// The start angle of a radar chart's axis.
	StartAngle *float64 `type:"double"`

	// The palette (chart color) display setup of the visual.
	VisualPalette *VisualPalette `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 RadarChartConfiguration) 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 RadarChartConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RadarChartConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RadarChartConfiguration"}
	if s.StartAngle != nil && *s.StartAngle < -360 {
		invalidParams.Add(request.NewErrParamMinValue("StartAngle", -360))
	}
	if s.CategoryLabelOptions != nil {
		if err := s.CategoryLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("CategoryLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.ColorLabelOptions != nil {
		if err := s.ColorLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("ColorLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.SortConfiguration != nil {
		if err := s.SortConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SortConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.VisualPalette != nil {
		if err := s.VisualPalette.Validate(); err != nil {
			invalidParams.AddNested("VisualPalette", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAlternateBandColorsVisibility sets the AlternateBandColorsVisibility field's value.
func (s *RadarChartConfiguration) SetAlternateBandColorsVisibility(v string) *RadarChartConfiguration {
	s.AlternateBandColorsVisibility = &v
	return s
}

// SetAlternateBandEvenColor sets the AlternateBandEvenColor field's value.
func (s *RadarChartConfiguration) SetAlternateBandEvenColor(v string) *RadarChartConfiguration {
	s.AlternateBandEvenColor = &v
	return s
}

// SetAlternateBandOddColor sets the AlternateBandOddColor field's value.
func (s *RadarChartConfiguration) SetAlternateBandOddColor(v string) *RadarChartConfiguration {
	s.AlternateBandOddColor = &v
	return s
}

// SetAxesRangeScale sets the AxesRangeScale field's value.
func (s *RadarChartConfiguration) SetAxesRangeScale(v string) *RadarChartConfiguration {
	s.AxesRangeScale = &v
	return s
}

// SetBaseSeriesSettings sets the BaseSeriesSettings field's value.
func (s *RadarChartConfiguration) SetBaseSeriesSettings(v *RadarChartSeriesSettings) *RadarChartConfiguration {
	s.BaseSeriesSettings = v
	return s
}

// SetCategoryAxis sets the CategoryAxis field's value.
func (s *RadarChartConfiguration) SetCategoryAxis(v *AxisDisplayOptions) *RadarChartConfiguration {
	s.CategoryAxis = v
	return s
}

// SetCategoryLabelOptions sets the CategoryLabelOptions field's value.
func (s *RadarChartConfiguration) SetCategoryLabelOptions(v *ChartAxisLabelOptions) *RadarChartConfiguration {
	s.CategoryLabelOptions = v
	return s
}

// SetColorAxis sets the ColorAxis field's value.
func (s *RadarChartConfiguration) SetColorAxis(v *AxisDisplayOptions) *RadarChartConfiguration {
	s.ColorAxis = v
	return s
}

// SetColorLabelOptions sets the ColorLabelOptions field's value.
func (s *RadarChartConfiguration) SetColorLabelOptions(v *ChartAxisLabelOptions) *RadarChartConfiguration {
	s.ColorLabelOptions = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *RadarChartConfiguration) SetFieldWells(v *RadarChartFieldWells) *RadarChartConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *RadarChartConfiguration) SetInteractions(v *VisualInteractionOptions) *RadarChartConfiguration {
	s.Interactions = v
	return s
}

// SetLegend sets the Legend field's value.
func (s *RadarChartConfiguration) SetLegend(v *LegendOptions) *RadarChartConfiguration {
	s.Legend = v
	return s
}

// SetShape sets the Shape field's value.
func (s *RadarChartConfiguration) SetShape(v string) *RadarChartConfiguration {
	s.Shape = &v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *RadarChartConfiguration) SetSortConfiguration(v *RadarChartSortConfiguration) *RadarChartConfiguration {
	s.SortConfiguration = v
	return s
}

// SetStartAngle sets the StartAngle field's value.
func (s *RadarChartConfiguration) SetStartAngle(v float64) *RadarChartConfiguration {
	s.StartAngle = &v
	return s
}

// SetVisualPalette sets the VisualPalette field's value.
func (s *RadarChartConfiguration) SetVisualPalette(v *VisualPalette) *RadarChartConfiguration {
	s.VisualPalette = v
	return s
}

// The field wells of a radar chart visual.
type RadarChartFieldWells struct {
	_ struct{} `type:"structure"`

	// The aggregated field wells of a radar chart visual.
	RadarChartAggregatedFieldWells *RadarChartAggregatedFieldWells `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 RadarChartFieldWells) 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 RadarChartFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RadarChartFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RadarChartFieldWells"}
	if s.RadarChartAggregatedFieldWells != nil {
		if err := s.RadarChartAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("RadarChartAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRadarChartAggregatedFieldWells sets the RadarChartAggregatedFieldWells field's value.
func (s *RadarChartFieldWells) SetRadarChartAggregatedFieldWells(v *RadarChartAggregatedFieldWells) *RadarChartFieldWells {
	s.RadarChartAggregatedFieldWells = v
	return s
}

// The series settings of a radar chart.
type RadarChartSeriesSettings struct {
	_ struct{} `type:"structure"`

	// The area style settings of a radar chart.
	AreaStyleSettings *RadarChartAreaStyleSettings `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 RadarChartSeriesSettings) 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 RadarChartSeriesSettings) GoString() string {
	return s.String()
}

// SetAreaStyleSettings sets the AreaStyleSettings field's value.
func (s *RadarChartSeriesSettings) SetAreaStyleSettings(v *RadarChartAreaStyleSettings) *RadarChartSeriesSettings {
	s.AreaStyleSettings = v
	return s
}

// The sort configuration of a RadarChartVisual.
type RadarChartSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The category items limit for a radar chart.
	CategoryItemsLimit *ItemsLimitConfiguration `type:"structure"`

	// The category sort options of a radar chart.
	CategorySort []*FieldSortOptions `type:"list"`

	// The color items limit of a radar chart.
	ColorItemsLimit *ItemsLimitConfiguration `type:"structure"`

	// The color sort configuration of a radar chart.
	ColorSort []*FieldSortOptions `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 RadarChartSortConfiguration) 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 RadarChartSortConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RadarChartSortConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RadarChartSortConfiguration"}
	if s.CategorySort != nil {
		for i, v := range s.CategorySort {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CategorySort", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ColorSort != nil {
		for i, v := range s.ColorSort {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColorSort", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategoryItemsLimit sets the CategoryItemsLimit field's value.
func (s *RadarChartSortConfiguration) SetCategoryItemsLimit(v *ItemsLimitConfiguration) *RadarChartSortConfiguration {
	s.CategoryItemsLimit = v
	return s
}

// SetCategorySort sets the CategorySort field's value.
func (s *RadarChartSortConfiguration) SetCategorySort(v []*FieldSortOptions) *RadarChartSortConfiguration {
	s.CategorySort = v
	return s
}

// SetColorItemsLimit sets the ColorItemsLimit field's value.
func (s *RadarChartSortConfiguration) SetColorItemsLimit(v *ItemsLimitConfiguration) *RadarChartSortConfiguration {
	s.ColorItemsLimit = v
	return s
}

// SetColorSort sets the ColorSort field's value.
func (s *RadarChartSortConfiguration) SetColorSort(v []*FieldSortOptions) *RadarChartSortConfiguration {
	s.ColorSort = v
	return s
}

// A radar chart visual.
type RadarChartVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration settings of the visual.
	ChartConfiguration *RadarChartConfiguration `type:"structure"`

	// The column hierarchy that is used during drill-downs and drill-ups.
	ColumnHierarchies []*ColumnHierarchy `type:"list"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers.
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RadarChartVisual) 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 RadarChartVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RadarChartVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RadarChartVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ColumnHierarchies != nil {
		for i, v := range s.ColumnHierarchies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnHierarchies", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *RadarChartVisual) SetActions(v []*VisualCustomAction) *RadarChartVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *RadarChartVisual) SetChartConfiguration(v *RadarChartConfiguration) *RadarChartVisual {
	s.ChartConfiguration = v
	return s
}

// SetColumnHierarchies sets the ColumnHierarchies field's value.
func (s *RadarChartVisual) SetColumnHierarchies(v []*ColumnHierarchy) *RadarChartVisual {
	s.ColumnHierarchies = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *RadarChartVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *RadarChartVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *RadarChartVisual) SetTitle(v *VisualTitleLabelOptions) *RadarChartVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *RadarChartVisual) SetVisualId(v string) *RadarChartVisual {
	s.VisualId = &v
	return s
}

// A structure that represents a range constant.
type RangeConstant struct {
	_ struct{} `type:"structure"`

	// The maximum value for a range constant.
	Maximum *string `type:"string"`

	// The minimum value for a range constant.
	Minimum *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RangeConstant) 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 RangeConstant) GoString() string {
	return s.String()
}

// SetMaximum sets the Maximum field's value.
func (s *RangeConstant) SetMaximum(v string) *RangeConstant {
	s.Maximum = &v
	return s
}

// SetMinimum sets the Minimum field's value.
func (s *RangeConstant) SetMinimum(v string) *RangeConstant {
	s.Minimum = &v
	return s
}

// The range ends label type of a data path label.
type RangeEndsLabelType struct {
	_ struct{} `type:"structure"`

	// The visibility of the range ends label.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 RangeEndsLabelType) 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 RangeEndsLabelType) GoString() string {
	return s.String()
}

// SetVisibility sets the Visibility field's value.
func (s *RangeEndsLabelType) SetVisibility(v string) *RangeEndsLabelType {
	s.Visibility = &v
	return s
}

// The parameters for Amazon RDS.
type RdsParameters struct {
	_ struct{} `type:"structure"`

	// Database.
	//
	// Database is a required field
	Database *string `min:"1" type:"string" required:"true"`

	// Instance ID.
	//
	// InstanceId is a required field
	InstanceId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RdsParameters) 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 RdsParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RdsParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RdsParameters"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Database != nil && len(*s.Database) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Database", 1))
	}
	if s.InstanceId == nil {
		invalidParams.Add(request.NewErrParamRequired("InstanceId"))
	}
	if s.InstanceId != nil && len(*s.InstanceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InstanceId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *RdsParameters) SetDatabase(v string) *RdsParameters {
	s.Database = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *RdsParameters) SetInstanceId(v string) *RdsParameters {
	s.InstanceId = &v
	return s
}

// A structure that grants Amazon QuickSight access to your cluster and make
// a call to the redshift:GetClusterCredentials API. For more information on
// the redshift:GetClusterCredentials API, see GetClusterCredentials (https://docs.aws.amazon.com/redshift/latest/APIReference/API_GetClusterCredentials.html).
type RedshiftIAMParameters struct {
	_ struct{} `type:"structure"`

	// Automatically creates a database user. If your database doesn't have a DatabaseUser,
	// set this parameter to True. If there is no DatabaseUser, Amazon QuickSight
	// can't connect to your cluster. The RoleArn that you use for this operation
	// must grant access to redshift:CreateClusterUser to successfully create the
	// user.
	AutoCreateDatabaseUser *bool `type:"boolean"`

	// A list of groups whose permissions will be granted to Amazon QuickSight to
	// access the cluster. These permissions are combined with the permissions granted
	// to Amazon QuickSight by the DatabaseUser. If you choose to include this parameter,
	// the RoleArn must grant access to redshift:JoinGroup.
	DatabaseGroups []*string `min:"1" type:"list"`

	// The user whose permissions and group memberships will be used by Amazon QuickSight
	// to access the cluster. If this user already exists in your database, Amazon
	// QuickSight is granted the same permissions that the user has. If the user
	// doesn't exist, set the value of AutoCreateDatabaseUser to True to create
	// a new user with PUBLIC permissions.
	DatabaseUser *string `min:"1" type:"string"`

	// Use the RoleArn structure to allow Amazon QuickSight to call redshift:GetClusterCredentials
	// on your cluster. The calling principal must have iam:PassRole access to pass
	// the role to Amazon QuickSight. The role's trust policy must allow the Amazon
	// QuickSight service principal to assume the role.
	//
	// RoleArn is a required field
	RoleArn *string `min:"20" 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 RedshiftIAMParameters) 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 RedshiftIAMParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RedshiftIAMParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RedshiftIAMParameters"}
	if s.DatabaseGroups != nil && len(s.DatabaseGroups) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseGroups", 1))
	}
	if s.DatabaseUser != nil && len(*s.DatabaseUser) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseUser", 1))
	}
	if s.RoleArn == nil {
		invalidParams.Add(request.NewErrParamRequired("RoleArn"))
	}
	if s.RoleArn != nil && len(*s.RoleArn) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("RoleArn", 20))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAutoCreateDatabaseUser sets the AutoCreateDatabaseUser field's value.
func (s *RedshiftIAMParameters) SetAutoCreateDatabaseUser(v bool) *RedshiftIAMParameters {
	s.AutoCreateDatabaseUser = &v
	return s
}

// SetDatabaseGroups sets the DatabaseGroups field's value.
func (s *RedshiftIAMParameters) SetDatabaseGroups(v []*string) *RedshiftIAMParameters {
	s.DatabaseGroups = v
	return s
}

// SetDatabaseUser sets the DatabaseUser field's value.
func (s *RedshiftIAMParameters) SetDatabaseUser(v string) *RedshiftIAMParameters {
	s.DatabaseUser = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *RedshiftIAMParameters) SetRoleArn(v string) *RedshiftIAMParameters {
	s.RoleArn = &v
	return s
}

// The parameters for Amazon Redshift. The ClusterId field can be blank if Host
// and Port are both set. The Host and Port fields can be blank if the ClusterId
// field is set.
type RedshiftParameters struct {
	_ struct{} `type:"structure"`

	// Cluster ID. This field can be blank if the Host and Port are provided.
	ClusterId *string `min:"1" type:"string"`

	// Database.
	//
	// Database is a required field
	Database *string `min:"1" type:"string" required:"true"`

	// Host. This field can be blank if ClusterId is provided.
	Host *string `min:"1" type:"string"`

	// An optional parameter that uses IAM authentication to grant Amazon QuickSight
	// access to your cluster. This parameter can be used instead of DataSourceCredentials
	// (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DataSourceCredentials.html).
	IAMParameters *RedshiftIAMParameters `type:"structure"`

	// An optional parameter that configures IAM Identity Center authentication
	// to grant Amazon QuickSight access to your cluster.
	//
	// This parameter can only be specified if your Amazon QuickSight account is
	// configured with IAM Identity Center.
	IdentityCenterConfiguration *IdentityCenterConfiguration `type:"structure"`

	// Port. This field can be blank if the ClusterId is provided.
	Port *int64 `type:"integer"`
}

// 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 RedshiftParameters) 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 RedshiftParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RedshiftParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RedshiftParameters"}
	if s.ClusterId != nil && len(*s.ClusterId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClusterId", 1))
	}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Database != nil && len(*s.Database) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Database", 1))
	}
	if s.Host != nil && len(*s.Host) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Host", 1))
	}
	if s.IAMParameters != nil {
		if err := s.IAMParameters.Validate(); err != nil {
			invalidParams.AddNested("IAMParameters", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClusterId sets the ClusterId field's value.
func (s *RedshiftParameters) SetClusterId(v string) *RedshiftParameters {
	s.ClusterId = &v
	return s
}

// SetDatabase sets the Database field's value.
func (s *RedshiftParameters) SetDatabase(v string) *RedshiftParameters {
	s.Database = &v
	return s
}

// SetHost sets the Host field's value.
func (s *RedshiftParameters) SetHost(v string) *RedshiftParameters {
	s.Host = &v
	return s
}

// SetIAMParameters sets the IAMParameters field's value.
func (s *RedshiftParameters) SetIAMParameters(v *RedshiftIAMParameters) *RedshiftParameters {
	s.IAMParameters = v
	return s
}

// SetIdentityCenterConfiguration sets the IdentityCenterConfiguration field's value.
func (s *RedshiftParameters) SetIdentityCenterConfiguration(v *IdentityCenterConfiguration) *RedshiftParameters {
	s.IdentityCenterConfiguration = v
	return s
}

// SetPort sets the Port field's value.
func (s *RedshiftParameters) SetPort(v int64) *RedshiftParameters {
	s.Port = &v
	return s
}

// The reference line visual display options.
type ReferenceLine struct {
	_ struct{} `type:"structure"`

	// The data configuration of the reference line.
	//
	// DataConfiguration is a required field
	DataConfiguration *ReferenceLineDataConfiguration `type:"structure" required:"true"`

	// The label configuration of the reference line.
	LabelConfiguration *ReferenceLineLabelConfiguration `type:"structure"`

	// The status of the reference line. Choose one of the following options:
	//
	//    * ENABLE
	//
	//    * DISABLE
	Status *string `type:"string" enum:"WidgetStatus"`

	// The style configuration of the reference line.
	StyleConfiguration *ReferenceLineStyleConfiguration `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 ReferenceLine) 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 ReferenceLine) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ReferenceLine) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ReferenceLine"}
	if s.DataConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("DataConfiguration"))
	}
	if s.DataConfiguration != nil {
		if err := s.DataConfiguration.Validate(); err != nil {
			invalidParams.AddNested("DataConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.LabelConfiguration != nil {
		if err := s.LabelConfiguration.Validate(); err != nil {
			invalidParams.AddNested("LabelConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataConfiguration sets the DataConfiguration field's value.
func (s *ReferenceLine) SetDataConfiguration(v *ReferenceLineDataConfiguration) *ReferenceLine {
	s.DataConfiguration = v
	return s
}

// SetLabelConfiguration sets the LabelConfiguration field's value.
func (s *ReferenceLine) SetLabelConfiguration(v *ReferenceLineLabelConfiguration) *ReferenceLine {
	s.LabelConfiguration = v
	return s
}

// SetStatus sets the Status field's value.
func (s *ReferenceLine) SetStatus(v string) *ReferenceLine {
	s.Status = &v
	return s
}

// SetStyleConfiguration sets the StyleConfiguration field's value.
func (s *ReferenceLine) SetStyleConfiguration(v *ReferenceLineStyleConfiguration) *ReferenceLine {
	s.StyleConfiguration = v
	return s
}

// The configuration for a custom label on a ReferenceLine.
type ReferenceLineCustomLabelConfiguration struct {
	_ struct{} `type:"structure"`

	// The string text of the custom label.
	//
	// CustomLabel is a required field
	CustomLabel *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ReferenceLineCustomLabelConfiguration) 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 ReferenceLineCustomLabelConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ReferenceLineCustomLabelConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ReferenceLineCustomLabelConfiguration"}
	if s.CustomLabel == nil {
		invalidParams.Add(request.NewErrParamRequired("CustomLabel"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCustomLabel sets the CustomLabel field's value.
func (s *ReferenceLineCustomLabelConfiguration) SetCustomLabel(v string) *ReferenceLineCustomLabelConfiguration {
	s.CustomLabel = &v
	return s
}

// The data configuration of the reference line.
type ReferenceLineDataConfiguration struct {
	_ struct{} `type:"structure"`

	// The axis binding type of the reference line. Choose one of the following
	// options:
	//
	//    * PrimaryY
	//
	//    * SecondaryY
	AxisBinding *string `type:"string" enum:"AxisBinding"`

	// The dynamic configuration of the reference line data configuration.
	DynamicConfiguration *ReferenceLineDynamicDataConfiguration `type:"structure"`

	// The series type of the reference line data configuration. Choose one of the
	// following options:
	//
	//    * BAR
	//
	//    * LINE
	SeriesType *string `type:"string" enum:"ReferenceLineSeriesType"`

	// The static data configuration of the reference line data configuration.
	StaticConfiguration *ReferenceLineStaticDataConfiguration `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 ReferenceLineDataConfiguration) 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 ReferenceLineDataConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ReferenceLineDataConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ReferenceLineDataConfiguration"}
	if s.DynamicConfiguration != nil {
		if err := s.DynamicConfiguration.Validate(); err != nil {
			invalidParams.AddNested("DynamicConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.StaticConfiguration != nil {
		if err := s.StaticConfiguration.Validate(); err != nil {
			invalidParams.AddNested("StaticConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAxisBinding sets the AxisBinding field's value.
func (s *ReferenceLineDataConfiguration) SetAxisBinding(v string) *ReferenceLineDataConfiguration {
	s.AxisBinding = &v
	return s
}

// SetDynamicConfiguration sets the DynamicConfiguration field's value.
func (s *ReferenceLineDataConfiguration) SetDynamicConfiguration(v *ReferenceLineDynamicDataConfiguration) *ReferenceLineDataConfiguration {
	s.DynamicConfiguration = v
	return s
}

// SetSeriesType sets the SeriesType field's value.
func (s *ReferenceLineDataConfiguration) SetSeriesType(v string) *ReferenceLineDataConfiguration {
	s.SeriesType = &v
	return s
}

// SetStaticConfiguration sets the StaticConfiguration field's value.
func (s *ReferenceLineDataConfiguration) SetStaticConfiguration(v *ReferenceLineStaticDataConfiguration) *ReferenceLineDataConfiguration {
	s.StaticConfiguration = v
	return s
}

// The dynamic configuration of the reference line data configuration.
type ReferenceLineDynamicDataConfiguration struct {
	_ struct{} `type:"structure"`

	// The calculation that is used in the dynamic data.
	//
	// Calculation is a required field
	Calculation *NumericalAggregationFunction `type:"structure" required:"true"`

	// The column that the dynamic data targets.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The aggregation function that is used in the dynamic data.
	MeasureAggregationFunction *AggregationFunction `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 ReferenceLineDynamicDataConfiguration) 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 ReferenceLineDynamicDataConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ReferenceLineDynamicDataConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ReferenceLineDynamicDataConfiguration"}
	if s.Calculation == nil {
		invalidParams.Add(request.NewErrParamRequired("Calculation"))
	}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCalculation sets the Calculation field's value.
func (s *ReferenceLineDynamicDataConfiguration) SetCalculation(v *NumericalAggregationFunction) *ReferenceLineDynamicDataConfiguration {
	s.Calculation = v
	return s
}

// SetColumn sets the Column field's value.
func (s *ReferenceLineDynamicDataConfiguration) SetColumn(v *ColumnIdentifier) *ReferenceLineDynamicDataConfiguration {
	s.Column = v
	return s
}

// SetMeasureAggregationFunction sets the MeasureAggregationFunction field's value.
func (s *ReferenceLineDynamicDataConfiguration) SetMeasureAggregationFunction(v *AggregationFunction) *ReferenceLineDynamicDataConfiguration {
	s.MeasureAggregationFunction = v
	return s
}

// The label configuration of a reference line.
type ReferenceLineLabelConfiguration struct {
	_ struct{} `type:"structure"`

	// The custom label configuration of the label in a reference line.
	CustomLabelConfiguration *ReferenceLineCustomLabelConfiguration `type:"structure"`

	// The font color configuration of the label in a reference line.
	FontColor *string `type:"string"`

	// The font configuration of the label in a reference line.
	FontConfiguration *FontConfiguration `type:"structure"`

	// The horizontal position configuration of the label in a reference line. Choose
	// one of the following options:
	//
	//    * LEFT
	//
	//    * CENTER
	//
	//    * RIGHT
	HorizontalPosition *string `type:"string" enum:"ReferenceLineLabelHorizontalPosition"`

	// The value label configuration of the label in a reference line.
	ValueLabelConfiguration *ReferenceLineValueLabelConfiguration `type:"structure"`

	// The vertical position configuration of the label in a reference line. Choose
	// one of the following options:
	//
	//    * ABOVE
	//
	//    * BELOW
	VerticalPosition *string `type:"string" enum:"ReferenceLineLabelVerticalPosition"`
}

// 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 ReferenceLineLabelConfiguration) 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 ReferenceLineLabelConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ReferenceLineLabelConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ReferenceLineLabelConfiguration"}
	if s.CustomLabelConfiguration != nil {
		if err := s.CustomLabelConfiguration.Validate(); err != nil {
			invalidParams.AddNested("CustomLabelConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ValueLabelConfiguration != nil {
		if err := s.ValueLabelConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ValueLabelConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCustomLabelConfiguration sets the CustomLabelConfiguration field's value.
func (s *ReferenceLineLabelConfiguration) SetCustomLabelConfiguration(v *ReferenceLineCustomLabelConfiguration) *ReferenceLineLabelConfiguration {
	s.CustomLabelConfiguration = v
	return s
}

// SetFontColor sets the FontColor field's value.
func (s *ReferenceLineLabelConfiguration) SetFontColor(v string) *ReferenceLineLabelConfiguration {
	s.FontColor = &v
	return s
}

// SetFontConfiguration sets the FontConfiguration field's value.
func (s *ReferenceLineLabelConfiguration) SetFontConfiguration(v *FontConfiguration) *ReferenceLineLabelConfiguration {
	s.FontConfiguration = v
	return s
}

// SetHorizontalPosition sets the HorizontalPosition field's value.
func (s *ReferenceLineLabelConfiguration) SetHorizontalPosition(v string) *ReferenceLineLabelConfiguration {
	s.HorizontalPosition = &v
	return s
}

// SetValueLabelConfiguration sets the ValueLabelConfiguration field's value.
func (s *ReferenceLineLabelConfiguration) SetValueLabelConfiguration(v *ReferenceLineValueLabelConfiguration) *ReferenceLineLabelConfiguration {
	s.ValueLabelConfiguration = v
	return s
}

// SetVerticalPosition sets the VerticalPosition field's value.
func (s *ReferenceLineLabelConfiguration) SetVerticalPosition(v string) *ReferenceLineLabelConfiguration {
	s.VerticalPosition = &v
	return s
}

// The static data configuration of the reference line data configuration.
type ReferenceLineStaticDataConfiguration struct {
	_ struct{} `type:"structure"`

	// The double input of the static data.
	//
	// Value is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ReferenceLineStaticDataConfiguration's
	// String and GoString methods.
	//
	// Value is a required field
	Value *float64 `type:"double" required:"true" sensitive:"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 ReferenceLineStaticDataConfiguration) 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 ReferenceLineStaticDataConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ReferenceLineStaticDataConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ReferenceLineStaticDataConfiguration"}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetValue sets the Value field's value.
func (s *ReferenceLineStaticDataConfiguration) SetValue(v float64) *ReferenceLineStaticDataConfiguration {
	s.Value = &v
	return s
}

// The style configuration of the reference line.
type ReferenceLineStyleConfiguration struct {
	_ struct{} `type:"structure"`

	// The hex color of the reference line.
	Color *string `type:"string"`

	// The pattern type of the line style. Choose one of the following options:
	//
	//    * SOLID
	//
	//    * DASHED
	//
	//    * DOTTED
	Pattern *string `type:"string" enum:"ReferenceLinePatternType"`
}

// 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 ReferenceLineStyleConfiguration) 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 ReferenceLineStyleConfiguration) GoString() string {
	return s.String()
}

// SetColor sets the Color field's value.
func (s *ReferenceLineStyleConfiguration) SetColor(v string) *ReferenceLineStyleConfiguration {
	s.Color = &v
	return s
}

// SetPattern sets the Pattern field's value.
func (s *ReferenceLineStyleConfiguration) SetPattern(v string) *ReferenceLineStyleConfiguration {
	s.Pattern = &v
	return s
}

// The value label configuration of the label in a reference line.
type ReferenceLineValueLabelConfiguration struct {
	_ struct{} `type:"structure"`

	// The format configuration of the value label.
	FormatConfiguration *NumericFormatConfiguration `type:"structure"`

	// The relative position of the value label. Choose one of the following options:
	//
	//    * BEFORE_CUSTOM_LABEL
	//
	//    * AFTER_CUSTOM_LABEL
	RelativePosition *string `type:"string" enum:"ReferenceLineValueLabelRelativePosition"`
}

// 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 ReferenceLineValueLabelConfiguration) 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 ReferenceLineValueLabelConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ReferenceLineValueLabelConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ReferenceLineValueLabelConfiguration"}
	if s.FormatConfiguration != nil {
		if err := s.FormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("FormatConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFormatConfiguration sets the FormatConfiguration field's value.
func (s *ReferenceLineValueLabelConfiguration) SetFormatConfiguration(v *NumericFormatConfiguration) *ReferenceLineValueLabelConfiguration {
	s.FormatConfiguration = v
	return s
}

// SetRelativePosition sets the RelativePosition field's value.
func (s *ReferenceLineValueLabelConfiguration) SetRelativePosition(v string) *ReferenceLineValueLabelConfiguration {
	s.RelativePosition = &v
	return s
}

// The refresh configuration of a dataset.
type RefreshConfiguration struct {
	_ struct{} `type:"structure"`

	// The incremental refresh for the dataset.
	//
	// IncrementalRefresh is a required field
	IncrementalRefresh *IncrementalRefresh `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 RefreshConfiguration) 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 RefreshConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RefreshConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RefreshConfiguration"}
	if s.IncrementalRefresh == nil {
		invalidParams.Add(request.NewErrParamRequired("IncrementalRefresh"))
	}
	if s.IncrementalRefresh != nil {
		if err := s.IncrementalRefresh.Validate(); err != nil {
			invalidParams.AddNested("IncrementalRefresh", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIncrementalRefresh sets the IncrementalRefresh field's value.
func (s *RefreshConfiguration) SetIncrementalRefresh(v *IncrementalRefresh) *RefreshConfiguration {
	s.IncrementalRefresh = v
	return s
}

// Specifies the interval between each scheduled refresh of a dataset.
type RefreshFrequency struct {
	_ struct{} `type:"structure"`

	// The interval between scheduled refreshes. Valid values are as follows:
	//
	//    * MINUTE15: The dataset refreshes every 15 minutes. This value is only
	//    supported for incremental refreshes. This interval can only be used for
	//    one schedule per dataset.
	//
	//    * MINUTE30:The dataset refreshes every 30 minutes. This value is only
	//    supported for incremental refreshes. This interval can only be used for
	//    one schedule per dataset.
	//
	//    * HOURLY: The dataset refreshes every hour. This interval can only be
	//    used for one schedule per dataset.
	//
	//    * DAILY: The dataset refreshes every day.
	//
	//    * WEEKLY: The dataset refreshes every week.
	//
	//    * MONTHLY: The dataset refreshes every month.
	//
	// Interval is a required field
	Interval *string `type:"string" required:"true" enum:"RefreshInterval"`

	// The day of the week that you want to schedule the refresh on. This value
	// is required for weekly and monthly refresh intervals.
	RefreshOnDay *ScheduleRefreshOnEntity `type:"structure"`

	// The time of day that you want the datset to refresh. This value is expressed
	// in HH:MM format. This field is not required for schedules that refresh hourly.
	TimeOfTheDay *string `type:"string"`

	// The timezone that you want the refresh schedule to use. The timezone ID must
	// match a corresponding ID found on java.util.time.getAvailableIDs().
	Timezone *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RefreshFrequency) 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 RefreshFrequency) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RefreshFrequency) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RefreshFrequency"}
	if s.Interval == nil {
		invalidParams.Add(request.NewErrParamRequired("Interval"))
	}
	if s.RefreshOnDay != nil {
		if err := s.RefreshOnDay.Validate(); err != nil {
			invalidParams.AddNested("RefreshOnDay", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInterval sets the Interval field's value.
func (s *RefreshFrequency) SetInterval(v string) *RefreshFrequency {
	s.Interval = &v
	return s
}

// SetRefreshOnDay sets the RefreshOnDay field's value.
func (s *RefreshFrequency) SetRefreshOnDay(v *ScheduleRefreshOnEntity) *RefreshFrequency {
	s.RefreshOnDay = v
	return s
}

// SetTimeOfTheDay sets the TimeOfTheDay field's value.
func (s *RefreshFrequency) SetTimeOfTheDay(v string) *RefreshFrequency {
	s.TimeOfTheDay = &v
	return s
}

// SetTimezone sets the Timezone field's value.
func (s *RefreshFrequency) SetTimezone(v string) *RefreshFrequency {
	s.Timezone = &v
	return s
}

// The refresh schedule of a dataset.
type RefreshSchedule struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the refresh schedule.
	Arn *string `type:"string"`

	// The type of refresh that a datset undergoes. Valid values are as follows:
	//
	//    * FULL_REFRESH: A complete refresh of a dataset.
	//
	//    * INCREMENTAL_REFRESH: A partial refresh of some rows of a dataset, based
	//    on the time window specified.
	//
	// For more information on full and incremental refreshes, see Refreshing SPICE
	// data (https://docs.aws.amazon.com/quicksight/latest/user/refreshing-imported-data.html)
	// in the Amazon QuickSight User Guide.
	//
	// RefreshType is a required field
	RefreshType *string `type:"string" required:"true" enum:"IngestionType"`

	// The frequency for the refresh schedule.
	//
	// ScheduleFrequency is a required field
	ScheduleFrequency *RefreshFrequency `type:"structure" required:"true"`

	// An identifier for the refresh schedule.
	//
	// ScheduleId is a required field
	ScheduleId *string `type:"string" required:"true"`

	// Time after which the refresh schedule can be started, expressed in YYYY-MM-DDTHH:MM:SS
	// format.
	StartAfterDateTime *time.Time `type:"timestamp"`
}

// 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 RefreshSchedule) 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 RefreshSchedule) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RefreshSchedule) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RefreshSchedule"}
	if s.RefreshType == nil {
		invalidParams.Add(request.NewErrParamRequired("RefreshType"))
	}
	if s.ScheduleFrequency == nil {
		invalidParams.Add(request.NewErrParamRequired("ScheduleFrequency"))
	}
	if s.ScheduleId == nil {
		invalidParams.Add(request.NewErrParamRequired("ScheduleId"))
	}
	if s.ScheduleFrequency != nil {
		if err := s.ScheduleFrequency.Validate(); err != nil {
			invalidParams.AddNested("ScheduleFrequency", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetArn sets the Arn field's value.
func (s *RefreshSchedule) SetArn(v string) *RefreshSchedule {
	s.Arn = &v
	return s
}

// SetRefreshType sets the RefreshType field's value.
func (s *RefreshSchedule) SetRefreshType(v string) *RefreshSchedule {
	s.RefreshType = &v
	return s
}

// SetScheduleFrequency sets the ScheduleFrequency field's value.
func (s *RefreshSchedule) SetScheduleFrequency(v *RefreshFrequency) *RefreshSchedule {
	s.ScheduleFrequency = v
	return s
}

// SetScheduleId sets the ScheduleId field's value.
func (s *RefreshSchedule) SetScheduleId(v string) *RefreshSchedule {
	s.ScheduleId = &v
	return s
}

// SetStartAfterDateTime sets the StartAfterDateTime field's value.
func (s *RefreshSchedule) SetStartAfterDateTime(v time.Time) *RefreshSchedule {
	s.StartAfterDateTime = &v
	return s
}

type RegisterUserInput struct {
	_ struct{} `type:"structure"`

	// The ID for the Amazon Web Services account that the user is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The URL of the custom OpenID Connect (OIDC) provider that provides identity
	// to let a user federate into Amazon QuickSight with an associated Identity
	// and Access Management(IAM) role. This parameter should only be used when
	// ExternalLoginFederationProviderType parameter is set to CUSTOM_OIDC.
	CustomFederationProviderUrl *string `type:"string"`

	// (Enterprise edition only) The name of the custom permissions profile that
	// you want to assign to this user. Customized permissions allows you to control
	// a user's access by restricting access the following operations:
	//
	//    * Create and update data sources
	//
	//    * Create and update datasets
	//
	//    * Create and update email reports
	//
	//    * Subscribe to email reports
	//
	// To add custom permissions to an existing user, use UpdateUser (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateUser.html)
	// instead.
	//
	// A set of custom permissions includes any combination of these restrictions.
	// Currently, you need to create the profile names for custom permission sets
	// by using the Amazon QuickSight console. Then, you use the RegisterUser API
	// operation to assign the named set of permissions to a Amazon QuickSight user.
	//
	// Amazon QuickSight custom permissions are applied through IAM policies. Therefore,
	// they override the permissions typically granted by assigning Amazon QuickSight
	// users to one of the default security cohorts in Amazon QuickSight (admin,
	// author, reader, admin pro, author pro, reader pro).
	//
	// This feature is available only to Amazon QuickSight Enterprise edition subscriptions.
	CustomPermissionsName *string `min:"1" type:"string"`

	// The email address of the user that you want to register.
	//
	// Email is a required field
	Email *string `type:"string" required:"true"`

	// The type of supported external login provider that provides identity to let
	// a user federate into Amazon QuickSight with an associated Identity and Access
	// Management(IAM) role. The type of supported external login provider can be
	// one of the following.
	//
	//    * COGNITO: Amazon Cognito. The provider URL is cognito-identity.amazonaws.com.
	//    When choosing the COGNITO provider type, don’t use the "CustomFederationProviderUrl"
	//    parameter which is only needed when the external provider is custom.
	//
	//    * CUSTOM_OIDC: Custom OpenID Connect (OIDC) provider. When choosing CUSTOM_OIDC
	//    type, use the CustomFederationProviderUrl parameter to provide the custom
	//    OIDC provider URL.
	ExternalLoginFederationProviderType *string `type:"string"`

	// The identity ID for a user in the external login provider.
	ExternalLoginId *string `type:"string"`

	// The ARN of the IAM user or role that you are registering with Amazon QuickSight.
	IamArn *string `type:"string"`

	// The identity type that your Amazon QuickSight account uses to manage the
	// identity of users.
	//
	// IdentityType is a required field
	IdentityType *string `type:"string" required:"true" enum:"IdentityType"`

	// The namespace. Currently, you should set this to default.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// You need to use this parameter only when you register one or more users using
	// an assumed IAM role. You don't need to provide the session name for other
	// scenarios, for example when you are registering an IAM user or an Amazon
	// QuickSight user. You can register multiple users using the same IAM role
	// if each user has a different session name. For more information on assuming
	// IAM roles, see assume-role (https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html)
	// in the CLI Reference.
	SessionName *string `min:"2" type:"string"`

	// The tags to associate with the user.
	Tags []*Tag `min:"1" type:"list"`

	// The Amazon QuickSight user name that you want to create for the user you
	// are registering.
	UserName *string `min:"1" type:"string"`

	// The Amazon QuickSight role for the user. The user role can be one of the
	// following:
	//
	//    * READER: A user who has read-only access to dashboards.
	//
	//    * AUTHOR: A user who can create data sources, datasets, analyses, and
	//    dashboards.
	//
	//    * ADMIN: A user who is an author, who can also manage Amazon QuickSight
	//    settings.
	//
	//    * READER_PRO: Reader Pro adds Generative BI capabilities to the Reader
	//    role. Reader Pros have access to Amazon Q in Amazon QuickSight, can build
	//    stories with Amazon Q, and can generate executive summaries from dashboards.
	//
	//    * AUTHOR_PRO: Author Pro adds Generative BI capabilities to the Author
	//    role. Author Pros can author dashboards with natural language with Amazon
	//    Q, build stories with Amazon Q, create Topics for Q&A, and generate executive
	//    summaries from dashboards.
	//
	//    * ADMIN_PRO: Admin Pros are Author Pros who can also manage Amazon QuickSight
	//    administrative settings. Admin Pro users are billed at Author Pro pricing.
	//
	//    * RESTRICTED_READER: This role isn't currently available for use.
	//
	//    * RESTRICTED_AUTHOR: This role isn't currently available for use.
	//
	// UserRole is a required field
	UserRole *string `type:"string" required:"true" enum:"UserRole"`
}

// 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 RegisterUserInput) 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 RegisterUserInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisterUserInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisterUserInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.CustomPermissionsName != nil && len(*s.CustomPermissionsName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CustomPermissionsName", 1))
	}
	if s.Email == nil {
		invalidParams.Add(request.NewErrParamRequired("Email"))
	}
	if s.IdentityType == nil {
		invalidParams.Add(request.NewErrParamRequired("IdentityType"))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}
	if s.SessionName != nil && len(*s.SessionName) < 2 {
		invalidParams.Add(request.NewErrParamMinLen("SessionName", 2))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.UserName != nil && len(*s.UserName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserName", 1))
	}
	if s.UserRole == nil {
		invalidParams.Add(request.NewErrParamRequired("UserRole"))
	}
	if s.Tags != nil {
		for i, v := range s.Tags {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *RegisterUserInput) SetAwsAccountId(v string) *RegisterUserInput {
	s.AwsAccountId = &v
	return s
}

// SetCustomFederationProviderUrl sets the CustomFederationProviderUrl field's value.
func (s *RegisterUserInput) SetCustomFederationProviderUrl(v string) *RegisterUserInput {
	s.CustomFederationProviderUrl = &v
	return s
}

// SetCustomPermissionsName sets the CustomPermissionsName field's value.
func (s *RegisterUserInput) SetCustomPermissionsName(v string) *RegisterUserInput {
	s.CustomPermissionsName = &v
	return s
}

// SetEmail sets the Email field's value.
func (s *RegisterUserInput) SetEmail(v string) *RegisterUserInput {
	s.Email = &v
	return s
}

// SetExternalLoginFederationProviderType sets the ExternalLoginFederationProviderType field's value.
func (s *RegisterUserInput) SetExternalLoginFederationProviderType(v string) *RegisterUserInput {
	s.ExternalLoginFederationProviderType = &v
	return s
}

// SetExternalLoginId sets the ExternalLoginId field's value.
func (s *RegisterUserInput) SetExternalLoginId(v string) *RegisterUserInput {
	s.ExternalLoginId = &v
	return s
}

// SetIamArn sets the IamArn field's value.
func (s *RegisterUserInput) SetIamArn(v string) *RegisterUserInput {
	s.IamArn = &v
	return s
}

// SetIdentityType sets the IdentityType field's value.
func (s *RegisterUserInput) SetIdentityType(v string) *RegisterUserInput {
	s.IdentityType = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *RegisterUserInput) SetNamespace(v string) *RegisterUserInput {
	s.Namespace = &v
	return s
}

// SetSessionName sets the SessionName field's value.
func (s *RegisterUserInput) SetSessionName(v string) *RegisterUserInput {
	s.SessionName = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *RegisterUserInput) SetTags(v []*Tag) *RegisterUserInput {
	s.Tags = v
	return s
}

// SetUserName sets the UserName field's value.
func (s *RegisterUserInput) SetUserName(v string) *RegisterUserInput {
	s.UserName = &v
	return s
}

// SetUserRole sets the UserRole field's value.
func (s *RegisterUserInput) SetUserRole(v string) *RegisterUserInput {
	s.UserRole = &v
	return s
}

type RegisterUserOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The user's user name.
	User *User `type:"structure"`

	// The URL the user visits to complete registration and provide a password.
	// This is returned only for users with an identity type of QUICKSIGHT.
	UserInvitationUrl *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisterUserOutput) 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 RegisterUserOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *RegisterUserOutput) SetRequestId(v string) *RegisterUserOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *RegisterUserOutput) SetStatus(v int64) *RegisterUserOutput {
	s.Status = &v
	return s
}

// SetUser sets the User field's value.
func (s *RegisterUserOutput) SetUser(v *User) *RegisterUserOutput {
	s.User = v
	return s
}

// SetUserInvitationUrl sets the UserInvitationUrl field's value.
func (s *RegisterUserOutput) SetUserInvitationUrl(v string) *RegisterUserOutput {
	s.UserInvitationUrl = &v
	return s
}

// A customer managed key structure that contains the information listed below:
//
//   - KeyArn - The ARN of a KMS key that is registered to a Amazon QuickSight
//     account for encryption and decryption use.
//
//   - DefaultKey - Indicates whether the current key is set as the default
//     key for encryption and decryption use.
type RegisteredCustomerManagedKey struct {
	_ struct{} `type:"structure"`

	// Indicates whether a RegisteredCustomerManagedKey is set as the default key
	// for encryption and decryption use.
	DefaultKey *bool `type:"boolean"`

	// The ARN of the KMS key that is registered to a Amazon QuickSight account
	// for encryption and decryption use.
	KeyArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisteredCustomerManagedKey) 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 RegisteredCustomerManagedKey) GoString() string {
	return s.String()
}

// SetDefaultKey sets the DefaultKey field's value.
func (s *RegisteredCustomerManagedKey) SetDefaultKey(v bool) *RegisteredCustomerManagedKey {
	s.DefaultKey = &v
	return s
}

// SetKeyArn sets the KeyArn field's value.
func (s *RegisteredCustomerManagedKey) SetKeyArn(v string) *RegisteredCustomerManagedKey {
	s.KeyArn = &v
	return s
}

// The feature configurations of an embedded Amazon QuickSight console.
type RegisteredUserConsoleFeatureConfigurations struct {
	_ struct{} `type:"structure"`

	// The state persistence configurations of an embedded Amazon QuickSight console.
	StatePersistence *StatePersistenceConfigurations `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 RegisteredUserConsoleFeatureConfigurations) 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 RegisteredUserConsoleFeatureConfigurations) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisteredUserConsoleFeatureConfigurations) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisteredUserConsoleFeatureConfigurations"}
	if s.StatePersistence != nil {
		if err := s.StatePersistence.Validate(); err != nil {
			invalidParams.AddNested("StatePersistence", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStatePersistence sets the StatePersistence field's value.
func (s *RegisteredUserConsoleFeatureConfigurations) SetStatePersistence(v *StatePersistenceConfigurations) *RegisteredUserConsoleFeatureConfigurations {
	s.StatePersistence = v
	return s
}

// Information about the dashboard you want to embed.
type RegisteredUserDashboardEmbeddingConfiguration struct {
	_ struct{} `type:"structure"`

	// The feature configurations of an embbedded Amazon QuickSight dashboard.
	FeatureConfigurations *RegisteredUserDashboardFeatureConfigurations `type:"structure"`

	// The dashboard ID for the dashboard that you want the user to see first. This
	// ID is included in the output URL. When the URL in response is accessed, Amazon
	// QuickSight renders this dashboard if the user has permissions to view it.
	//
	// If the user does not have permission to view this dashboard, they see a permissions
	// error message.
	//
	// InitialDashboardId is a required field
	InitialDashboardId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisteredUserDashboardEmbeddingConfiguration) 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 RegisteredUserDashboardEmbeddingConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisteredUserDashboardEmbeddingConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisteredUserDashboardEmbeddingConfiguration"}
	if s.InitialDashboardId == nil {
		invalidParams.Add(request.NewErrParamRequired("InitialDashboardId"))
	}
	if s.InitialDashboardId != nil && len(*s.InitialDashboardId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InitialDashboardId", 1))
	}
	if s.FeatureConfigurations != nil {
		if err := s.FeatureConfigurations.Validate(); err != nil {
			invalidParams.AddNested("FeatureConfigurations", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFeatureConfigurations sets the FeatureConfigurations field's value.
func (s *RegisteredUserDashboardEmbeddingConfiguration) SetFeatureConfigurations(v *RegisteredUserDashboardFeatureConfigurations) *RegisteredUserDashboardEmbeddingConfiguration {
	s.FeatureConfigurations = v
	return s
}

// SetInitialDashboardId sets the InitialDashboardId field's value.
func (s *RegisteredUserDashboardEmbeddingConfiguration) SetInitialDashboardId(v string) *RegisteredUserDashboardEmbeddingConfiguration {
	s.InitialDashboardId = &v
	return s
}

// The feature configuration for an embedded dashboard.
type RegisteredUserDashboardFeatureConfigurations struct {
	_ struct{} `type:"structure"`

	// The bookmarks configuration for an embedded dashboard in Amazon QuickSight.
	Bookmarks *BookmarksConfigurations `type:"structure"`

	// The state persistence settings of an embedded dashboard.
	StatePersistence *StatePersistenceConfigurations `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 RegisteredUserDashboardFeatureConfigurations) 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 RegisteredUserDashboardFeatureConfigurations) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisteredUserDashboardFeatureConfigurations) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisteredUserDashboardFeatureConfigurations"}
	if s.Bookmarks != nil {
		if err := s.Bookmarks.Validate(); err != nil {
			invalidParams.AddNested("Bookmarks", err.(request.ErrInvalidParams))
		}
	}
	if s.StatePersistence != nil {
		if err := s.StatePersistence.Validate(); err != nil {
			invalidParams.AddNested("StatePersistence", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBookmarks sets the Bookmarks field's value.
func (s *RegisteredUserDashboardFeatureConfigurations) SetBookmarks(v *BookmarksConfigurations) *RegisteredUserDashboardFeatureConfigurations {
	s.Bookmarks = v
	return s
}

// SetStatePersistence sets the StatePersistence field's value.
func (s *RegisteredUserDashboardFeatureConfigurations) SetStatePersistence(v *StatePersistenceConfigurations) *RegisteredUserDashboardFeatureConfigurations {
	s.StatePersistence = v
	return s
}

// The experience that you are embedding. You can use this object to generate
// a url that embeds a visual into your application.
type RegisteredUserDashboardVisualEmbeddingConfiguration struct {
	_ struct{} `type:"structure"`

	// The visual ID for the visual that you want the user to embed. This ID is
	// included in the output URL. When the URL in response is accessed, Amazon
	// QuickSight renders this visual.
	//
	// The Amazon Resource Name (ARN) of the dashboard that the visual belongs to
	// must be included in the AuthorizedResourceArns parameter. Otherwise, the
	// request will fail with InvalidParameterValueException.
	//
	// InitialDashboardVisualId is a required field
	InitialDashboardVisualId *DashboardVisualId `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 RegisteredUserDashboardVisualEmbeddingConfiguration) 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 RegisteredUserDashboardVisualEmbeddingConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisteredUserDashboardVisualEmbeddingConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisteredUserDashboardVisualEmbeddingConfiguration"}
	if s.InitialDashboardVisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("InitialDashboardVisualId"))
	}
	if s.InitialDashboardVisualId != nil {
		if err := s.InitialDashboardVisualId.Validate(); err != nil {
			invalidParams.AddNested("InitialDashboardVisualId", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInitialDashboardVisualId sets the InitialDashboardVisualId field's value.
func (s *RegisteredUserDashboardVisualEmbeddingConfiguration) SetInitialDashboardVisualId(v *DashboardVisualId) *RegisteredUserDashboardVisualEmbeddingConfiguration {
	s.InitialDashboardVisualId = v
	return s
}

// The type of experience you want to embed. For registered users, you can embed
// Amazon QuickSight dashboards or the Amazon QuickSight console.
//
// Exactly one of the experience configurations is required. You can choose
// Dashboard or QuickSightConsole. You cannot choose more than one experience
// configuration.
type RegisteredUserEmbeddingExperienceConfiguration struct {
	_ struct{} `type:"structure"`

	// The configuration details for providing a dashboard embedding experience.
	Dashboard *RegisteredUserDashboardEmbeddingConfiguration `type:"structure"`

	// The type of embedding experience. In this case, Amazon QuickSight visuals.
	DashboardVisual *RegisteredUserDashboardVisualEmbeddingConfiguration `type:"structure"`

	// The configuration details for embedding the Generative Q&A experience.
	//
	// For more information about embedding the Generative Q&A experience, see Embedding
	// Overview (https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html)
	// in the Amazon QuickSight User Guide.
	GenerativeQnA *RegisteredUserGenerativeQnAEmbeddingConfiguration `type:"structure"`

	// The configuration details for embedding the Q search bar.
	//
	// For more information about embedding the Q search bar, see Embedding Overview
	// (https://docs.aws.amazon.com/quicksight/latest/user/embedding-overview.html)
	// in the Amazon QuickSight User Guide.
	QSearchBar *RegisteredUserQSearchBarEmbeddingConfiguration `type:"structure"`

	// The configuration details for providing each Amazon QuickSight console embedding
	// experience. This can be used along with custom permissions to restrict access
	// to certain features. For more information, see Customizing Access to the
	// Amazon QuickSight Console (https://docs.aws.amazon.com/quicksight/latest/user/customizing-permissions-to-the-quicksight-console.html)
	// in the Amazon QuickSight User Guide.
	//
	// Use GenerateEmbedUrlForRegisteredUser (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)
	// where you want to provide an authoring portal that allows users to create
	// data sources, datasets, analyses, and dashboards. The users who accesses
	// an embedded Amazon QuickSight console needs to belong to the author or admin
	// security cohort. If you want to restrict permissions to some of these features,
	// add a custom permissions profile to the user with the UpdateUser (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdateUser.html)
	// API operation. Use the RegisterUser (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RegisterUser.html)
	// API operation to add a new user with a custom permission profile attached.
	// For more information, see the following sections in the Amazon QuickSight
	// User Guide:
	//
	//    * Embedding the Full Functionality of the Amazon QuickSight Console for
	//    Authenticated Users (https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics-full-console-for-authenticated-users.html)
	//
	//    * Customizing Access to the Amazon QuickSight Console (https://docs.aws.amazon.com/quicksight/latest/user/customizing-permissions-to-the-quicksight-console.html)
	//
	// For more information about the high-level steps for embedding and for an
	// interactive demo of the ways you can customize embedding, visit the Amazon
	// QuickSight Developer Portal (https://docs.aws.amazon.com/quicksight/latest/user/quicksight-dev-portal.html).
	QuickSightConsole *RegisteredUserQuickSightConsoleEmbeddingConfiguration `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 RegisteredUserEmbeddingExperienceConfiguration) 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 RegisteredUserEmbeddingExperienceConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisteredUserEmbeddingExperienceConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisteredUserEmbeddingExperienceConfiguration"}
	if s.Dashboard != nil {
		if err := s.Dashboard.Validate(); err != nil {
			invalidParams.AddNested("Dashboard", err.(request.ErrInvalidParams))
		}
	}
	if s.DashboardVisual != nil {
		if err := s.DashboardVisual.Validate(); err != nil {
			invalidParams.AddNested("DashboardVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.GenerativeQnA != nil {
		if err := s.GenerativeQnA.Validate(); err != nil {
			invalidParams.AddNested("GenerativeQnA", err.(request.ErrInvalidParams))
		}
	}
	if s.QSearchBar != nil {
		if err := s.QSearchBar.Validate(); err != nil {
			invalidParams.AddNested("QSearchBar", err.(request.ErrInvalidParams))
		}
	}
	if s.QuickSightConsole != nil {
		if err := s.QuickSightConsole.Validate(); err != nil {
			invalidParams.AddNested("QuickSightConsole", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDashboard sets the Dashboard field's value.
func (s *RegisteredUserEmbeddingExperienceConfiguration) SetDashboard(v *RegisteredUserDashboardEmbeddingConfiguration) *RegisteredUserEmbeddingExperienceConfiguration {
	s.Dashboard = v
	return s
}

// SetDashboardVisual sets the DashboardVisual field's value.
func (s *RegisteredUserEmbeddingExperienceConfiguration) SetDashboardVisual(v *RegisteredUserDashboardVisualEmbeddingConfiguration) *RegisteredUserEmbeddingExperienceConfiguration {
	s.DashboardVisual = v
	return s
}

// SetGenerativeQnA sets the GenerativeQnA field's value.
func (s *RegisteredUserEmbeddingExperienceConfiguration) SetGenerativeQnA(v *RegisteredUserGenerativeQnAEmbeddingConfiguration) *RegisteredUserEmbeddingExperienceConfiguration {
	s.GenerativeQnA = v
	return s
}

// SetQSearchBar sets the QSearchBar field's value.
func (s *RegisteredUserEmbeddingExperienceConfiguration) SetQSearchBar(v *RegisteredUserQSearchBarEmbeddingConfiguration) *RegisteredUserEmbeddingExperienceConfiguration {
	s.QSearchBar = v
	return s
}

// SetQuickSightConsole sets the QuickSightConsole field's value.
func (s *RegisteredUserEmbeddingExperienceConfiguration) SetQuickSightConsole(v *RegisteredUserQuickSightConsoleEmbeddingConfiguration) *RegisteredUserEmbeddingExperienceConfiguration {
	s.QuickSightConsole = v
	return s
}

// An object that provides information about the configuration of a Generative
// Q&A experience.
type RegisteredUserGenerativeQnAEmbeddingConfiguration struct {
	_ struct{} `type:"structure"`

	// The ID of the new Q reader experience topic that you want to make the starting
	// topic in the Generative Q&A experience. You can find a topic ID by navigating
	// to the Topics pane in the Amazon QuickSight application and opening a topic.
	// The ID is in the URL for the topic that you open.
	//
	// If you don't specify an initial topic or you specify a legacy topic, a list
	// of all shared new reader experience topics is shown in the Generative Q&A
	// experience for your readers. When you select an initial new reader experience
	// topic, you can specify whether or not readers are allowed to select other
	// new reader experience topics from the available ones in the list.
	InitialTopicId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisteredUserGenerativeQnAEmbeddingConfiguration) 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 RegisteredUserGenerativeQnAEmbeddingConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisteredUserGenerativeQnAEmbeddingConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisteredUserGenerativeQnAEmbeddingConfiguration"}
	if s.InitialTopicId != nil && len(*s.InitialTopicId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InitialTopicId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInitialTopicId sets the InitialTopicId field's value.
func (s *RegisteredUserGenerativeQnAEmbeddingConfiguration) SetInitialTopicId(v string) *RegisteredUserGenerativeQnAEmbeddingConfiguration {
	s.InitialTopicId = &v
	return s
}

// Information about the Q search bar embedding experience.
type RegisteredUserQSearchBarEmbeddingConfiguration struct {
	_ struct{} `type:"structure"`

	// The ID of the legacy Q topic that you want to use as the starting topic in
	// the Q search bar. To locate the topic ID of the topic that you want to use,
	// open the Amazon QuickSight console (https://quicksight.aws.amazon.com/),
	// navigate to the Topics pane, and choose thre topic that you want to use.
	// The TopicID is located in the URL of the topic that opens. When you select
	// an initial topic, you can specify whether or not readers are allowed to select
	// other topics from the list of available topics.
	//
	// If you don't specify an initial topic or if you specify a new reader experience
	// topic, a list of all shared legacy topics is shown in the Q bar.
	InitialTopicId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisteredUserQSearchBarEmbeddingConfiguration) 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 RegisteredUserQSearchBarEmbeddingConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisteredUserQSearchBarEmbeddingConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisteredUserQSearchBarEmbeddingConfiguration"}
	if s.InitialTopicId != nil && len(*s.InitialTopicId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InitialTopicId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInitialTopicId sets the InitialTopicId field's value.
func (s *RegisteredUserQSearchBarEmbeddingConfiguration) SetInitialTopicId(v string) *RegisteredUserQSearchBarEmbeddingConfiguration {
	s.InitialTopicId = &v
	return s
}

// Information about the Amazon QuickSight console that you want to embed.
type RegisteredUserQuickSightConsoleEmbeddingConfiguration struct {
	_ struct{} `type:"structure"`

	// The embedding configuration of an embedded Amazon QuickSight console.
	FeatureConfigurations *RegisteredUserConsoleFeatureConfigurations `type:"structure"`

	// The initial URL path for the Amazon QuickSight console. InitialPath is required.
	//
	// The entry point URL is constrained to the following paths:
	//
	//    * /start
	//
	//    * /start/analyses
	//
	//    * /start/dashboards
	//
	//    * /start/favorites
	//
	//    * /dashboards/DashboardId. DashboardId is the actual ID key from the Amazon
	//    QuickSight console URL of the dashboard.
	//
	//    * /analyses/AnalysisId. AnalysisId is the actual ID key from the Amazon
	//    QuickSight console URL of the analysis.
	InitialPath *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisteredUserQuickSightConsoleEmbeddingConfiguration) 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 RegisteredUserQuickSightConsoleEmbeddingConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisteredUserQuickSightConsoleEmbeddingConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisteredUserQuickSightConsoleEmbeddingConfiguration"}
	if s.InitialPath != nil && len(*s.InitialPath) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InitialPath", 1))
	}
	if s.FeatureConfigurations != nil {
		if err := s.FeatureConfigurations.Validate(); err != nil {
			invalidParams.AddNested("FeatureConfigurations", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFeatureConfigurations sets the FeatureConfigurations field's value.
func (s *RegisteredUserQuickSightConsoleEmbeddingConfiguration) SetFeatureConfigurations(v *RegisteredUserConsoleFeatureConfigurations) *RegisteredUserQuickSightConsoleEmbeddingConfiguration {
	s.FeatureConfigurations = v
	return s
}

// SetInitialPath sets the InitialPath field's value.
func (s *RegisteredUserQuickSightConsoleEmbeddingConfiguration) SetInitialPath(v string) *RegisteredUserQuickSightConsoleEmbeddingConfiguration {
	s.InitialPath = &v
	return s
}

// A physical table type for relational data sources.
type RelationalTable struct {
	_ struct{} `type:"structure"`

	// The catalog associated with a table.
	Catalog *string `type:"string"`

	// The Amazon Resource Name (ARN) for the data source.
	//
	// DataSourceArn is a required field
	DataSourceArn *string `type:"string" required:"true"`

	// The column schema of the table.
	//
	// InputColumns is a required field
	InputColumns []*InputColumn `min:"1" type:"list" required:"true"`

	// The name of the relational table.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The schema name. This name applies to certain relational database engines.
	Schema *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RelationalTable) 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 RelationalTable) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RelationalTable) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RelationalTable"}
	if s.DataSourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSourceArn"))
	}
	if s.InputColumns == nil {
		invalidParams.Add(request.NewErrParamRequired("InputColumns"))
	}
	if s.InputColumns != nil && len(s.InputColumns) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InputColumns", 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 s.InputColumns != nil {
		for i, v := range s.InputColumns {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InputColumns", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalog sets the Catalog field's value.
func (s *RelationalTable) SetCatalog(v string) *RelationalTable {
	s.Catalog = &v
	return s
}

// SetDataSourceArn sets the DataSourceArn field's value.
func (s *RelationalTable) SetDataSourceArn(v string) *RelationalTable {
	s.DataSourceArn = &v
	return s
}

// SetInputColumns sets the InputColumns field's value.
func (s *RelationalTable) SetInputColumns(v []*InputColumn) *RelationalTable {
	s.InputColumns = v
	return s
}

// SetName sets the Name field's value.
func (s *RelationalTable) SetName(v string) *RelationalTable {
	s.Name = &v
	return s
}

// SetSchema sets the Schema field's value.
func (s *RelationalTable) SetSchema(v string) *RelationalTable {
	s.Schema = &v
	return s
}

// The display options of a control.
type RelativeDateTimeControlDisplayOptions struct {
	_ struct{} `type:"structure"`

	// Customize how dates are formatted in controls.
	DateTimeFormat *string `min:"1" type:"string"`

	// The configuration of info icon label options.
	InfoIconLabelOptions *SheetControlInfoIconLabelOptions `type:"structure"`

	// The options to configure the title visibility, name, and font size.
	TitleOptions *LabelOptions `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 RelativeDateTimeControlDisplayOptions) 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 RelativeDateTimeControlDisplayOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RelativeDateTimeControlDisplayOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RelativeDateTimeControlDisplayOptions"}
	if s.DateTimeFormat != nil && len(*s.DateTimeFormat) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DateTimeFormat", 1))
	}
	if s.InfoIconLabelOptions != nil {
		if err := s.InfoIconLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("InfoIconLabelOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDateTimeFormat sets the DateTimeFormat field's value.
func (s *RelativeDateTimeControlDisplayOptions) SetDateTimeFormat(v string) *RelativeDateTimeControlDisplayOptions {
	s.DateTimeFormat = &v
	return s
}

// SetInfoIconLabelOptions sets the InfoIconLabelOptions field's value.
func (s *RelativeDateTimeControlDisplayOptions) SetInfoIconLabelOptions(v *SheetControlInfoIconLabelOptions) *RelativeDateTimeControlDisplayOptions {
	s.InfoIconLabelOptions = v
	return s
}

// SetTitleOptions sets the TitleOptions field's value.
func (s *RelativeDateTimeControlDisplayOptions) SetTitleOptions(v *LabelOptions) *RelativeDateTimeControlDisplayOptions {
	s.TitleOptions = v
	return s
}

// A RelativeDatesFilter filters relative dates values.
type RelativeDatesFilter struct {
	_ struct{} `type:"structure"`

	// The date configuration of the filter.
	//
	// AnchorDateConfiguration is a required field
	AnchorDateConfiguration *AnchorDateConfiguration `type:"structure" required:"true"`

	// The column that the filter is applied to.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The default configurations for the associated controls. This applies only
	// for filters that are scoped to multiple sheets.
	DefaultFilterControlConfiguration *DefaultFilterControlConfiguration `type:"structure"`

	// The configuration for the exclude period of the filter.
	ExcludePeriodConfiguration *ExcludePeriodConfiguration `type:"structure"`

	// An identifier that uniquely identifies a filter within a dashboard, analysis,
	// or template.
	//
	// FilterId is a required field
	FilterId *string `min:"1" type:"string" required:"true"`

	// The minimum granularity (period granularity) of the relative dates filter.
	MinimumGranularity *string `type:"string" enum:"TimeGranularity"`

	// This option determines how null values should be treated when filtering data.
	//
	//    * ALL_VALUES: Include null values in filtered results.
	//
	//    * NULLS_ONLY: Only include null values in filtered results.
	//
	//    * NON_NULLS_ONLY: Exclude null values from filtered results.
	//
	// NullOption is a required field
	NullOption *string `type:"string" required:"true" enum:"FilterNullOption"`

	// The parameter whose value should be used for the filter value.
	ParameterName *string `min:"1" type:"string"`

	// The range date type of the filter. Choose one of the options below:
	//
	//    * PREVIOUS
	//
	//    * THIS
	//
	//    * LAST
	//
	//    * NOW
	//
	//    * NEXT
	//
	// RelativeDateType is a required field
	RelativeDateType *string `type:"string" required:"true" enum:"RelativeDateType"`

	// The date value of the filter.
	RelativeDateValue *int64 `type:"integer"`

	// The level of time precision that is used to aggregate DateTime values.
	//
	// TimeGranularity is a required field
	TimeGranularity *string `type:"string" required:"true" enum:"TimeGranularity"`
}

// 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 RelativeDatesFilter) 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 RelativeDatesFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RelativeDatesFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RelativeDatesFilter"}
	if s.AnchorDateConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("AnchorDateConfiguration"))
	}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.FilterId == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterId"))
	}
	if s.FilterId != nil && len(*s.FilterId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterId", 1))
	}
	if s.NullOption == nil {
		invalidParams.Add(request.NewErrParamRequired("NullOption"))
	}
	if s.ParameterName != nil && len(*s.ParameterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ParameterName", 1))
	}
	if s.RelativeDateType == nil {
		invalidParams.Add(request.NewErrParamRequired("RelativeDateType"))
	}
	if s.TimeGranularity == nil {
		invalidParams.Add(request.NewErrParamRequired("TimeGranularity"))
	}
	if s.AnchorDateConfiguration != nil {
		if err := s.AnchorDateConfiguration.Validate(); err != nil {
			invalidParams.AddNested("AnchorDateConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}
	if s.DefaultFilterControlConfiguration != nil {
		if err := s.DefaultFilterControlConfiguration.Validate(); err != nil {
			invalidParams.AddNested("DefaultFilterControlConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ExcludePeriodConfiguration != nil {
		if err := s.ExcludePeriodConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ExcludePeriodConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAnchorDateConfiguration sets the AnchorDateConfiguration field's value.
func (s *RelativeDatesFilter) SetAnchorDateConfiguration(v *AnchorDateConfiguration) *RelativeDatesFilter {
	s.AnchorDateConfiguration = v
	return s
}

// SetColumn sets the Column field's value.
func (s *RelativeDatesFilter) SetColumn(v *ColumnIdentifier) *RelativeDatesFilter {
	s.Column = v
	return s
}

// SetDefaultFilterControlConfiguration sets the DefaultFilterControlConfiguration field's value.
func (s *RelativeDatesFilter) SetDefaultFilterControlConfiguration(v *DefaultFilterControlConfiguration) *RelativeDatesFilter {
	s.DefaultFilterControlConfiguration = v
	return s
}

// SetExcludePeriodConfiguration sets the ExcludePeriodConfiguration field's value.
func (s *RelativeDatesFilter) SetExcludePeriodConfiguration(v *ExcludePeriodConfiguration) *RelativeDatesFilter {
	s.ExcludePeriodConfiguration = v
	return s
}

// SetFilterId sets the FilterId field's value.
func (s *RelativeDatesFilter) SetFilterId(v string) *RelativeDatesFilter {
	s.FilterId = &v
	return s
}

// SetMinimumGranularity sets the MinimumGranularity field's value.
func (s *RelativeDatesFilter) SetMinimumGranularity(v string) *RelativeDatesFilter {
	s.MinimumGranularity = &v
	return s
}

// SetNullOption sets the NullOption field's value.
func (s *RelativeDatesFilter) SetNullOption(v string) *RelativeDatesFilter {
	s.NullOption = &v
	return s
}

// SetParameterName sets the ParameterName field's value.
func (s *RelativeDatesFilter) SetParameterName(v string) *RelativeDatesFilter {
	s.ParameterName = &v
	return s
}

// SetRelativeDateType sets the RelativeDateType field's value.
func (s *RelativeDatesFilter) SetRelativeDateType(v string) *RelativeDatesFilter {
	s.RelativeDateType = &v
	return s
}

// SetRelativeDateValue sets the RelativeDateValue field's value.
func (s *RelativeDatesFilter) SetRelativeDateValue(v int64) *RelativeDatesFilter {
	s.RelativeDateValue = &v
	return s
}

// SetTimeGranularity sets the TimeGranularity field's value.
func (s *RelativeDatesFilter) SetTimeGranularity(v string) *RelativeDatesFilter {
	s.TimeGranularity = &v
	return s
}

// A transform operation that renames a column.
type RenameColumnOperation struct {
	_ struct{} `type:"structure"`

	// The name of the column to be renamed.
	//
	// ColumnName is a required field
	ColumnName *string `min:"1" type:"string" required:"true"`

	// The new name for the column.
	//
	// NewColumnName is a required field
	NewColumnName *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RenameColumnOperation) 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 RenameColumnOperation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RenameColumnOperation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RenameColumnOperation"}
	if s.ColumnName == nil {
		invalidParams.Add(request.NewErrParamRequired("ColumnName"))
	}
	if s.ColumnName != nil && len(*s.ColumnName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ColumnName", 1))
	}
	if s.NewColumnName == nil {
		invalidParams.Add(request.NewErrParamRequired("NewColumnName"))
	}
	if s.NewColumnName != nil && len(*s.NewColumnName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NewColumnName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumnName sets the ColumnName field's value.
func (s *RenameColumnOperation) SetColumnName(v string) *RenameColumnOperation {
	s.ColumnName = &v
	return s
}

// SetNewColumnName sets the NewColumnName field's value.
func (s *RenameColumnOperation) SetNewColumnName(v string) *RenameColumnOperation {
	s.NewColumnName = &v
	return s
}

// The resource specified already exists.
type ResourceExistsException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`

	// The resource type for this request.
	ResourceType *string `type:"string" enum:"ExceptionResourceType"`
}

// 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 ResourceExistsException) 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 ResourceExistsException) GoString() string {
	return s.String()
}

func newErrorResourceExistsException(v protocol.ResponseMetadata) error {
	return &ResourceExistsException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceExistsException) Code() string {
	return "ResourceExistsException"
}

// Message returns the exception's message.
func (s *ResourceExistsException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceExistsException) OrigErr() error {
	return nil
}

func (s *ResourceExistsException) 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 *ResourceExistsException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceExistsException) RequestID() string {
	return s.RespMetadata.RequestID
}

// One or more resources can't be found.
type ResourceNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`

	// The resource type for this request.
	ResourceType *string `type:"string" enum:"ExceptionResourceType"`
}

// 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\n%s", s.Code(), s.Message(), s.String())
}

// 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
}

// Permission for the resource.
type ResourcePermission struct {
	_ struct{} `type:"structure"`

	// The IAM action to grant or revoke permissions on.
	//
	// Actions is a required field
	Actions []*string `min:"1" type:"list" required:"true"`

	// The Amazon Resource Name (ARN) of the principal. This can be one of the following:
	//
	//    * The ARN of an Amazon QuickSight user or group associated with a data
	//    source or dataset. (This is common.)
	//
	//    * The ARN of an Amazon QuickSight user, group, or namespace associated
	//    with an analysis, dashboard, template, or theme. (This is common.)
	//
	//    * The ARN of an Amazon Web Services account root: This is an IAM ARN rather
	//    than a QuickSight ARN. Use this option only to share resources (templates)
	//    across Amazon Web Services accounts. (This is less common.)
	//
	// Principal is a required field
	Principal *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourcePermission) 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 ResourcePermission) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ResourcePermission) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ResourcePermission"}
	if s.Actions == nil {
		invalidParams.Add(request.NewErrParamRequired("Actions"))
	}
	if s.Actions != nil && len(s.Actions) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Actions", 1))
	}
	if s.Principal == nil {
		invalidParams.Add(request.NewErrParamRequired("Principal"))
	}
	if s.Principal != nil && len(*s.Principal) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Principal", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *ResourcePermission) SetActions(v []*string) *ResourcePermission {
	s.Actions = v
	return s
}

// SetPrincipal sets the Principal field's value.
func (s *ResourcePermission) SetPrincipal(v string) *ResourcePermission {
	s.Principal = &v
	return s
}

// This resource is currently unavailable.
type ResourceUnavailableException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`

	// The resource type for this request.
	ResourceType *string `type:"string" enum:"ExceptionResourceType"`
}

// 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 ResourceUnavailableException) 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 ResourceUnavailableException) GoString() string {
	return s.String()
}

func newErrorResourceUnavailableException(v protocol.ResponseMetadata) error {
	return &ResourceUnavailableException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceUnavailableException) Code() string {
	return "ResourceUnavailableException"
}

// Message returns the exception's message.
func (s *ResourceUnavailableException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceUnavailableException) OrigErr() error {
	return nil
}

func (s *ResourceUnavailableException) 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 *ResourceUnavailableException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceUnavailableException) RequestID() string {
	return s.RespMetadata.RequestID
}

type RestoreAnalysisInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the analysis that you're restoring.
	//
	// AnalysisId is a required field
	AnalysisId *string `location:"uri" locationName:"AnalysisId" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account that contains the analysis.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RestoreAnalysisInput) 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 RestoreAnalysisInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RestoreAnalysisInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RestoreAnalysisInput"}
	if s.AnalysisId == nil {
		invalidParams.Add(request.NewErrParamRequired("AnalysisId"))
	}
	if s.AnalysisId != nil && len(*s.AnalysisId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AnalysisId", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAnalysisId sets the AnalysisId field's value.
func (s *RestoreAnalysisInput) SetAnalysisId(v string) *RestoreAnalysisInput {
	s.AnalysisId = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *RestoreAnalysisInput) SetAwsAccountId(v string) *RestoreAnalysisInput {
	s.AwsAccountId = &v
	return s
}

type RestoreAnalysisOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the analysis that you're restoring.
	AnalysisId *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the analysis that you're restoring.
	Arn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 RestoreAnalysisOutput) 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 RestoreAnalysisOutput) GoString() string {
	return s.String()
}

// SetAnalysisId sets the AnalysisId field's value.
func (s *RestoreAnalysisOutput) SetAnalysisId(v string) *RestoreAnalysisOutput {
	s.AnalysisId = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *RestoreAnalysisOutput) SetArn(v string) *RestoreAnalysisOutput {
	s.Arn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *RestoreAnalysisOutput) SetRequestId(v string) *RestoreAnalysisOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *RestoreAnalysisOutput) SetStatus(v int64) *RestoreAnalysisOutput {
	s.Status = &v
	return s
}

// The rolling date configuration of a date time filter.
type RollingDateConfiguration struct {
	_ struct{} `type:"structure"`

	// The data set that is used in the rolling date configuration.
	DataSetIdentifier *string `min:"1" type:"string"`

	// The expression of the rolling date configuration.
	//
	// Expression is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by RollingDateConfiguration's
	// String and GoString methods.
	//
	// Expression is a required field
	Expression *string `min:"1" type:"string" required:"true" sensitive:"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 RollingDateConfiguration) 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 RollingDateConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RollingDateConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RollingDateConfiguration"}
	if s.DataSetIdentifier != nil && len(*s.DataSetIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetIdentifier", 1))
	}
	if s.Expression == nil {
		invalidParams.Add(request.NewErrParamRequired("Expression"))
	}
	if s.Expression != nil && len(*s.Expression) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Expression", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataSetIdentifier sets the DataSetIdentifier field's value.
func (s *RollingDateConfiguration) SetDataSetIdentifier(v string) *RollingDateConfiguration {
	s.DataSetIdentifier = &v
	return s
}

// SetExpression sets the Expression field's value.
func (s *RollingDateConfiguration) SetExpression(v string) *RollingDateConfiguration {
	s.Expression = &v
	return s
}

// Determines the row alternate color options.
type RowAlternateColorOptions struct {
	_ struct{} `type:"structure"`

	// Determines the list of row alternate colors.
	RowAlternateColors []*string `type:"list"`

	// Determines the widget status.
	Status *string `type:"string" enum:"WidgetStatus"`

	// The primary background color options for alternate rows.
	UsePrimaryBackgroundColor *string `type:"string" enum:"WidgetStatus"`
}

// 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 RowAlternateColorOptions) 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 RowAlternateColorOptions) GoString() string {
	return s.String()
}

// SetRowAlternateColors sets the RowAlternateColors field's value.
func (s *RowAlternateColorOptions) SetRowAlternateColors(v []*string) *RowAlternateColorOptions {
	s.RowAlternateColors = v
	return s
}

// SetStatus sets the Status field's value.
func (s *RowAlternateColorOptions) SetStatus(v string) *RowAlternateColorOptions {
	s.Status = &v
	return s
}

// SetUsePrimaryBackgroundColor sets the UsePrimaryBackgroundColor field's value.
func (s *RowAlternateColorOptions) SetUsePrimaryBackgroundColor(v string) *RowAlternateColorOptions {
	s.UsePrimaryBackgroundColor = &v
	return s
}

// Information about rows for a data set SPICE ingestion.
type RowInfo struct {
	_ struct{} `type:"structure"`

	// The number of rows that were not ingested.
	RowsDropped *int64 `type:"long"`

	// The number of rows that were ingested.
	RowsIngested *int64 `type:"long"`

	// The total number of rows in the dataset.
	TotalRowsInDataset *int64 `type:"long"`
}

// 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 RowInfo) 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 RowInfo) GoString() string {
	return s.String()
}

// SetRowsDropped sets the RowsDropped field's value.
func (s *RowInfo) SetRowsDropped(v int64) *RowInfo {
	s.RowsDropped = &v
	return s
}

// SetRowsIngested sets the RowsIngested field's value.
func (s *RowInfo) SetRowsIngested(v int64) *RowInfo {
	s.RowsIngested = &v
	return s
}

// SetTotalRowsInDataset sets the TotalRowsInDataset field's value.
func (s *RowInfo) SetTotalRowsInDataset(v int64) *RowInfo {
	s.TotalRowsInDataset = &v
	return s
}

// Information about a dataset that contains permissions for row-level security
// (RLS). The permissions dataset maps fields to users or groups. For more information,
// see Using Row-Level Security (RLS) to Restrict Access to a Dataset (https://docs.aws.amazon.com/quicksight/latest/user/restrict-access-to-a-data-set-using-row-level-security.html)
// in the Amazon QuickSight User Guide.
//
// The option to deny permissions by setting PermissionPolicy to DENY_ACCESS
// is not supported for new RLS datasets.
type RowLevelPermissionDataSet struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the dataset that contains permissions for
	// RLS.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// The user or group rules associated with the dataset that contains permissions
	// for RLS.
	//
	// By default, FormatVersion is VERSION_1. When FormatVersion is VERSION_1,
	// UserName and GroupName are required. When FormatVersion is VERSION_2, UserARN
	// and GroupARN are required, and Namespace must not exist.
	FormatVersion *string `type:"string" enum:"RowLevelPermissionFormatVersion"`

	// The namespace associated with the dataset that contains permissions for RLS.
	Namespace *string `type:"string"`

	// The type of permissions to use when interpreting the permissions for RLS.
	// DENY_ACCESS is included for backward compatibility only.
	//
	// PermissionPolicy is a required field
	PermissionPolicy *string `type:"string" required:"true" enum:"RowLevelPermissionPolicy"`

	// The status of the row-level security permission dataset. If enabled, the
	// status is ENABLED. If disabled, the status is DISABLED.
	Status *string `type:"string" enum:"Status"`
}

// 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 RowLevelPermissionDataSet) 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 RowLevelPermissionDataSet) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RowLevelPermissionDataSet) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RowLevelPermissionDataSet"}
	if s.Arn == nil {
		invalidParams.Add(request.NewErrParamRequired("Arn"))
	}
	if s.PermissionPolicy == nil {
		invalidParams.Add(request.NewErrParamRequired("PermissionPolicy"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetArn sets the Arn field's value.
func (s *RowLevelPermissionDataSet) SetArn(v string) *RowLevelPermissionDataSet {
	s.Arn = &v
	return s
}

// SetFormatVersion sets the FormatVersion field's value.
func (s *RowLevelPermissionDataSet) SetFormatVersion(v string) *RowLevelPermissionDataSet {
	s.FormatVersion = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *RowLevelPermissionDataSet) SetNamespace(v string) *RowLevelPermissionDataSet {
	s.Namespace = &v
	return s
}

// SetPermissionPolicy sets the PermissionPolicy field's value.
func (s *RowLevelPermissionDataSet) SetPermissionPolicy(v string) *RowLevelPermissionDataSet {
	s.PermissionPolicy = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *RowLevelPermissionDataSet) SetStatus(v string) *RowLevelPermissionDataSet {
	s.Status = &v
	return s
}

// The configuration of tags on a dataset to set row-level security.
type RowLevelPermissionTagConfiguration struct {
	_ struct{} `type:"structure"`

	// The status of row-level security tags. If enabled, the status is ENABLED.
	// If disabled, the status is DISABLED.
	Status *string `type:"string" enum:"Status"`

	// A list of tag configuration rules to apply to a dataset. All tag configurations
	// have the OR condition. Tags within each tile will be joined (AND). At least
	// one rule in this structure must have all tag values assigned to it to apply
	// Row-level security (RLS) to the dataset.
	TagRuleConfigurations [][]*string `min:"1" type:"list"`

	// A set of rules associated with row-level security, such as the tag names
	// and columns that they are assigned to.
	//
	// TagRules is a required field
	TagRules []*RowLevelPermissionTagRule `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RowLevelPermissionTagConfiguration) 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 RowLevelPermissionTagConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RowLevelPermissionTagConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RowLevelPermissionTagConfiguration"}
	if s.TagRuleConfigurations != nil && len(s.TagRuleConfigurations) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TagRuleConfigurations", 1))
	}
	if s.TagRules == nil {
		invalidParams.Add(request.NewErrParamRequired("TagRules"))
	}
	if s.TagRules != nil && len(s.TagRules) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TagRules", 1))
	}
	if s.TagRules != nil {
		for i, v := range s.TagRules {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TagRules", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStatus sets the Status field's value.
func (s *RowLevelPermissionTagConfiguration) SetStatus(v string) *RowLevelPermissionTagConfiguration {
	s.Status = &v
	return s
}

// SetTagRuleConfigurations sets the TagRuleConfigurations field's value.
func (s *RowLevelPermissionTagConfiguration) SetTagRuleConfigurations(v [][]*string) *RowLevelPermissionTagConfiguration {
	s.TagRuleConfigurations = v
	return s
}

// SetTagRules sets the TagRules field's value.
func (s *RowLevelPermissionTagConfiguration) SetTagRules(v []*RowLevelPermissionTagRule) *RowLevelPermissionTagConfiguration {
	s.TagRules = v
	return s
}

// A set of rules associated with a tag.
type RowLevelPermissionTagRule struct {
	_ struct{} `type:"structure"`

	// The column name that a tag key is assigned to.
	//
	// ColumnName is a required field
	ColumnName *string `type:"string" required:"true"`

	// A string that you want to use to filter by all the values in a column in
	// the dataset and don’t want to list the values one by one. For example,
	// you can use an asterisk as your match all value.
	//
	// MatchAllValue is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by RowLevelPermissionTagRule's
	// String and GoString methods.
	MatchAllValue *string `min:"1" type:"string" sensitive:"true"`

	// The unique key for a tag.
	//
	// TagKey is a required field
	TagKey *string `min:"1" type:"string" required:"true"`

	// A string that you want to use to delimit the values when you pass the values
	// at run time. For example, you can delimit the values with a comma.
	TagMultiValueDelimiter *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RowLevelPermissionTagRule) 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 RowLevelPermissionTagRule) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RowLevelPermissionTagRule) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RowLevelPermissionTagRule"}
	if s.ColumnName == nil {
		invalidParams.Add(request.NewErrParamRequired("ColumnName"))
	}
	if s.MatchAllValue != nil && len(*s.MatchAllValue) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("MatchAllValue", 1))
	}
	if s.TagKey == nil {
		invalidParams.Add(request.NewErrParamRequired("TagKey"))
	}
	if s.TagKey != nil && len(*s.TagKey) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TagKey", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumnName sets the ColumnName field's value.
func (s *RowLevelPermissionTagRule) SetColumnName(v string) *RowLevelPermissionTagRule {
	s.ColumnName = &v
	return s
}

// SetMatchAllValue sets the MatchAllValue field's value.
func (s *RowLevelPermissionTagRule) SetMatchAllValue(v string) *RowLevelPermissionTagRule {
	s.MatchAllValue = &v
	return s
}

// SetTagKey sets the TagKey field's value.
func (s *RowLevelPermissionTagRule) SetTagKey(v string) *RowLevelPermissionTagRule {
	s.TagKey = &v
	return s
}

// SetTagMultiValueDelimiter sets the TagMultiValueDelimiter field's value.
func (s *RowLevelPermissionTagRule) SetTagMultiValueDelimiter(v string) *RowLevelPermissionTagRule {
	s.TagMultiValueDelimiter = &v
	return s
}

// An optional structure that contains the Amazon S3 bucket configuration that
// the generated snapshots are stored in. If you don't provide this information,
// generated snapshots are stored in the default Amazon QuickSight bucket.
type S3BucketConfiguration struct {
	_ struct{} `type:"structure"`

	// The name of an existing Amazon S3 bucket where the generated snapshot artifacts
	// are sent.
	//
	// BucketName is a required field
	BucketName *string `type:"string" required:"true"`

	// The prefix of the Amazon S3 bucket that the generated snapshots are stored
	// in.
	//
	// BucketPrefix is a required field
	BucketPrefix *string `type:"string" required:"true"`

	// The region that the Amazon S3 bucket is located in. The bucket must be located
	// in the same region that the StartDashboardSnapshotJob API call is made.
	//
	// BucketRegion is a required field
	BucketRegion *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3BucketConfiguration) 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 S3BucketConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3BucketConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3BucketConfiguration"}
	if s.BucketName == nil {
		invalidParams.Add(request.NewErrParamRequired("BucketName"))
	}
	if s.BucketPrefix == nil {
		invalidParams.Add(request.NewErrParamRequired("BucketPrefix"))
	}
	if s.BucketRegion == nil {
		invalidParams.Add(request.NewErrParamRequired("BucketRegion"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBucketName sets the BucketName field's value.
func (s *S3BucketConfiguration) SetBucketName(v string) *S3BucketConfiguration {
	s.BucketName = &v
	return s
}

// SetBucketPrefix sets the BucketPrefix field's value.
func (s *S3BucketConfiguration) SetBucketPrefix(v string) *S3BucketConfiguration {
	s.BucketPrefix = &v
	return s
}

// SetBucketRegion sets the BucketRegion field's value.
func (s *S3BucketConfiguration) SetBucketRegion(v string) *S3BucketConfiguration {
	s.BucketRegion = &v
	return s
}

// The parameters for S3.
type S3Parameters struct {
	_ struct{} `type:"structure"`

	// Location of the Amazon S3 manifest file. This is NULL if the manifest file
	// was uploaded into Amazon QuickSight.
	//
	// ManifestFileLocation is a required field
	ManifestFileLocation *ManifestFileLocation `type:"structure" required:"true"`

	// Use the RoleArn structure to override an account-wide role for a specific
	// S3 data source. For example, say an account administrator has turned off
	// all S3 access with an account-wide role. The administrator can then use RoleArn
	// to bypass the account-wide role and allow S3 access for the single S3 data
	// source that is specified in the structure, even if the account-wide role
	// forbidding S3 access is still active.
	RoleArn *string `min:"20" 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 S3Parameters) 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 S3Parameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3Parameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3Parameters"}
	if s.ManifestFileLocation == nil {
		invalidParams.Add(request.NewErrParamRequired("ManifestFileLocation"))
	}
	if s.RoleArn != nil && len(*s.RoleArn) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("RoleArn", 20))
	}
	if s.ManifestFileLocation != nil {
		if err := s.ManifestFileLocation.Validate(); err != nil {
			invalidParams.AddNested("ManifestFileLocation", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetManifestFileLocation sets the ManifestFileLocation field's value.
func (s *S3Parameters) SetManifestFileLocation(v *ManifestFileLocation) *S3Parameters {
	s.ManifestFileLocation = v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *S3Parameters) SetRoleArn(v string) *S3Parameters {
	s.RoleArn = &v
	return s
}

// A physical table type for an S3 data source.
type S3Source struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the data source.
	//
	// DataSourceArn is a required field
	DataSourceArn *string `type:"string" required:"true"`

	// A physical table type for an S3 data source.
	//
	// For files that aren't JSON, only STRING data types are supported in input
	// columns.
	//
	// InputColumns is a required field
	InputColumns []*InputColumn `min:"1" type:"list" required:"true"`

	// Information about the format for the S3 source file or files.
	UploadSettings *UploadSettings `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 S3Source) 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 S3Source) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3Source) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3Source"}
	if s.DataSourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSourceArn"))
	}
	if s.InputColumns == nil {
		invalidParams.Add(request.NewErrParamRequired("InputColumns"))
	}
	if s.InputColumns != nil && len(s.InputColumns) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InputColumns", 1))
	}
	if s.InputColumns != nil {
		for i, v := range s.InputColumns {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InputColumns", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.UploadSettings != nil {
		if err := s.UploadSettings.Validate(); err != nil {
			invalidParams.AddNested("UploadSettings", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataSourceArn sets the DataSourceArn field's value.
func (s *S3Source) SetDataSourceArn(v string) *S3Source {
	s.DataSourceArn = &v
	return s
}

// SetInputColumns sets the InputColumns field's value.
func (s *S3Source) SetInputColumns(v []*InputColumn) *S3Source {
	s.InputColumns = v
	return s
}

// SetUploadSettings sets the UploadSettings field's value.
func (s *S3Source) SetUploadSettings(v *UploadSettings) *S3Source {
	s.UploadSettings = v
	return s
}

// The configuration of the same-sheet target visuals that you want to be filtered.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type SameSheetTargetVisualConfiguration struct {
	_ struct{} `type:"structure"`

	// The options that choose the target visual in the same sheet.
	//
	// Valid values are defined as follows:
	//
	//    * ALL_VISUALS: Applies the filter operation to all visuals in the same
	//    sheet.
	TargetVisualOptions *string `type:"string" enum:"TargetVisualOptions"`

	// A list of the target visual IDs that are located in the same sheet of the
	// analysis.
	TargetVisuals []*string `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SameSheetTargetVisualConfiguration) 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 SameSheetTargetVisualConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SameSheetTargetVisualConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SameSheetTargetVisualConfiguration"}
	if s.TargetVisuals != nil && len(s.TargetVisuals) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TargetVisuals", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTargetVisualOptions sets the TargetVisualOptions field's value.
func (s *SameSheetTargetVisualConfiguration) SetTargetVisualOptions(v string) *SameSheetTargetVisualConfiguration {
	s.TargetVisualOptions = &v
	return s
}

// SetTargetVisuals sets the TargetVisuals field's value.
func (s *SameSheetTargetVisualConfiguration) SetTargetVisuals(v []*string) *SameSheetTargetVisualConfiguration {
	s.TargetVisuals = v
	return s
}

// The field well configuration of a sankey diagram.
type SankeyDiagramAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The destination field wells of a sankey diagram.
	Destination []*DimensionField `type:"list"`

	// The source field wells of a sankey diagram.
	Source []*DimensionField `type:"list"`

	// The weight field wells of a sankey diagram.
	Weight []*MeasureField `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 SankeyDiagramAggregatedFieldWells) 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 SankeyDiagramAggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SankeyDiagramAggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SankeyDiagramAggregatedFieldWells"}
	if s.Destination != nil {
		for i, v := range s.Destination {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Destination", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Source != nil {
		for i, v := range s.Source {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Source", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Weight != nil {
		for i, v := range s.Weight {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Weight", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDestination sets the Destination field's value.
func (s *SankeyDiagramAggregatedFieldWells) SetDestination(v []*DimensionField) *SankeyDiagramAggregatedFieldWells {
	s.Destination = v
	return s
}

// SetSource sets the Source field's value.
func (s *SankeyDiagramAggregatedFieldWells) SetSource(v []*DimensionField) *SankeyDiagramAggregatedFieldWells {
	s.Source = v
	return s
}

// SetWeight sets the Weight field's value.
func (s *SankeyDiagramAggregatedFieldWells) SetWeight(v []*MeasureField) *SankeyDiagramAggregatedFieldWells {
	s.Weight = v
	return s
}

// The configuration of a sankey diagram.
type SankeyDiagramChartConfiguration struct {
	_ struct{} `type:"structure"`

	// The data label configuration of a sankey diagram.
	DataLabels *DataLabelOptions `type:"structure"`

	// The field well configuration of a sankey diagram.
	FieldWells *SankeyDiagramFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The sort configuration of a sankey diagram.
	SortConfiguration *SankeyDiagramSortConfiguration `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 SankeyDiagramChartConfiguration) 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 SankeyDiagramChartConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SankeyDiagramChartConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SankeyDiagramChartConfiguration"}
	if s.DataLabels != nil {
		if err := s.DataLabels.Validate(); err != nil {
			invalidParams.AddNested("DataLabels", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.SortConfiguration != nil {
		if err := s.SortConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SortConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataLabels sets the DataLabels field's value.
func (s *SankeyDiagramChartConfiguration) SetDataLabels(v *DataLabelOptions) *SankeyDiagramChartConfiguration {
	s.DataLabels = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *SankeyDiagramChartConfiguration) SetFieldWells(v *SankeyDiagramFieldWells) *SankeyDiagramChartConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *SankeyDiagramChartConfiguration) SetInteractions(v *VisualInteractionOptions) *SankeyDiagramChartConfiguration {
	s.Interactions = v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *SankeyDiagramChartConfiguration) SetSortConfiguration(v *SankeyDiagramSortConfiguration) *SankeyDiagramChartConfiguration {
	s.SortConfiguration = v
	return s
}

// The field well configuration of a sankey diagram.
type SankeyDiagramFieldWells struct {
	_ struct{} `type:"structure"`

	// The field well configuration of a sankey diagram.
	SankeyDiagramAggregatedFieldWells *SankeyDiagramAggregatedFieldWells `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 SankeyDiagramFieldWells) 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 SankeyDiagramFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SankeyDiagramFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SankeyDiagramFieldWells"}
	if s.SankeyDiagramAggregatedFieldWells != nil {
		if err := s.SankeyDiagramAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("SankeyDiagramAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSankeyDiagramAggregatedFieldWells sets the SankeyDiagramAggregatedFieldWells field's value.
func (s *SankeyDiagramFieldWells) SetSankeyDiagramAggregatedFieldWells(v *SankeyDiagramAggregatedFieldWells) *SankeyDiagramFieldWells {
	s.SankeyDiagramAggregatedFieldWells = v
	return s
}

// The sort configuration of a sankey diagram.
type SankeyDiagramSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The limit on the number of destination nodes that are displayed in a sankey
	// diagram.
	DestinationItemsLimit *ItemsLimitConfiguration `type:"structure"`

	// The limit on the number of source nodes that are displayed in a sankey diagram.
	SourceItemsLimit *ItemsLimitConfiguration `type:"structure"`

	// The sort configuration of the weight fields.
	WeightSort []*FieldSortOptions `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 SankeyDiagramSortConfiguration) 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 SankeyDiagramSortConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SankeyDiagramSortConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SankeyDiagramSortConfiguration"}
	if s.WeightSort != nil {
		for i, v := range s.WeightSort {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "WeightSort", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDestinationItemsLimit sets the DestinationItemsLimit field's value.
func (s *SankeyDiagramSortConfiguration) SetDestinationItemsLimit(v *ItemsLimitConfiguration) *SankeyDiagramSortConfiguration {
	s.DestinationItemsLimit = v
	return s
}

// SetSourceItemsLimit sets the SourceItemsLimit field's value.
func (s *SankeyDiagramSortConfiguration) SetSourceItemsLimit(v *ItemsLimitConfiguration) *SankeyDiagramSortConfiguration {
	s.SourceItemsLimit = v
	return s
}

// SetWeightSort sets the WeightSort field's value.
func (s *SankeyDiagramSortConfiguration) SetWeightSort(v []*FieldSortOptions) *SankeyDiagramSortConfiguration {
	s.WeightSort = v
	return s
}

// A sankey diagram.
//
// For more information, see Using Sankey diagrams (https://docs.aws.amazon.com/quicksight/latest/user/sankey-diagram.html)
// in the Amazon QuickSight User Guide.
type SankeyDiagramVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration of a sankey diagram.
	ChartConfiguration *SankeyDiagramChartConfiguration `type:"structure"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers.
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SankeyDiagramVisual) 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 SankeyDiagramVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SankeyDiagramVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SankeyDiagramVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *SankeyDiagramVisual) SetActions(v []*VisualCustomAction) *SankeyDiagramVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *SankeyDiagramVisual) SetChartConfiguration(v *SankeyDiagramChartConfiguration) *SankeyDiagramVisual {
	s.ChartConfiguration = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *SankeyDiagramVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *SankeyDiagramVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *SankeyDiagramVisual) SetTitle(v *VisualTitleLabelOptions) *SankeyDiagramVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *SankeyDiagramVisual) SetVisualId(v string) *SankeyDiagramVisual {
	s.VisualId = &v
	return s
}

// The aggregated field well of a scatter plot.
type ScatterPlotCategoricallyAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The category field well of a scatter plot.
	Category []*DimensionField `type:"list"`

	// The label field well of a scatter plot.
	Label []*DimensionField `type:"list"`

	// The size field well of a scatter plot.
	Size []*MeasureField `type:"list"`

	// The x-axis field well of a scatter plot.
	//
	// The x-axis is aggregated by category.
	XAxis []*MeasureField `type:"list"`

	// The y-axis field well of a scatter plot.
	//
	// The y-axis is aggregated by category.
	YAxis []*MeasureField `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 ScatterPlotCategoricallyAggregatedFieldWells) 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 ScatterPlotCategoricallyAggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ScatterPlotCategoricallyAggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ScatterPlotCategoricallyAggregatedFieldWells"}
	if s.Category != nil {
		for i, v := range s.Category {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Category", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Label != nil {
		for i, v := range s.Label {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Label", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Size != nil {
		for i, v := range s.Size {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Size", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.XAxis != nil {
		for i, v := range s.XAxis {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "XAxis", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.YAxis != nil {
		for i, v := range s.YAxis {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "YAxis", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategory sets the Category field's value.
func (s *ScatterPlotCategoricallyAggregatedFieldWells) SetCategory(v []*DimensionField) *ScatterPlotCategoricallyAggregatedFieldWells {
	s.Category = v
	return s
}

// SetLabel sets the Label field's value.
func (s *ScatterPlotCategoricallyAggregatedFieldWells) SetLabel(v []*DimensionField) *ScatterPlotCategoricallyAggregatedFieldWells {
	s.Label = v
	return s
}

// SetSize sets the Size field's value.
func (s *ScatterPlotCategoricallyAggregatedFieldWells) SetSize(v []*MeasureField) *ScatterPlotCategoricallyAggregatedFieldWells {
	s.Size = v
	return s
}

// SetXAxis sets the XAxis field's value.
func (s *ScatterPlotCategoricallyAggregatedFieldWells) SetXAxis(v []*MeasureField) *ScatterPlotCategoricallyAggregatedFieldWells {
	s.XAxis = v
	return s
}

// SetYAxis sets the YAxis field's value.
func (s *ScatterPlotCategoricallyAggregatedFieldWells) SetYAxis(v []*MeasureField) *ScatterPlotCategoricallyAggregatedFieldWells {
	s.YAxis = v
	return s
}

// The configuration of a scatter plot.
type ScatterPlotConfiguration struct {
	_ struct{} `type:"structure"`

	// The options that determine if visual data labels are displayed.
	DataLabels *DataLabelOptions `type:"structure"`

	// The field wells of the visual.
	FieldWells *ScatterPlotFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The legend display setup of the visual.
	Legend *LegendOptions `type:"structure"`

	// The sort configuration of a scatter plot.
	SortConfiguration *ScatterPlotSortConfiguration `type:"structure"`

	// The legend display setup of the visual.
	Tooltip *TooltipOptions `type:"structure"`

	// The palette (chart color) display setup of the visual.
	VisualPalette *VisualPalette `type:"structure"`

	// The label display options (grid line, range, scale, and axis step) of the
	// scatter plot's x-axis.
	XAxisDisplayOptions *AxisDisplayOptions `type:"structure"`

	// The label options (label text, label visibility, and sort icon visibility)
	// of the scatter plot's x-axis.
	XAxisLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The label display options (grid line, range, scale, and axis step) of the
	// scatter plot's y-axis.
	YAxisDisplayOptions *AxisDisplayOptions `type:"structure"`

	// The label options (label text, label visibility, and sort icon visibility)
	// of the scatter plot's y-axis.
	YAxisLabelOptions *ChartAxisLabelOptions `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 ScatterPlotConfiguration) 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 ScatterPlotConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ScatterPlotConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ScatterPlotConfiguration"}
	if s.DataLabels != nil {
		if err := s.DataLabels.Validate(); err != nil {
			invalidParams.AddNested("DataLabels", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.Tooltip != nil {
		if err := s.Tooltip.Validate(); err != nil {
			invalidParams.AddNested("Tooltip", err.(request.ErrInvalidParams))
		}
	}
	if s.VisualPalette != nil {
		if err := s.VisualPalette.Validate(); err != nil {
			invalidParams.AddNested("VisualPalette", err.(request.ErrInvalidParams))
		}
	}
	if s.XAxisLabelOptions != nil {
		if err := s.XAxisLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("XAxisLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.YAxisLabelOptions != nil {
		if err := s.YAxisLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("YAxisLabelOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataLabels sets the DataLabels field's value.
func (s *ScatterPlotConfiguration) SetDataLabels(v *DataLabelOptions) *ScatterPlotConfiguration {
	s.DataLabels = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *ScatterPlotConfiguration) SetFieldWells(v *ScatterPlotFieldWells) *ScatterPlotConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *ScatterPlotConfiguration) SetInteractions(v *VisualInteractionOptions) *ScatterPlotConfiguration {
	s.Interactions = v
	return s
}

// SetLegend sets the Legend field's value.
func (s *ScatterPlotConfiguration) SetLegend(v *LegendOptions) *ScatterPlotConfiguration {
	s.Legend = v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *ScatterPlotConfiguration) SetSortConfiguration(v *ScatterPlotSortConfiguration) *ScatterPlotConfiguration {
	s.SortConfiguration = v
	return s
}

// SetTooltip sets the Tooltip field's value.
func (s *ScatterPlotConfiguration) SetTooltip(v *TooltipOptions) *ScatterPlotConfiguration {
	s.Tooltip = v
	return s
}

// SetVisualPalette sets the VisualPalette field's value.
func (s *ScatterPlotConfiguration) SetVisualPalette(v *VisualPalette) *ScatterPlotConfiguration {
	s.VisualPalette = v
	return s
}

// SetXAxisDisplayOptions sets the XAxisDisplayOptions field's value.
func (s *ScatterPlotConfiguration) SetXAxisDisplayOptions(v *AxisDisplayOptions) *ScatterPlotConfiguration {
	s.XAxisDisplayOptions = v
	return s
}

// SetXAxisLabelOptions sets the XAxisLabelOptions field's value.
func (s *ScatterPlotConfiguration) SetXAxisLabelOptions(v *ChartAxisLabelOptions) *ScatterPlotConfiguration {
	s.XAxisLabelOptions = v
	return s
}

// SetYAxisDisplayOptions sets the YAxisDisplayOptions field's value.
func (s *ScatterPlotConfiguration) SetYAxisDisplayOptions(v *AxisDisplayOptions) *ScatterPlotConfiguration {
	s.YAxisDisplayOptions = v
	return s
}

// SetYAxisLabelOptions sets the YAxisLabelOptions field's value.
func (s *ScatterPlotConfiguration) SetYAxisLabelOptions(v *ChartAxisLabelOptions) *ScatterPlotConfiguration {
	s.YAxisLabelOptions = v
	return s
}

// The field well configuration of a scatter plot.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type ScatterPlotFieldWells struct {
	_ struct{} `type:"structure"`

	// The aggregated field wells of a scatter plot. The x and y-axes of scatter
	// plots with aggregated field wells are aggregated by category, label, or both.
	ScatterPlotCategoricallyAggregatedFieldWells *ScatterPlotCategoricallyAggregatedFieldWells `type:"structure"`

	// The unaggregated field wells of a scatter plot. The x and y-axes of these
	// scatter plots are unaggregated.
	ScatterPlotUnaggregatedFieldWells *ScatterPlotUnaggregatedFieldWells `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 ScatterPlotFieldWells) 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 ScatterPlotFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ScatterPlotFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ScatterPlotFieldWells"}
	if s.ScatterPlotCategoricallyAggregatedFieldWells != nil {
		if err := s.ScatterPlotCategoricallyAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("ScatterPlotCategoricallyAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.ScatterPlotUnaggregatedFieldWells != nil {
		if err := s.ScatterPlotUnaggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("ScatterPlotUnaggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetScatterPlotCategoricallyAggregatedFieldWells sets the ScatterPlotCategoricallyAggregatedFieldWells field's value.
func (s *ScatterPlotFieldWells) SetScatterPlotCategoricallyAggregatedFieldWells(v *ScatterPlotCategoricallyAggregatedFieldWells) *ScatterPlotFieldWells {
	s.ScatterPlotCategoricallyAggregatedFieldWells = v
	return s
}

// SetScatterPlotUnaggregatedFieldWells sets the ScatterPlotUnaggregatedFieldWells field's value.
func (s *ScatterPlotFieldWells) SetScatterPlotUnaggregatedFieldWells(v *ScatterPlotUnaggregatedFieldWells) *ScatterPlotFieldWells {
	s.ScatterPlotUnaggregatedFieldWells = v
	return s
}

// The sort configuration of a scatter plot.
type ScatterPlotSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The limit configuration of the visual display for an axis.
	ScatterPlotLimitConfiguration *ItemsLimitConfiguration `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 ScatterPlotSortConfiguration) 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 ScatterPlotSortConfiguration) GoString() string {
	return s.String()
}

// SetScatterPlotLimitConfiguration sets the ScatterPlotLimitConfiguration field's value.
func (s *ScatterPlotSortConfiguration) SetScatterPlotLimitConfiguration(v *ItemsLimitConfiguration) *ScatterPlotSortConfiguration {
	s.ScatterPlotLimitConfiguration = v
	return s
}

// The unaggregated field wells of a scatter plot.
type ScatterPlotUnaggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The category field well of a scatter plot.
	Category []*DimensionField `type:"list"`

	// The label field well of a scatter plot.
	Label []*DimensionField `type:"list"`

	// The size field well of a scatter plot.
	Size []*MeasureField `type:"list"`

	// The x-axis field well of a scatter plot.
	//
	// The x-axis is a dimension field and cannot be aggregated.
	XAxis []*DimensionField `type:"list"`

	// The y-axis field well of a scatter plot.
	//
	// The y-axis is a dimension field and cannot be aggregated.
	YAxis []*DimensionField `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 ScatterPlotUnaggregatedFieldWells) 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 ScatterPlotUnaggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ScatterPlotUnaggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ScatterPlotUnaggregatedFieldWells"}
	if s.Category != nil {
		for i, v := range s.Category {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Category", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Label != nil {
		for i, v := range s.Label {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Label", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Size != nil {
		for i, v := range s.Size {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Size", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.XAxis != nil {
		for i, v := range s.XAxis {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "XAxis", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.YAxis != nil {
		for i, v := range s.YAxis {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "YAxis", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategory sets the Category field's value.
func (s *ScatterPlotUnaggregatedFieldWells) SetCategory(v []*DimensionField) *ScatterPlotUnaggregatedFieldWells {
	s.Category = v
	return s
}

// SetLabel sets the Label field's value.
func (s *ScatterPlotUnaggregatedFieldWells) SetLabel(v []*DimensionField) *ScatterPlotUnaggregatedFieldWells {
	s.Label = v
	return s
}

// SetSize sets the Size field's value.
func (s *ScatterPlotUnaggregatedFieldWells) SetSize(v []*MeasureField) *ScatterPlotUnaggregatedFieldWells {
	s.Size = v
	return s
}

// SetXAxis sets the XAxis field's value.
func (s *ScatterPlotUnaggregatedFieldWells) SetXAxis(v []*DimensionField) *ScatterPlotUnaggregatedFieldWells {
	s.XAxis = v
	return s
}

// SetYAxis sets the YAxis field's value.
func (s *ScatterPlotUnaggregatedFieldWells) SetYAxis(v []*DimensionField) *ScatterPlotUnaggregatedFieldWells {
	s.YAxis = v
	return s
}

// A scatter plot.
//
// For more information, see Using scatter plots (https://docs.aws.amazon.com/quicksight/latest/user/scatter-plot.html)
// in the Amazon QuickSight User Guide.
type ScatterPlotVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration settings of the visual.
	ChartConfiguration *ScatterPlotConfiguration `type:"structure"`

	// The column hierarchy that is used during drill-downs and drill-ups.
	ColumnHierarchies []*ColumnHierarchy `type:"list"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers.
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScatterPlotVisual) 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 ScatterPlotVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ScatterPlotVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ScatterPlotVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ColumnHierarchies != nil {
		for i, v := range s.ColumnHierarchies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnHierarchies", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *ScatterPlotVisual) SetActions(v []*VisualCustomAction) *ScatterPlotVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *ScatterPlotVisual) SetChartConfiguration(v *ScatterPlotConfiguration) *ScatterPlotVisual {
	s.ChartConfiguration = v
	return s
}

// SetColumnHierarchies sets the ColumnHierarchies field's value.
func (s *ScatterPlotVisual) SetColumnHierarchies(v []*ColumnHierarchy) *ScatterPlotVisual {
	s.ColumnHierarchies = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *ScatterPlotVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *ScatterPlotVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *ScatterPlotVisual) SetTitle(v *VisualTitleLabelOptions) *ScatterPlotVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *ScatterPlotVisual) SetVisualId(v string) *ScatterPlotVisual {
	s.VisualId = &v
	return s
}

// The refresh on entity for weekly or monthly schedules.
type ScheduleRefreshOnEntity struct {
	_ struct{} `type:"structure"`

	// The day of the month that you want to schedule refresh on.
	DayOfMonth *string `min:"1" type:"string"`

	// The day of the week that you want to schedule a refresh on.
	DayOfWeek *string `type:"string" enum:"DayOfWeek"`
}

// 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 ScheduleRefreshOnEntity) 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 ScheduleRefreshOnEntity) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ScheduleRefreshOnEntity) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ScheduleRefreshOnEntity"}
	if s.DayOfMonth != nil && len(*s.DayOfMonth) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DayOfMonth", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDayOfMonth sets the DayOfMonth field's value.
func (s *ScheduleRefreshOnEntity) SetDayOfMonth(v string) *ScheduleRefreshOnEntity {
	s.DayOfMonth = &v
	return s
}

// SetDayOfWeek sets the DayOfWeek field's value.
func (s *ScheduleRefreshOnEntity) SetDayOfWeek(v string) *ScheduleRefreshOnEntity {
	s.DayOfWeek = &v
	return s
}

// The visual display options for a data zoom scroll bar.
type ScrollBarOptions struct {
	_ struct{} `type:"structure"`

	// The visibility of the data zoom scroll bar.
	Visibility *string `type:"string" enum:"Visibility"`

	// The visibility range for the data zoom scroll bar.
	VisibleRange *VisibleRangeOptions `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 ScrollBarOptions) 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 ScrollBarOptions) GoString() string {
	return s.String()
}

// SetVisibility sets the Visibility field's value.
func (s *ScrollBarOptions) SetVisibility(v string) *ScrollBarOptions {
	s.Visibility = &v
	return s
}

// SetVisibleRange sets the VisibleRange field's value.
func (s *ScrollBarOptions) SetVisibleRange(v *VisibleRangeOptions) *ScrollBarOptions {
	s.VisibleRange = v
	return s
}

type SearchAnalysesInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the analyses that
	// you're searching for.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The structure for the search filters that you want to apply to your search.
	//
	// Filters is a required field
	Filters []*AnalysisSearchFilter `min:"1" type:"list" required:"true"`

	// The maximum number of results to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchAnalysesInput) 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 SearchAnalysesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchAnalysesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchAnalysesInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Filters == nil {
		invalidParams.Add(request.NewErrParamRequired("Filters"))
	}
	if s.Filters != nil && len(s.Filters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Filters", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *SearchAnalysesInput) SetAwsAccountId(v string) *SearchAnalysesInput {
	s.AwsAccountId = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *SearchAnalysesInput) SetFilters(v []*AnalysisSearchFilter) *SearchAnalysesInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchAnalysesInput) SetMaxResults(v int64) *SearchAnalysesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchAnalysesInput) SetNextToken(v string) *SearchAnalysesInput {
	s.NextToken = &v
	return s
}

type SearchAnalysesOutput struct {
	_ struct{} `type:"structure"`

	// Metadata describing the analyses that you searched for.
	AnalysisSummaryList []*AnalysisSummary `type:"list"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 SearchAnalysesOutput) 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 SearchAnalysesOutput) GoString() string {
	return s.String()
}

// SetAnalysisSummaryList sets the AnalysisSummaryList field's value.
func (s *SearchAnalysesOutput) SetAnalysisSummaryList(v []*AnalysisSummary) *SearchAnalysesOutput {
	s.AnalysisSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchAnalysesOutput) SetNextToken(v string) *SearchAnalysesOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *SearchAnalysesOutput) SetRequestId(v string) *SearchAnalysesOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *SearchAnalysesOutput) SetStatus(v int64) *SearchAnalysesOutput {
	s.Status = &v
	return s
}

type SearchDashboardsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the user whose dashboards
	// you're searching for.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The filters to apply to the search. Currently, you can search only by user
	// name, for example, "Filters": [ { "Name": "QUICKSIGHT_USER", "Operator":
	// "StringEquals", "Value": "arn:aws:quicksight:us-east-1:1:user/default/UserName1"
	// } ]
	//
	// Filters is a required field
	Filters []*DashboardSearchFilter `min:"1" type:"list" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchDashboardsInput) 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 SearchDashboardsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchDashboardsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchDashboardsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Filters == nil {
		invalidParams.Add(request.NewErrParamRequired("Filters"))
	}
	if s.Filters != nil && len(s.Filters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Filters", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *SearchDashboardsInput) SetAwsAccountId(v string) *SearchDashboardsInput {
	s.AwsAccountId = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *SearchDashboardsInput) SetFilters(v []*DashboardSearchFilter) *SearchDashboardsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchDashboardsInput) SetMaxResults(v int64) *SearchDashboardsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchDashboardsInput) SetNextToken(v string) *SearchDashboardsInput {
	s.NextToken = &v
	return s
}

type SearchDashboardsOutput struct {
	_ struct{} `type:"structure"`

	// The list of dashboards owned by the user specified in Filters in your request.
	DashboardSummaryList []*DashboardSummary `type:"list"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 SearchDashboardsOutput) 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 SearchDashboardsOutput) GoString() string {
	return s.String()
}

// SetDashboardSummaryList sets the DashboardSummaryList field's value.
func (s *SearchDashboardsOutput) SetDashboardSummaryList(v []*DashboardSummary) *SearchDashboardsOutput {
	s.DashboardSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchDashboardsOutput) SetNextToken(v string) *SearchDashboardsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *SearchDashboardsOutput) SetRequestId(v string) *SearchDashboardsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *SearchDashboardsOutput) SetStatus(v int64) *SearchDashboardsOutput {
	s.Status = &v
	return s
}

type SearchDataSetsInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The filters to apply to the search.
	//
	// Filters is a required field
	Filters []*DataSetSearchFilter `min:"1" type:"list" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `min:"1" type:"integer"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchDataSetsInput) 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 SearchDataSetsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchDataSetsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchDataSetsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Filters == nil {
		invalidParams.Add(request.NewErrParamRequired("Filters"))
	}
	if s.Filters != nil && len(s.Filters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Filters", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *SearchDataSetsInput) SetAwsAccountId(v string) *SearchDataSetsInput {
	s.AwsAccountId = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *SearchDataSetsInput) SetFilters(v []*DataSetSearchFilter) *SearchDataSetsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchDataSetsInput) SetMaxResults(v int64) *SearchDataSetsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchDataSetsInput) SetNextToken(v string) *SearchDataSetsInput {
	s.NextToken = &v
	return s
}

type SearchDataSetsOutput struct {
	_ struct{} `type:"structure"`

	// A DataSetSummaries object that returns a summary of a dataset.
	DataSetSummaries []*DataSetSummary `type:"list"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 SearchDataSetsOutput) 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 SearchDataSetsOutput) GoString() string {
	return s.String()
}

// SetDataSetSummaries sets the DataSetSummaries field's value.
func (s *SearchDataSetsOutput) SetDataSetSummaries(v []*DataSetSummary) *SearchDataSetsOutput {
	s.DataSetSummaries = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchDataSetsOutput) SetNextToken(v string) *SearchDataSetsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *SearchDataSetsOutput) SetRequestId(v string) *SearchDataSetsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *SearchDataSetsOutput) SetStatus(v int64) *SearchDataSetsOutput {
	s.Status = &v
	return s
}

type SearchDataSourcesInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The filters to apply to the search.
	//
	// Filters is a required field
	Filters []*DataSourceSearchFilter `min:"1" type:"list" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `min:"1" type:"integer"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchDataSourcesInput) 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 SearchDataSourcesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchDataSourcesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchDataSourcesInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Filters == nil {
		invalidParams.Add(request.NewErrParamRequired("Filters"))
	}
	if s.Filters != nil && len(s.Filters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Filters", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *SearchDataSourcesInput) SetAwsAccountId(v string) *SearchDataSourcesInput {
	s.AwsAccountId = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *SearchDataSourcesInput) SetFilters(v []*DataSourceSearchFilter) *SearchDataSourcesInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchDataSourcesInput) SetMaxResults(v int64) *SearchDataSourcesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchDataSourcesInput) SetNextToken(v string) *SearchDataSourcesInput {
	s.NextToken = &v
	return s
}

type SearchDataSourcesOutput struct {
	_ struct{} `type:"structure"`

	// A DataSourceSummaries object that returns a summary of a data source.
	DataSourceSummaries []*DataSourceSummary `type:"list"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 SearchDataSourcesOutput) 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 SearchDataSourcesOutput) GoString() string {
	return s.String()
}

// SetDataSourceSummaries sets the DataSourceSummaries field's value.
func (s *SearchDataSourcesOutput) SetDataSourceSummaries(v []*DataSourceSummary) *SearchDataSourcesOutput {
	s.DataSourceSummaries = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchDataSourcesOutput) SetNextToken(v string) *SearchDataSourcesOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *SearchDataSourcesOutput) SetRequestId(v string) *SearchDataSourcesOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *SearchDataSourcesOutput) SetStatus(v int64) *SearchDataSourcesOutput {
	s.Status = &v
	return s
}

type SearchFoldersInput struct {
	_ struct{} `type:"structure"`

	// The ID for the Amazon Web Services account that contains the folder.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The filters to apply to the search. Currently, you can search only by the
	// parent folder ARN. For example, "Filters": [ { "Name": "PARENT_FOLDER_ARN",
	// "Operator": "StringEquals", "Value": "arn:aws:quicksight:us-east-1:1:folder/folderId"
	// } ].
	//
	// Filters is a required field
	Filters []*FolderSearchFilter `type:"list" required:"true"`

	// The maximum number of results to be returned per request.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchFoldersInput) 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 SearchFoldersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchFoldersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchFoldersInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Filters == nil {
		invalidParams.Add(request.NewErrParamRequired("Filters"))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *SearchFoldersInput) SetAwsAccountId(v string) *SearchFoldersInput {
	s.AwsAccountId = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *SearchFoldersInput) SetFilters(v []*FolderSearchFilter) *SearchFoldersInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchFoldersInput) SetMaxResults(v int64) *SearchFoldersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchFoldersInput) SetNextToken(v string) *SearchFoldersInput {
	s.NextToken = &v
	return s
}

type SearchFoldersOutput struct {
	_ struct{} `type:"structure"`

	// A structure that contains all of the folders in the Amazon Web Services account.
	// This structure provides basic information about the folders.
	FolderSummaryList []*FolderSummary `type:"list"`

	// The token for the next set of results, or null if there are no more results.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 SearchFoldersOutput) 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 SearchFoldersOutput) GoString() string {
	return s.String()
}

// SetFolderSummaryList sets the FolderSummaryList field's value.
func (s *SearchFoldersOutput) SetFolderSummaryList(v []*FolderSummary) *SearchFoldersOutput {
	s.FolderSummaryList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchFoldersOutput) SetNextToken(v string) *SearchFoldersOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *SearchFoldersOutput) SetRequestId(v string) *SearchFoldersOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *SearchFoldersOutput) SetStatus(v int64) *SearchFoldersOutput {
	s.Status = &v
	return s
}

type SearchGroupsInput struct {
	_ struct{} `type:"structure"`

	// The ID for the Amazon Web Services account that the group is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The structure for the search filters that you want to apply to your search.
	//
	// Filters is a required field
	Filters []*GroupSearchFilter `min:"1" type:"list" required:"true"`

	// The maximum number of results to return from this request.
	MaxResults *int64 `location:"querystring" locationName:"max-results" min:"1" type:"integer"`

	// The namespace that you want to search.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `location:"querystring" locationName:"next-token" 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 SearchGroupsInput) 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 SearchGroupsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchGroupsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchGroupsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Filters == nil {
		invalidParams.Add(request.NewErrParamRequired("Filters"))
	}
	if s.Filters != nil && len(s.Filters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Filters", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *SearchGroupsInput) SetAwsAccountId(v string) *SearchGroupsInput {
	s.AwsAccountId = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *SearchGroupsInput) SetFilters(v []*GroupSearchFilter) *SearchGroupsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchGroupsInput) SetMaxResults(v int64) *SearchGroupsInput {
	s.MaxResults = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *SearchGroupsInput) SetNamespace(v string) *SearchGroupsInput {
	s.Namespace = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchGroupsInput) SetNextToken(v string) *SearchGroupsInput {
	s.NextToken = &v
	return s
}

type SearchGroupsOutput struct {
	_ struct{} `type:"structure"`

	// A list of groups in a specified namespace that match the filters you set
	// in your SearchGroups request.
	GroupList []*Group `type:"list"`

	// A pagination token that can be used in a subsequent request.
	NextToken *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 SearchGroupsOutput) 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 SearchGroupsOutput) GoString() string {
	return s.String()
}

// SetGroupList sets the GroupList field's value.
func (s *SearchGroupsOutput) SetGroupList(v []*Group) *SearchGroupsOutput {
	s.GroupList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchGroupsOutput) SetNextToken(v string) *SearchGroupsOutput {
	s.NextToken = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *SearchGroupsOutput) SetRequestId(v string) *SearchGroupsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *SearchGroupsOutput) SetStatus(v int64) *SearchGroupsOutput {
	s.Status = &v
	return s
}

// The options that determine the presentation of the secondary value of a KPI
// visual.
type SecondaryValueOptions struct {
	_ struct{} `type:"structure"`

	// Determines the visibility of the secondary value.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 SecondaryValueOptions) 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 SecondaryValueOptions) GoString() string {
	return s.String()
}

// SetVisibility sets the Visibility field's value.
func (s *SecondaryValueOptions) SetVisibility(v string) *SecondaryValueOptions {
	s.Visibility = &v
	return s
}

// The configuration of a page break after a section.
type SectionAfterPageBreak struct {
	_ struct{} `type:"structure"`

	// The option that enables or disables a page break at the end of a section.
	Status *string `type:"string" enum:"SectionPageBreakStatus"`
}

// 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 SectionAfterPageBreak) 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 SectionAfterPageBreak) GoString() string {
	return s.String()
}

// SetStatus sets the Status field's value.
func (s *SectionAfterPageBreak) SetStatus(v string) *SectionAfterPageBreak {
	s.Status = &v
	return s
}

// The options for the canvas of a section-based layout.
type SectionBasedLayoutCanvasSizeOptions struct {
	_ struct{} `type:"structure"`

	// The options for a paper canvas of a section-based layout.
	PaperCanvasSizeOptions *SectionBasedLayoutPaperCanvasSizeOptions `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 SectionBasedLayoutCanvasSizeOptions) 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 SectionBasedLayoutCanvasSizeOptions) GoString() string {
	return s.String()
}

// SetPaperCanvasSizeOptions sets the PaperCanvasSizeOptions field's value.
func (s *SectionBasedLayoutCanvasSizeOptions) SetPaperCanvasSizeOptions(v *SectionBasedLayoutPaperCanvasSizeOptions) *SectionBasedLayoutCanvasSizeOptions {
	s.PaperCanvasSizeOptions = v
	return s
}

// The configuration for a section-based layout.
type SectionBasedLayoutConfiguration struct {
	_ struct{} `type:"structure"`

	// A list of body section configurations.
	//
	// BodySections is a required field
	BodySections []*BodySectionConfiguration `type:"list" required:"true"`

	// The options for the canvas of a section-based layout.
	//
	// CanvasSizeOptions is a required field
	CanvasSizeOptions *SectionBasedLayoutCanvasSizeOptions `type:"structure" required:"true"`

	// A list of footer section configurations.
	//
	// FooterSections is a required field
	FooterSections []*HeaderFooterSectionConfiguration `type:"list" required:"true"`

	// A list of header section configurations.
	//
	// HeaderSections is a required field
	HeaderSections []*HeaderFooterSectionConfiguration `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 SectionBasedLayoutConfiguration) 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 SectionBasedLayoutConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SectionBasedLayoutConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SectionBasedLayoutConfiguration"}
	if s.BodySections == nil {
		invalidParams.Add(request.NewErrParamRequired("BodySections"))
	}
	if s.CanvasSizeOptions == nil {
		invalidParams.Add(request.NewErrParamRequired("CanvasSizeOptions"))
	}
	if s.FooterSections == nil {
		invalidParams.Add(request.NewErrParamRequired("FooterSections"))
	}
	if s.HeaderSections == nil {
		invalidParams.Add(request.NewErrParamRequired("HeaderSections"))
	}
	if s.BodySections != nil {
		for i, v := range s.BodySections {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "BodySections", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.FooterSections != nil {
		for i, v := range s.FooterSections {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "FooterSections", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.HeaderSections != nil {
		for i, v := range s.HeaderSections {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "HeaderSections", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBodySections sets the BodySections field's value.
func (s *SectionBasedLayoutConfiguration) SetBodySections(v []*BodySectionConfiguration) *SectionBasedLayoutConfiguration {
	s.BodySections = v
	return s
}

// SetCanvasSizeOptions sets the CanvasSizeOptions field's value.
func (s *SectionBasedLayoutConfiguration) SetCanvasSizeOptions(v *SectionBasedLayoutCanvasSizeOptions) *SectionBasedLayoutConfiguration {
	s.CanvasSizeOptions = v
	return s
}

// SetFooterSections sets the FooterSections field's value.
func (s *SectionBasedLayoutConfiguration) SetFooterSections(v []*HeaderFooterSectionConfiguration) *SectionBasedLayoutConfiguration {
	s.FooterSections = v
	return s
}

// SetHeaderSections sets the HeaderSections field's value.
func (s *SectionBasedLayoutConfiguration) SetHeaderSections(v []*HeaderFooterSectionConfiguration) *SectionBasedLayoutConfiguration {
	s.HeaderSections = v
	return s
}

// The options for a paper canvas of a section-based layout.
type SectionBasedLayoutPaperCanvasSizeOptions struct {
	_ struct{} `type:"structure"`

	// Defines the spacing between the canvas content and the top, bottom, left,
	// and right edges.
	PaperMargin *Spacing `type:"structure"`

	// The paper orientation that is used to define canvas dimensions. Choose one
	// of the following options:
	//
	//    * PORTRAIT
	//
	//    * LANDSCAPE
	PaperOrientation *string `type:"string" enum:"PaperOrientation"`

	// The paper size that is used to define canvas dimensions.
	PaperSize *string `type:"string" enum:"PaperSize"`
}

// 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 SectionBasedLayoutPaperCanvasSizeOptions) 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 SectionBasedLayoutPaperCanvasSizeOptions) GoString() string {
	return s.String()
}

// SetPaperMargin sets the PaperMargin field's value.
func (s *SectionBasedLayoutPaperCanvasSizeOptions) SetPaperMargin(v *Spacing) *SectionBasedLayoutPaperCanvasSizeOptions {
	s.PaperMargin = v
	return s
}

// SetPaperOrientation sets the PaperOrientation field's value.
func (s *SectionBasedLayoutPaperCanvasSizeOptions) SetPaperOrientation(v string) *SectionBasedLayoutPaperCanvasSizeOptions {
	s.PaperOrientation = &v
	return s
}

// SetPaperSize sets the PaperSize field's value.
func (s *SectionBasedLayoutPaperCanvasSizeOptions) SetPaperSize(v string) *SectionBasedLayoutPaperCanvasSizeOptions {
	s.PaperSize = &v
	return s
}

// The layout configuration of a section.
type SectionLayoutConfiguration struct {
	_ struct{} `type:"structure"`

	// The free-form layout configuration of a section.
	//
	// FreeFormLayout is a required field
	FreeFormLayout *FreeFormSectionLayoutConfiguration `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 SectionLayoutConfiguration) 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 SectionLayoutConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SectionLayoutConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SectionLayoutConfiguration"}
	if s.FreeFormLayout == nil {
		invalidParams.Add(request.NewErrParamRequired("FreeFormLayout"))
	}
	if s.FreeFormLayout != nil {
		if err := s.FreeFormLayout.Validate(); err != nil {
			invalidParams.AddNested("FreeFormLayout", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFreeFormLayout sets the FreeFormLayout field's value.
func (s *SectionLayoutConfiguration) SetFreeFormLayout(v *FreeFormSectionLayoutConfiguration) *SectionLayoutConfiguration {
	s.FreeFormLayout = v
	return s
}

// The configuration of a page break for a section.
type SectionPageBreakConfiguration struct {
	_ struct{} `type:"structure"`

	// The configuration of a page break after a section.
	After *SectionAfterPageBreak `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 SectionPageBreakConfiguration) 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 SectionPageBreakConfiguration) GoString() string {
	return s.String()
}

// SetAfter sets the After field's value.
func (s *SectionPageBreakConfiguration) SetAfter(v *SectionAfterPageBreak) *SectionPageBreakConfiguration {
	s.After = v
	return s
}

// The options that style a section.
type SectionStyle struct {
	_ struct{} `type:"structure"`

	// The height of a section.
	//
	// Heights can only be defined for header and footer sections. The default height
	// margin is 0.5 inches.
	Height *string `type:"string"`

	// The spacing between section content and its top, bottom, left, and right
	// edges.
	//
	// There is no padding by default.
	Padding *Spacing `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 SectionStyle) 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 SectionStyle) GoString() string {
	return s.String()
}

// SetHeight sets the Height field's value.
func (s *SectionStyle) SetHeight(v string) *SectionStyle {
	s.Height = &v
	return s
}

// SetPadding sets the Padding field's value.
func (s *SectionStyle) SetPadding(v *Spacing) *SectionStyle {
	s.Padding = v
	return s
}

// The configuration for applying a filter to specific sheets or visuals. You
// can apply this filter to multiple visuals that are on one sheet or to all
// visuals on a sheet.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type SelectedSheetsFilterScopeConfiguration struct {
	_ struct{} `type:"structure"`

	// The sheet ID and visual IDs of the sheet and visuals that the filter is applied
	// to.
	SheetVisualScopingConfigurations []*SheetVisualScopingConfiguration `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SelectedSheetsFilterScopeConfiguration) 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 SelectedSheetsFilterScopeConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SelectedSheetsFilterScopeConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SelectedSheetsFilterScopeConfiguration"}
	if s.SheetVisualScopingConfigurations != nil && len(s.SheetVisualScopingConfigurations) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SheetVisualScopingConfigurations", 1))
	}
	if s.SheetVisualScopingConfigurations != nil {
		for i, v := range s.SheetVisualScopingConfigurations {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SheetVisualScopingConfigurations", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSheetVisualScopingConfigurations sets the SheetVisualScopingConfigurations field's value.
func (s *SelectedSheetsFilterScopeConfiguration) SetSheetVisualScopingConfigurations(v []*SheetVisualScopingConfiguration) *SelectedSheetsFilterScopeConfiguration {
	s.SheetVisualScopingConfigurations = v
	return s
}

// A structure that represents a semantic entity type.
type SemanticEntityType struct {
	_ struct{} `type:"structure"`

	// The semantic entity sub type name.
	SubTypeName *string `type:"string"`

	// The semantic entity type name.
	TypeName *string `type:"string"`

	// The semantic entity type parameters.
	TypeParameters map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SemanticEntityType) 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 SemanticEntityType) GoString() string {
	return s.String()
}

// SetSubTypeName sets the SubTypeName field's value.
func (s *SemanticEntityType) SetSubTypeName(v string) *SemanticEntityType {
	s.SubTypeName = &v
	return s
}

// SetTypeName sets the TypeName field's value.
func (s *SemanticEntityType) SetTypeName(v string) *SemanticEntityType {
	s.TypeName = &v
	return s
}

// SetTypeParameters sets the TypeParameters field's value.
func (s *SemanticEntityType) SetTypeParameters(v map[string]*string) *SemanticEntityType {
	s.TypeParameters = v
	return s
}

// A structure that represents a semantic type.
type SemanticType struct {
	_ struct{} `type:"structure"`

	// The semantic type falsey cell value.
	//
	// FalseyCellValue is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SemanticType's
	// String and GoString methods.
	FalseyCellValue *string `type:"string" sensitive:"true"`

	// The other names or aliases for the false cell value.
	FalseyCellValueSynonyms []*string `type:"list" sensitive:"true"`

	// The semantic type sub type name.
	SubTypeName *string `type:"string"`

	// The semantic type truthy cell value.
	//
	// TruthyCellValue is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SemanticType's
	// String and GoString methods.
	TruthyCellValue *string `type:"string" sensitive:"true"`

	// The other names or aliases for the true cell value.
	TruthyCellValueSynonyms []*string `type:"list" sensitive:"true"`

	// The semantic type name.
	TypeName *string `type:"string"`

	// The semantic type parameters.
	TypeParameters map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SemanticType) 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 SemanticType) GoString() string {
	return s.String()
}

// SetFalseyCellValue sets the FalseyCellValue field's value.
func (s *SemanticType) SetFalseyCellValue(v string) *SemanticType {
	s.FalseyCellValue = &v
	return s
}

// SetFalseyCellValueSynonyms sets the FalseyCellValueSynonyms field's value.
func (s *SemanticType) SetFalseyCellValueSynonyms(v []*string) *SemanticType {
	s.FalseyCellValueSynonyms = v
	return s
}

// SetSubTypeName sets the SubTypeName field's value.
func (s *SemanticType) SetSubTypeName(v string) *SemanticType {
	s.SubTypeName = &v
	return s
}

// SetTruthyCellValue sets the TruthyCellValue field's value.
func (s *SemanticType) SetTruthyCellValue(v string) *SemanticType {
	s.TruthyCellValue = &v
	return s
}

// SetTruthyCellValueSynonyms sets the TruthyCellValueSynonyms field's value.
func (s *SemanticType) SetTruthyCellValueSynonyms(v []*string) *SemanticType {
	s.TruthyCellValueSynonyms = v
	return s
}

// SetTypeName sets the TypeName field's value.
func (s *SemanticType) SetTypeName(v string) *SemanticType {
	s.TypeName = &v
	return s
}

// SetTypeParameters sets the TypeParameters field's value.
func (s *SemanticType) SetTypeParameters(v map[string]*string) *SemanticType {
	s.TypeParameters = v
	return s
}

// The series item configuration of a line chart.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type SeriesItem struct {
	_ struct{} `type:"structure"`

	// The data field series item configuration of a line chart.
	DataFieldSeriesItem *DataFieldSeriesItem `type:"structure"`

	// The field series item configuration of a line chart.
	FieldSeriesItem *FieldSeriesItem `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 SeriesItem) 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 SeriesItem) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SeriesItem) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SeriesItem"}
	if s.DataFieldSeriesItem != nil {
		if err := s.DataFieldSeriesItem.Validate(); err != nil {
			invalidParams.AddNested("DataFieldSeriesItem", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldSeriesItem != nil {
		if err := s.FieldSeriesItem.Validate(); err != nil {
			invalidParams.AddNested("FieldSeriesItem", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataFieldSeriesItem sets the DataFieldSeriesItem field's value.
func (s *SeriesItem) SetDataFieldSeriesItem(v *DataFieldSeriesItem) *SeriesItem {
	s.DataFieldSeriesItem = v
	return s
}

// SetFieldSeriesItem sets the FieldSeriesItem field's value.
func (s *SeriesItem) SetFieldSeriesItem(v *FieldSeriesItem) *SeriesItem {
	s.FieldSeriesItem = v
	return s
}

// The parameters for ServiceNow.
type ServiceNowParameters struct {
	_ struct{} `type:"structure"`

	// URL of the base site.
	//
	// SiteBaseUrl is a required field
	SiteBaseUrl *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceNowParameters) 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 ServiceNowParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ServiceNowParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ServiceNowParameters"}
	if s.SiteBaseUrl == nil {
		invalidParams.Add(request.NewErrParamRequired("SiteBaseUrl"))
	}
	if s.SiteBaseUrl != nil && len(*s.SiteBaseUrl) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SiteBaseUrl", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSiteBaseUrl sets the SiteBaseUrl field's value.
func (s *ServiceNowParameters) SetSiteBaseUrl(v string) *ServiceNowParameters {
	s.SiteBaseUrl = &v
	return s
}

// The number of minutes specified for the lifetime of a session isn't valid.
// The session lifetime must be 15-600 minutes.
type SessionLifetimeInMinutesInvalidException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SessionLifetimeInMinutesInvalidException) 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 SessionLifetimeInMinutesInvalidException) GoString() string {
	return s.String()
}

func newErrorSessionLifetimeInMinutesInvalidException(v protocol.ResponseMetadata) error {
	return &SessionLifetimeInMinutesInvalidException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *SessionLifetimeInMinutesInvalidException) Code() string {
	return "SessionLifetimeInMinutesInvalidException"
}

// Message returns the exception's message.
func (s *SessionLifetimeInMinutesInvalidException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *SessionLifetimeInMinutesInvalidException) OrigErr() error {
	return nil
}

func (s *SessionLifetimeInMinutesInvalidException) 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 *SessionLifetimeInMinutesInvalidException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *SessionLifetimeInMinutesInvalidException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The key-value pair used for the row-level security tags feature.
type SessionTag struct {
	_ struct{} `type:"structure"`

	// The key for the tag.
	//
	// Key is a required field
	Key *string `min:"1" type:"string" required:"true"`

	// The value that you want to assign the tag.
	//
	// Value is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SessionTag's
	// String and GoString methods.
	//
	// Value is a required field
	Value *string `min:"1" type:"string" required:"true" sensitive:"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 SessionTag) 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 SessionTag) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SessionTag) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SessionTag"}
	if s.Key == nil {
		invalidParams.Add(request.NewErrParamRequired("Key"))
	}
	if s.Key != nil && len(*s.Key) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}
	if s.Value != nil && len(*s.Value) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *SessionTag) SetKey(v string) *SessionTag {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *SessionTag) SetValue(v string) *SessionTag {
	s.Value = &v
	return s
}

// The configuration of adding parameters in action.
type SetParameterValueConfiguration struct {
	_ struct{} `type:"structure"`

	// The destination parameter name of the SetParameterValueConfiguration.
	//
	// DestinationParameterName is a required field
	DestinationParameterName *string `min:"1" type:"string" required:"true"`

	// The configuration of destination parameter values.
	//
	// This is a union type structure. For this structure to be valid, only one
	// of the attributes can be defined.
	//
	// Value is a required field
	Value *DestinationParameterValueConfiguration `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 SetParameterValueConfiguration) 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 SetParameterValueConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SetParameterValueConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SetParameterValueConfiguration"}
	if s.DestinationParameterName == nil {
		invalidParams.Add(request.NewErrParamRequired("DestinationParameterName"))
	}
	if s.DestinationParameterName != nil && len(*s.DestinationParameterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DestinationParameterName", 1))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}
	if s.Value != nil {
		if err := s.Value.Validate(); err != nil {
			invalidParams.AddNested("Value", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDestinationParameterName sets the DestinationParameterName field's value.
func (s *SetParameterValueConfiguration) SetDestinationParameterName(v string) *SetParameterValueConfiguration {
	s.DestinationParameterName = &v
	return s
}

// SetValue sets the Value field's value.
func (s *SetParameterValueConfiguration) SetValue(v *DestinationParameterValueConfiguration) *SetParameterValueConfiguration {
	s.Value = v
	return s
}

// The shape conditional formatting of a filled map visual.
type ShapeConditionalFormat struct {
	_ struct{} `type:"structure"`

	// The conditional formatting for the shape background color of a filled map
	// visual.
	//
	// BackgroundColor is a required field
	BackgroundColor *ConditionalFormattingColor `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 ShapeConditionalFormat) 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 ShapeConditionalFormat) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ShapeConditionalFormat) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ShapeConditionalFormat"}
	if s.BackgroundColor == nil {
		invalidParams.Add(request.NewErrParamRequired("BackgroundColor"))
	}
	if s.BackgroundColor != nil {
		if err := s.BackgroundColor.Validate(); err != nil {
			invalidParams.AddNested("BackgroundColor", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBackgroundColor sets the BackgroundColor field's value.
func (s *ShapeConditionalFormat) SetBackgroundColor(v *ConditionalFormattingColor) *ShapeConditionalFormat {
	s.BackgroundColor = v
	return s
}

// A sheet, which is an object that contains a set of visuals that are viewed
// together on one page in Amazon QuickSight. Every analysis and dashboard contains
// at least one sheet. Each sheet contains at least one visualization widget,
// for example a chart, pivot table, or narrative insight. Sheets can be associated
// with other components, such as controls, filters, and so on.
type Sheet struct {
	_ struct{} `type:"structure"`

	// The name of a sheet. This name is displayed on the sheet's tab in the Amazon
	// QuickSight console.
	Name *string `min:"1" type:"string"`

	// The unique identifier associated with a sheet.
	SheetId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Sheet) 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 Sheet) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *Sheet) SetName(v string) *Sheet {
	s.Name = &v
	return s
}

// SetSheetId sets the SheetId field's value.
func (s *Sheet) SetSheetId(v string) *Sheet {
	s.SheetId = &v
	return s
}

// A control to display info icons for filters and parameters.
type SheetControlInfoIconLabelOptions struct {
	_ struct{} `type:"structure"`

	// The text content of info icon.
	InfoIconText *string `min:"1" type:"string"`

	// The visibility configuration of info icon label options.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 SheetControlInfoIconLabelOptions) 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 SheetControlInfoIconLabelOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SheetControlInfoIconLabelOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SheetControlInfoIconLabelOptions"}
	if s.InfoIconText != nil && len(*s.InfoIconText) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("InfoIconText", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInfoIconText sets the InfoIconText field's value.
func (s *SheetControlInfoIconLabelOptions) SetInfoIconText(v string) *SheetControlInfoIconLabelOptions {
	s.InfoIconText = &v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *SheetControlInfoIconLabelOptions) SetVisibility(v string) *SheetControlInfoIconLabelOptions {
	s.Visibility = &v
	return s
}

// A grid layout to define the placement of sheet control.
type SheetControlLayout struct {
	_ struct{} `type:"structure"`

	// The configuration that determines the elements and canvas size options of
	// sheet control.
	//
	// Configuration is a required field
	Configuration *SheetControlLayoutConfiguration `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 SheetControlLayout) 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 SheetControlLayout) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SheetControlLayout) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SheetControlLayout"}
	if s.Configuration == nil {
		invalidParams.Add(request.NewErrParamRequired("Configuration"))
	}
	if s.Configuration != nil {
		if err := s.Configuration.Validate(); err != nil {
			invalidParams.AddNested("Configuration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConfiguration sets the Configuration field's value.
func (s *SheetControlLayout) SetConfiguration(v *SheetControlLayoutConfiguration) *SheetControlLayout {
	s.Configuration = v
	return s
}

// The configuration that determines the elements and canvas size options of
// sheet control.
type SheetControlLayoutConfiguration struct {
	_ struct{} `type:"structure"`

	// The configuration that determines the elements and canvas size options of
	// sheet control.
	GridLayout *GridLayoutConfiguration `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 SheetControlLayoutConfiguration) 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 SheetControlLayoutConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SheetControlLayoutConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SheetControlLayoutConfiguration"}
	if s.GridLayout != nil {
		if err := s.GridLayout.Validate(); err != nil {
			invalidParams.AddNested("GridLayout", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetGridLayout sets the GridLayout field's value.
func (s *SheetControlLayoutConfiguration) SetGridLayout(v *GridLayoutConfiguration) *SheetControlLayoutConfiguration {
	s.GridLayout = v
	return s
}

// Sheet controls option.
type SheetControlsOption struct {
	_ struct{} `type:"structure"`

	// Visibility state.
	VisibilityState *string `type:"string" enum:"DashboardUIState"`
}

// 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 SheetControlsOption) 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 SheetControlsOption) GoString() string {
	return s.String()
}

// SetVisibilityState sets the VisibilityState field's value.
func (s *SheetControlsOption) SetVisibilityState(v string) *SheetControlsOption {
	s.VisibilityState = &v
	return s
}

// A sheet is an object that contains a set of visuals that are viewed together
// on one page in a paginated report. Every analysis and dashboard must contain
// at least one sheet.
type SheetDefinition struct {
	_ struct{} `type:"structure"`

	// The layout content type of the sheet. Choose one of the following options:
	//
	//    * PAGINATED: Creates a sheet for a paginated report.
	//
	//    * INTERACTIVE: Creates a sheet for an interactive dashboard.
	ContentType *string `type:"string" enum:"SheetContentType"`

	// A description of the sheet.
	Description *string `min:"1" type:"string"`

	// The list of filter controls that are on a sheet.
	//
	// For more information, see Adding filter controls to analysis sheets (https://docs.aws.amazon.com/quicksight/latest/user/filter-controls.html)
	// in the Amazon QuickSight User Guide.
	FilterControls []*FilterControl `type:"list"`

	// Layouts define how the components of a sheet are arranged.
	//
	// For more information, see Types of layout (https://docs.aws.amazon.com/quicksight/latest/user/types-of-layout.html)
	// in the Amazon QuickSight User Guide.
	Layouts []*Layout `min:"1" type:"list"`

	// The name of the sheet. This name is displayed on the sheet's tab in the Amazon
	// QuickSight console.
	Name *string `min:"1" type:"string"`

	// The list of parameter controls that are on a sheet.
	//
	// For more information, see Using a Control with a Parameter in Amazon QuickSight
	// (https://docs.aws.amazon.com/quicksight/latest/user/parameters-controls.html)
	// in the Amazon QuickSight User Guide.
	ParameterControls []*ParameterControl `type:"list"`

	// The control layouts of the sheet.
	SheetControlLayouts []*SheetControlLayout `type:"list"`

	// The unique identifier of a sheet.
	//
	// SheetId is a required field
	SheetId *string `min:"1" type:"string" required:"true"`

	// The text boxes that are on a sheet.
	TextBoxes []*SheetTextBox `type:"list"`

	// The title of the sheet.
	Title *string `min:"1" type:"string"`

	// A list of the visuals that are on a sheet. Visual placement is determined
	// by the layout of the sheet.
	Visuals []*Visual `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 SheetDefinition) 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 SheetDefinition) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SheetDefinition) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SheetDefinition"}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.Layouts != nil && len(s.Layouts) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Layouts", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.SheetId == nil {
		invalidParams.Add(request.NewErrParamRequired("SheetId"))
	}
	if s.SheetId != nil && len(*s.SheetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SheetId", 1))
	}
	if s.Title != nil && len(*s.Title) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Title", 1))
	}
	if s.FilterControls != nil {
		for i, v := range s.FilterControls {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "FilterControls", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Layouts != nil {
		for i, v := range s.Layouts {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Layouts", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ParameterControls != nil {
		for i, v := range s.ParameterControls {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ParameterControls", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.SheetControlLayouts != nil {
		for i, v := range s.SheetControlLayouts {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SheetControlLayouts", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.TextBoxes != nil {
		for i, v := range s.TextBoxes {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TextBoxes", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Visuals != nil {
		for i, v := range s.Visuals {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Visuals", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContentType sets the ContentType field's value.
func (s *SheetDefinition) SetContentType(v string) *SheetDefinition {
	s.ContentType = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *SheetDefinition) SetDescription(v string) *SheetDefinition {
	s.Description = &v
	return s
}

// SetFilterControls sets the FilterControls field's value.
func (s *SheetDefinition) SetFilterControls(v []*FilterControl) *SheetDefinition {
	s.FilterControls = v
	return s
}

// SetLayouts sets the Layouts field's value.
func (s *SheetDefinition) SetLayouts(v []*Layout) *SheetDefinition {
	s.Layouts = v
	return s
}

// SetName sets the Name field's value.
func (s *SheetDefinition) SetName(v string) *SheetDefinition {
	s.Name = &v
	return s
}

// SetParameterControls sets the ParameterControls field's value.
func (s *SheetDefinition) SetParameterControls(v []*ParameterControl) *SheetDefinition {
	s.ParameterControls = v
	return s
}

// SetSheetControlLayouts sets the SheetControlLayouts field's value.
func (s *SheetDefinition) SetSheetControlLayouts(v []*SheetControlLayout) *SheetDefinition {
	s.SheetControlLayouts = v
	return s
}

// SetSheetId sets the SheetId field's value.
func (s *SheetDefinition) SetSheetId(v string) *SheetDefinition {
	s.SheetId = &v
	return s
}

// SetTextBoxes sets the TextBoxes field's value.
func (s *SheetDefinition) SetTextBoxes(v []*SheetTextBox) *SheetDefinition {
	s.TextBoxes = v
	return s
}

// SetTitle sets the Title field's value.
func (s *SheetDefinition) SetTitle(v string) *SheetDefinition {
	s.Title = &v
	return s
}

// SetVisuals sets the Visuals field's value.
func (s *SheetDefinition) SetVisuals(v []*Visual) *SheetDefinition {
	s.Visuals = v
	return s
}

// The override configuration of the rendering rules of a sheet.
type SheetElementConfigurationOverrides struct {
	_ struct{} `type:"structure"`

	// Determines whether or not the overrides are visible. Choose one of the following
	// options:
	//
	//    * VISIBLE
	//
	//    * HIDDEN
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 SheetElementConfigurationOverrides) 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 SheetElementConfigurationOverrides) GoString() string {
	return s.String()
}

// SetVisibility sets the Visibility field's value.
func (s *SheetElementConfigurationOverrides) SetVisibility(v string) *SheetElementConfigurationOverrides {
	s.Visibility = &v
	return s
}

// The rendering rules of a sheet that uses a free-form layout.
type SheetElementRenderingRule struct {
	_ struct{} `type:"structure"`

	// The override configuration of the rendering rules of a sheet.
	//
	// ConfigurationOverrides is a required field
	ConfigurationOverrides *SheetElementConfigurationOverrides `type:"structure" required:"true"`

	// The expression of the rendering rules of a sheet.
	//
	// Expression is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SheetElementRenderingRule's
	// String and GoString methods.
	//
	// Expression is a required field
	Expression *string `min:"1" type:"string" required:"true" sensitive:"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 SheetElementRenderingRule) 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 SheetElementRenderingRule) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SheetElementRenderingRule) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SheetElementRenderingRule"}
	if s.ConfigurationOverrides == nil {
		invalidParams.Add(request.NewErrParamRequired("ConfigurationOverrides"))
	}
	if s.Expression == nil {
		invalidParams.Add(request.NewErrParamRequired("Expression"))
	}
	if s.Expression != nil && len(*s.Expression) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Expression", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConfigurationOverrides sets the ConfigurationOverrides field's value.
func (s *SheetElementRenderingRule) SetConfigurationOverrides(v *SheetElementConfigurationOverrides) *SheetElementRenderingRule {
	s.ConfigurationOverrides = v
	return s
}

// SetExpression sets the Expression field's value.
func (s *SheetElementRenderingRule) SetExpression(v string) *SheetElementRenderingRule {
	s.Expression = &v
	return s
}

// The sheet layout maximization options of a dashbaord.
type SheetLayoutElementMaximizationOption struct {
	_ struct{} `type:"structure"`

	// The status of the sheet layout maximization options of a dashbaord.
	AvailabilityStatus *string `type:"string" enum:"DashboardBehavior"`
}

// 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 SheetLayoutElementMaximizationOption) 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 SheetLayoutElementMaximizationOption) GoString() string {
	return s.String()
}

// SetAvailabilityStatus sets the AvailabilityStatus field's value.
func (s *SheetLayoutElementMaximizationOption) SetAvailabilityStatus(v string) *SheetLayoutElementMaximizationOption {
	s.AvailabilityStatus = &v
	return s
}

// The theme display options for sheets.
type SheetStyle struct {
	_ struct{} `type:"structure"`

	// The display options for tiles.
	Tile *TileStyle `type:"structure"`

	// The layout options for tiles.
	TileLayout *TileLayoutStyle `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 SheetStyle) 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 SheetStyle) GoString() string {
	return s.String()
}

// SetTile sets the Tile field's value.
func (s *SheetStyle) SetTile(v *TileStyle) *SheetStyle {
	s.Tile = v
	return s
}

// SetTileLayout sets the TileLayout field's value.
func (s *SheetStyle) SetTileLayout(v *TileLayoutStyle) *SheetStyle {
	s.TileLayout = v
	return s
}

// A text box.
type SheetTextBox struct {
	_ struct{} `type:"structure"`

	// The content that is displayed in the text box.
	Content *string `type:"string"`

	// The unique identifier for a text box. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have text boxes that share identifiers.
	//
	// SheetTextBoxId is a required field
	SheetTextBoxId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SheetTextBox) 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 SheetTextBox) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SheetTextBox) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SheetTextBox"}
	if s.SheetTextBoxId == nil {
		invalidParams.Add(request.NewErrParamRequired("SheetTextBoxId"))
	}
	if s.SheetTextBoxId != nil && len(*s.SheetTextBoxId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SheetTextBoxId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContent sets the Content field's value.
func (s *SheetTextBox) SetContent(v string) *SheetTextBox {
	s.Content = &v
	return s
}

// SetSheetTextBoxId sets the SheetTextBoxId field's value.
func (s *SheetTextBox) SetSheetTextBoxId(v string) *SheetTextBox {
	s.SheetTextBoxId = &v
	return s
}

// The filter that is applied to the options.
type SheetVisualScopingConfiguration struct {
	_ struct{} `type:"structure"`

	// The scope of the applied entities. Choose one of the following options:
	//
	//    * ALL_VISUALS
	//
	//    * SELECTED_VISUALS
	//
	// Scope is a required field
	Scope *string `type:"string" required:"true" enum:"FilterVisualScope"`

	// The selected sheet that the filter is applied to.
	//
	// SheetId is a required field
	SheetId *string `min:"1" type:"string" required:"true"`

	// The selected visuals that the filter is applied to.
	VisualIds []*string `type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SheetVisualScopingConfiguration) 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 SheetVisualScopingConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SheetVisualScopingConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SheetVisualScopingConfiguration"}
	if s.Scope == nil {
		invalidParams.Add(request.NewErrParamRequired("Scope"))
	}
	if s.SheetId == nil {
		invalidParams.Add(request.NewErrParamRequired("SheetId"))
	}
	if s.SheetId != nil && len(*s.SheetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SheetId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetScope sets the Scope field's value.
func (s *SheetVisualScopingConfiguration) SetScope(v string) *SheetVisualScopingConfiguration {
	s.Scope = &v
	return s
}

// SetSheetId sets the SheetId field's value.
func (s *SheetVisualScopingConfiguration) SetSheetId(v string) *SheetVisualScopingConfiguration {
	s.SheetId = &v
	return s
}

// SetVisualIds sets the VisualIds field's value.
func (s *SheetVisualScopingConfiguration) SetVisualIds(v []*string) *SheetVisualScopingConfiguration {
	s.VisualIds = v
	return s
}

// The text format for the title.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type ShortFormatText struct {
	_ struct{} `type:"structure"`

	// Plain text format.
	PlainText *string `min:"1" type:"string"`

	// Rich text. Examples of rich text include bold, underline, and italics.
	RichText *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ShortFormatText) 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 ShortFormatText) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ShortFormatText) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ShortFormatText"}
	if s.PlainText != nil && len(*s.PlainText) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PlainText", 1))
	}
	if s.RichText != nil && len(*s.RichText) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RichText", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPlainText sets the PlainText field's value.
func (s *ShortFormatText) SetPlainText(v string) *ShortFormatText {
	s.PlainText = &v
	return s
}

// SetRichText sets the RichText field's value.
func (s *ShortFormatText) SetRichText(v string) *ShortFormatText {
	s.RichText = &v
	return s
}

// A SignupResponse object that contains a summary of a newly created account.
type SignupResponse struct {
	_ struct{} `type:"structure"`

	// The name of your Amazon QuickSight account.
	AccountName *string `locationName:"accountName" type:"string"`

	// The type of Active Directory that is being used to authenticate the Amazon
	// QuickSight account. Valid values are SIMPLE_AD, AD_CONNECTOR, and MICROSOFT_AD.
	DirectoryType *string `locationName:"directoryType" type:"string"`

	// A Boolean that is TRUE if the Amazon QuickSight uses IAM as an authentication
	// method.
	IAMUser *bool `type:"boolean"`

	// The user login name for your Amazon QuickSight account.
	UserLoginName *string `locationName:"userLoginName" 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 SignupResponse) 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 SignupResponse) GoString() string {
	return s.String()
}

// SetAccountName sets the AccountName field's value.
func (s *SignupResponse) SetAccountName(v string) *SignupResponse {
	s.AccountName = &v
	return s
}

// SetDirectoryType sets the DirectoryType field's value.
func (s *SignupResponse) SetDirectoryType(v string) *SignupResponse {
	s.DirectoryType = &v
	return s
}

// SetIAMUser sets the IAMUser field's value.
func (s *SignupResponse) SetIAMUser(v bool) *SignupResponse {
	s.IAMUser = &v
	return s
}

// SetUserLoginName sets the UserLoginName field's value.
func (s *SignupResponse) SetUserLoginName(v string) *SignupResponse {
	s.UserLoginName = &v
	return s
}

// The simple cluster marker of the cluster marker.
type SimpleClusterMarker struct {
	_ struct{} `type:"structure"`

	// The color of the simple cluster marker.
	Color *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SimpleClusterMarker) 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 SimpleClusterMarker) GoString() string {
	return s.String()
}

// SetColor sets the Color field's value.
func (s *SimpleClusterMarker) SetColor(v string) *SimpleClusterMarker {
	s.Color = &v
	return s
}

// The settings of a chart's single axis configuration.
type SingleAxisOptions struct {
	_ struct{} `type:"structure"`

	// The Y axis options of a single axis configuration.
	YAxisOptions *YAxisOptions `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 SingleAxisOptions) 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 SingleAxisOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SingleAxisOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SingleAxisOptions"}
	if s.YAxisOptions != nil {
		if err := s.YAxisOptions.Validate(); err != nil {
			invalidParams.AddNested("YAxisOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetYAxisOptions sets the YAxisOptions field's value.
func (s *SingleAxisOptions) SetYAxisOptions(v *YAxisOptions) *SingleAxisOptions {
	s.YAxisOptions = v
	return s
}

// The display options of a control.
type SliderControlDisplayOptions struct {
	_ struct{} `type:"structure"`

	// The configuration of info icon label options.
	InfoIconLabelOptions *SheetControlInfoIconLabelOptions `type:"structure"`

	// The options to configure the title visibility, name, and font size.
	TitleOptions *LabelOptions `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 SliderControlDisplayOptions) 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 SliderControlDisplayOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SliderControlDisplayOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SliderControlDisplayOptions"}
	if s.InfoIconLabelOptions != nil {
		if err := s.InfoIconLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("InfoIconLabelOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInfoIconLabelOptions sets the InfoIconLabelOptions field's value.
func (s *SliderControlDisplayOptions) SetInfoIconLabelOptions(v *SheetControlInfoIconLabelOptions) *SliderControlDisplayOptions {
	s.InfoIconLabelOptions = v
	return s
}

// SetTitleOptions sets the TitleOptions field's value.
func (s *SliderControlDisplayOptions) SetTitleOptions(v *LabelOptions) *SliderControlDisplayOptions {
	s.TitleOptions = v
	return s
}

// The definition for the slot.
type Slot struct {
	_ struct{} `type:"structure"`

	// The slot ID of the slot.
	SlotId *string `type:"string"`

	// The visual ID for the slot.
	VisualId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Slot) 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 Slot) GoString() string {
	return s.String()
}

// SetSlotId sets the SlotId field's value.
func (s *Slot) SetSlotId(v string) *Slot {
	s.SlotId = &v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *Slot) SetVisualId(v string) *Slot {
	s.VisualId = &v
	return s
}

// Configures the properties of a chart's axes that are used by small multiples
// panels.
type SmallMultiplesAxisProperties struct {
	_ struct{} `type:"structure"`

	// Defines the placement of the axis. By default, axes are rendered OUTSIDE
	// of the panels. Axes with INDEPENDENT scale are rendered INSIDE the panels.
	Placement *string `type:"string" enum:"SmallMultiplesAxisPlacement"`

	// Determines whether scale of the axes are shared or independent. The default
	// value is SHARED.
	Scale *string `type:"string" enum:"SmallMultiplesAxisScale"`
}

// 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 SmallMultiplesAxisProperties) 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 SmallMultiplesAxisProperties) GoString() string {
	return s.String()
}

// SetPlacement sets the Placement field's value.
func (s *SmallMultiplesAxisProperties) SetPlacement(v string) *SmallMultiplesAxisProperties {
	s.Placement = &v
	return s
}

// SetScale sets the Scale field's value.
func (s *SmallMultiplesAxisProperties) SetScale(v string) *SmallMultiplesAxisProperties {
	s.Scale = &v
	return s
}

// Options that determine the layout and display options of a chart's small
// multiples.
type SmallMultiplesOptions struct {
	_ struct{} `type:"structure"`

	// Sets the maximum number of visible columns to display in the grid of small
	// multiples panels.
	//
	// The default is Auto, which automatically adjusts the columns in the grid
	// to fit the overall layout and size of the given chart.
	MaxVisibleColumns *int64 `min:"1" type:"long"`

	// Sets the maximum number of visible rows to display in the grid of small multiples
	// panels.
	//
	// The default value is Auto, which automatically adjusts the rows in the grid
	// to fit the overall layout and size of the given chart.
	MaxVisibleRows *int64 `min:"1" type:"long"`

	// Configures the display options for each small multiples panel.
	PanelConfiguration *PanelConfiguration `type:"structure"`

	// The properties of a small multiples X axis.
	XAxis *SmallMultiplesAxisProperties `type:"structure"`

	// The properties of a small multiples Y axis.
	YAxis *SmallMultiplesAxisProperties `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 SmallMultiplesOptions) 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 SmallMultiplesOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SmallMultiplesOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SmallMultiplesOptions"}
	if s.MaxVisibleColumns != nil && *s.MaxVisibleColumns < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxVisibleColumns", 1))
	}
	if s.MaxVisibleRows != nil && *s.MaxVisibleRows < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxVisibleRows", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxVisibleColumns sets the MaxVisibleColumns field's value.
func (s *SmallMultiplesOptions) SetMaxVisibleColumns(v int64) *SmallMultiplesOptions {
	s.MaxVisibleColumns = &v
	return s
}

// SetMaxVisibleRows sets the MaxVisibleRows field's value.
func (s *SmallMultiplesOptions) SetMaxVisibleRows(v int64) *SmallMultiplesOptions {
	s.MaxVisibleRows = &v
	return s
}

// SetPanelConfiguration sets the PanelConfiguration field's value.
func (s *SmallMultiplesOptions) SetPanelConfiguration(v *PanelConfiguration) *SmallMultiplesOptions {
	s.PanelConfiguration = v
	return s
}

// SetXAxis sets the XAxis field's value.
func (s *SmallMultiplesOptions) SetXAxis(v *SmallMultiplesAxisProperties) *SmallMultiplesOptions {
	s.XAxis = v
	return s
}

// SetYAxis sets the YAxis field's value.
func (s *SmallMultiplesOptions) SetYAxis(v *SmallMultiplesAxisProperties) *SmallMultiplesOptions {
	s.YAxis = v
	return s
}

// A structure that contains information on the anonymous user configuration.
type SnapshotAnonymousUser struct {
	_ struct{} `type:"structure"`

	// The tags to be used for row-level security (RLS). Make sure that the relevant
	// datasets have RLS tags configured before you start a snapshot export job.
	// You can configure the RLS tags of a dataset with a DataSet$RowLevelPermissionTagConfiguration
	// API call.
	//
	// These are not the tags that are used for Amazon Web Services resource tagging.
	// For more information on row level security in Amazon QuickSight, see Using
	// Row-Level Security (RLS) with Tags (https://docs.aws.amazon.com/quicksight/latest/user/quicksight-dev-rls-tags.html)in
	// the Amazon QuickSight User Guide.
	RowLevelPermissionTags []*SessionTag `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SnapshotAnonymousUser) 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 SnapshotAnonymousUser) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SnapshotAnonymousUser) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SnapshotAnonymousUser"}
	if s.RowLevelPermissionTags != nil && len(s.RowLevelPermissionTags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RowLevelPermissionTags", 1))
	}
	if s.RowLevelPermissionTags != nil {
		for i, v := range s.RowLevelPermissionTags {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RowLevelPermissionTags", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRowLevelPermissionTags sets the RowLevelPermissionTags field's value.
func (s *SnapshotAnonymousUser) SetRowLevelPermissionTags(v []*SessionTag) *SnapshotAnonymousUser {
	s.RowLevelPermissionTags = v
	return s
}

// Use this structure to redact sensitive information that you provide about
// an anonymous user from the snapshot.
type SnapshotAnonymousUserRedacted struct {
	_ struct{} `type:"structure"`

	// The tag keys for the RowLevelPermissionTags.
	RowLevelPermissionTagKeys []*string `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SnapshotAnonymousUserRedacted) 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 SnapshotAnonymousUserRedacted) GoString() string {
	return s.String()
}

// SetRowLevelPermissionTagKeys sets the RowLevelPermissionTagKeys field's value.
func (s *SnapshotAnonymousUserRedacted) SetRowLevelPermissionTagKeys(v []*string) *SnapshotAnonymousUserRedacted {
	s.RowLevelPermissionTagKeys = v
	return s
}

// Describes the configuration of the dashboard snapshot.
type SnapshotConfiguration struct {
	_ struct{} `type:"structure"`

	// A structure that contains information on the Amazon S3 bucket that the generated
	// snapshot is stored in.
	DestinationConfiguration *SnapshotDestinationConfiguration `type:"structure"`

	// A list of SnapshotJobResultFileGroup objects that contain information about
	// the snapshot that is generated. This list can hold a maximum of 6 FileGroup
	// configurations.
	//
	// FileGroups is a required field
	FileGroups []*SnapshotFileGroup `min:"1" type:"list" required:"true"`

	// A list of Amazon QuickSight parameters and the list's override values.
	Parameters *Parameters `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 SnapshotConfiguration) 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 SnapshotConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SnapshotConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SnapshotConfiguration"}
	if s.FileGroups == nil {
		invalidParams.Add(request.NewErrParamRequired("FileGroups"))
	}
	if s.FileGroups != nil && len(s.FileGroups) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FileGroups", 1))
	}
	if s.DestinationConfiguration != nil {
		if err := s.DestinationConfiguration.Validate(); err != nil {
			invalidParams.AddNested("DestinationConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.FileGroups != nil {
		for i, v := range s.FileGroups {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "FileGroups", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Parameters != nil {
		if err := s.Parameters.Validate(); err != nil {
			invalidParams.AddNested("Parameters", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDestinationConfiguration sets the DestinationConfiguration field's value.
func (s *SnapshotConfiguration) SetDestinationConfiguration(v *SnapshotDestinationConfiguration) *SnapshotConfiguration {
	s.DestinationConfiguration = v
	return s
}

// SetFileGroups sets the FileGroups field's value.
func (s *SnapshotConfiguration) SetFileGroups(v []*SnapshotFileGroup) *SnapshotConfiguration {
	s.FileGroups = v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *SnapshotConfiguration) SetParameters(v *Parameters) *SnapshotConfiguration {
	s.Parameters = v
	return s
}

// A structure that contains information on the Amazon S3 destinations of the
// generated snapshot.
type SnapshotDestinationConfiguration struct {
	_ struct{} `type:"structure"`

	// A list of SnapshotS3DestinationConfiguration objects that contain Amazon
	// S3 destination configurations. This structure can hold a maximum of 1 S3DestinationConfiguration.
	S3Destinations []*SnapshotS3DestinationConfiguration `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SnapshotDestinationConfiguration) 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 SnapshotDestinationConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SnapshotDestinationConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SnapshotDestinationConfiguration"}
	if s.S3Destinations != nil && len(s.S3Destinations) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("S3Destinations", 1))
	}
	if s.S3Destinations != nil {
		for i, v := range s.S3Destinations {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "S3Destinations", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetS3Destinations sets the S3Destinations field's value.
func (s *SnapshotDestinationConfiguration) SetS3Destinations(v []*SnapshotS3DestinationConfiguration) *SnapshotDestinationConfiguration {
	s.S3Destinations = v
	return s
}

// A structure that contains the information for the snapshot that you want
// to generate. This information is provided by you when you start a new snapshot
// job.
type SnapshotFile struct {
	_ struct{} `type:"structure"`

	// The format of the snapshot file to be generated. You can choose between CSV,
	// Excel, or PDF.
	//
	// FormatType is a required field
	FormatType *string `type:"string" required:"true" enum:"SnapshotFileFormatType"`

	// A list of SnapshotFileSheetSelection objects that contain information on
	// the dashboard sheet that is exported. These objects provide information about
	// the snapshot artifacts that are generated during the job. This structure
	// can hold a maximum of 5 CSV configurations, 5 Excel configurations, or 1
	// configuration for PDF.
	//
	// SheetSelections is a required field
	SheetSelections []*SnapshotFileSheetSelection `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SnapshotFile) 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 SnapshotFile) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SnapshotFile) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SnapshotFile"}
	if s.FormatType == nil {
		invalidParams.Add(request.NewErrParamRequired("FormatType"))
	}
	if s.SheetSelections == nil {
		invalidParams.Add(request.NewErrParamRequired("SheetSelections"))
	}
	if s.SheetSelections != nil && len(s.SheetSelections) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SheetSelections", 1))
	}
	if s.SheetSelections != nil {
		for i, v := range s.SheetSelections {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SheetSelections", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFormatType sets the FormatType field's value.
func (s *SnapshotFile) SetFormatType(v string) *SnapshotFile {
	s.FormatType = &v
	return s
}

// SetSheetSelections sets the SheetSelections field's value.
func (s *SnapshotFile) SetSheetSelections(v []*SnapshotFileSheetSelection) *SnapshotFile {
	s.SheetSelections = v
	return s
}

// A structure that contains the information on the snapshot files.
type SnapshotFileGroup struct {
	_ struct{} `type:"structure"`

	// A list of SnapshotFile objects that contain the information on the snapshot
	// files that need to be generated. This structure can hold 1 configuration
	// at a time.
	Files []*SnapshotFile `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SnapshotFileGroup) 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 SnapshotFileGroup) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SnapshotFileGroup) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SnapshotFileGroup"}
	if s.Files != nil && len(s.Files) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Files", 1))
	}
	if s.Files != nil {
		for i, v := range s.Files {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Files", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFiles sets the Files field's value.
func (s *SnapshotFileGroup) SetFiles(v []*SnapshotFile) *SnapshotFileGroup {
	s.Files = v
	return s
}

// A structure that contains information that identifies the snapshot that needs
// to be generated.
type SnapshotFileSheetSelection struct {
	_ struct{} `type:"structure"`

	// The selection scope of the visuals on a sheet of a dashboard that you are
	// generating a snapthot of. You can choose one of the following options.
	//
	//    * ALL_VISUALS - Selects all visuals that are on the sheet. This value
	//    is required if the snapshot is a PDF.
	//
	//    * SELECTED_VISUALS - Select the visual that you want to add to the snapshot.
	//    This value is required if the snapshot is a CSV or Excel workbook.
	//
	// SelectionScope is a required field
	SelectionScope *string `type:"string" required:"true" enum:"SnapshotFileSheetSelectionScope"`

	// The sheet ID of the dashboard to generate the snapshot artifact from. This
	// value is required for CSV, Excel, and PDF format types.
	//
	// SheetId is a required field
	SheetId *string `min:"1" type:"string" required:"true"`

	// A structure that lists the IDs of the visuals in the selected sheet. Supported
	// visual types are table, pivot table visuals. This value is required if you
	// are generating a CSV or Excel workbook. This value supports a maximum of
	// 1 visual ID for CSV and 5 visual IDs across up to 5 sheet selections for
	// Excel. If you are generating an Excel workbook, the order of the visual IDs
	// provided in this structure determines the order of the worksheets in the
	// Excel file.
	VisualIds []*string `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SnapshotFileSheetSelection) 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 SnapshotFileSheetSelection) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SnapshotFileSheetSelection) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SnapshotFileSheetSelection"}
	if s.SelectionScope == nil {
		invalidParams.Add(request.NewErrParamRequired("SelectionScope"))
	}
	if s.SheetId == nil {
		invalidParams.Add(request.NewErrParamRequired("SheetId"))
	}
	if s.SheetId != nil && len(*s.SheetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SheetId", 1))
	}
	if s.VisualIds != nil && len(s.VisualIds) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualIds", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSelectionScope sets the SelectionScope field's value.
func (s *SnapshotFileSheetSelection) SetSelectionScope(v string) *SnapshotFileSheetSelection {
	s.SelectionScope = &v
	return s
}

// SetSheetId sets the SheetId field's value.
func (s *SnapshotFileSheetSelection) SetSheetId(v string) *SnapshotFileSheetSelection {
	s.SheetId = &v
	return s
}

// SetVisualIds sets the VisualIds field's value.
func (s *SnapshotFileSheetSelection) SetVisualIds(v []*string) *SnapshotFileSheetSelection {
	s.VisualIds = v
	return s
}

// An object that contains information on the error that caused the snapshot
// job to fail.
type SnapshotJobErrorInfo struct {
	_ struct{} `type:"structure"`

	// The error message.
	ErrorMessage *string `type:"string"`

	// The error type.
	ErrorType *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SnapshotJobErrorInfo) 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 SnapshotJobErrorInfo) GoString() string {
	return s.String()
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *SnapshotJobErrorInfo) SetErrorMessage(v string) *SnapshotJobErrorInfo {
	s.ErrorMessage = &v
	return s
}

// SetErrorType sets the ErrorType field's value.
func (s *SnapshotJobErrorInfo) SetErrorType(v string) *SnapshotJobErrorInfo {
	s.ErrorType = &v
	return s
}

// An object that provides information on the result of a snapshot job. This
// object provides information about the job, the job status, and the location
// of the generated file.
type SnapshotJobResult struct {
	_ struct{} `type:"structure"`

	// A list of AnonymousUserSnapshotJobResult objects that contain information
	// on anonymous users and their user configurations. This data provided by you
	// when you make a StartDashboardSnapshotJob API call.
	AnonymousUsers []*AnonymousUserSnapshotJobResult `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 SnapshotJobResult) 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 SnapshotJobResult) GoString() string {
	return s.String()
}

// SetAnonymousUsers sets the AnonymousUsers field's value.
func (s *SnapshotJobResult) SetAnonymousUsers(v []*AnonymousUserSnapshotJobResult) *SnapshotJobResult {
	s.AnonymousUsers = v
	return s
}

// Information on the error that caused the snapshot job to fail.
type SnapshotJobResultErrorInfo struct {
	_ struct{} `type:"structure"`

	// The error message.
	ErrorMessage *string `type:"string"`

	// The error type.
	ErrorType *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SnapshotJobResultErrorInfo) 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 SnapshotJobResultErrorInfo) GoString() string {
	return s.String()
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *SnapshotJobResultErrorInfo) SetErrorMessage(v string) *SnapshotJobResultErrorInfo {
	s.ErrorMessage = &v
	return s
}

// SetErrorType sets the ErrorType field's value.
func (s *SnapshotJobResultErrorInfo) SetErrorType(v string) *SnapshotJobResultErrorInfo {
	s.ErrorType = &v
	return s
}

// A structure that contains information on the generated snapshot file groups.
type SnapshotJobResultFileGroup struct {
	_ struct{} `type:"structure"`

	// A list of SnapshotFile objects.
	Files []*SnapshotFile `min:"1" type:"list"`

	// A list of SnapshotJobS3Result objects.
	S3Results []*SnapshotJobS3Result `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 SnapshotJobResultFileGroup) 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 SnapshotJobResultFileGroup) GoString() string {
	return s.String()
}

// SetFiles sets the Files field's value.
func (s *SnapshotJobResultFileGroup) SetFiles(v []*SnapshotFile) *SnapshotJobResultFileGroup {
	s.Files = v
	return s
}

// SetS3Results sets the S3Results field's value.
func (s *SnapshotJobResultFileGroup) SetS3Results(v []*SnapshotJobS3Result) *SnapshotJobResultFileGroup {
	s.S3Results = v
	return s
}

// The Amazon S3 result from the snapshot job. The result includes the DestinationConfiguration
// and the Amazon S3 Uri. If an error occured during the job, the result returns
// information on the error.
type SnapshotJobS3Result struct {
	_ struct{} `type:"structure"`

	// An array of error records that describe any failures that occur while the
	// dashboard snapshot job runs.
	ErrorInfo []*SnapshotJobResultErrorInfo `type:"list"`

	// A list of Amazon S3 bucket configurations that are provided when you make
	// a StartDashboardSnapshotJob API call.
	S3DestinationConfiguration *SnapshotS3DestinationConfiguration `type:"structure"`

	// The Amazon S3 Uri.
	//
	// S3Uri is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SnapshotJobS3Result's
	// String and GoString methods.
	S3Uri *string `type:"string" sensitive:"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 SnapshotJobS3Result) 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 SnapshotJobS3Result) GoString() string {
	return s.String()
}

// SetErrorInfo sets the ErrorInfo field's value.
func (s *SnapshotJobS3Result) SetErrorInfo(v []*SnapshotJobResultErrorInfo) *SnapshotJobS3Result {
	s.ErrorInfo = v
	return s
}

// SetS3DestinationConfiguration sets the S3DestinationConfiguration field's value.
func (s *SnapshotJobS3Result) SetS3DestinationConfiguration(v *SnapshotS3DestinationConfiguration) *SnapshotJobS3Result {
	s.S3DestinationConfiguration = v
	return s
}

// SetS3Uri sets the S3Uri field's value.
func (s *SnapshotJobS3Result) SetS3Uri(v string) *SnapshotJobS3Result {
	s.S3Uri = &v
	return s
}

// A structure that describes the Amazon S3 settings to use to save the generated
// dashboard snapshot.
type SnapshotS3DestinationConfiguration struct {
	_ struct{} `type:"structure"`

	// A structure that contains details about the Amazon S3 bucket that the generated
	// dashboard snapshot is saved in.
	//
	// BucketConfiguration is a required field
	BucketConfiguration *S3BucketConfiguration `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 SnapshotS3DestinationConfiguration) 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 SnapshotS3DestinationConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SnapshotS3DestinationConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SnapshotS3DestinationConfiguration"}
	if s.BucketConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("BucketConfiguration"))
	}
	if s.BucketConfiguration != nil {
		if err := s.BucketConfiguration.Validate(); err != nil {
			invalidParams.AddNested("BucketConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBucketConfiguration sets the BucketConfiguration field's value.
func (s *SnapshotS3DestinationConfiguration) SetBucketConfiguration(v *S3BucketConfiguration) *SnapshotS3DestinationConfiguration {
	s.BucketConfiguration = v
	return s
}

// A structure that contains information about the users that the dashboard
// snapshot is generated for.
type SnapshotUserConfiguration struct {
	_ struct{} `type:"structure"`

	// An array of records that describe the anonymous users that the dashboard
	// snapshot is generated for.
	AnonymousUsers []*SnapshotAnonymousUser `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SnapshotUserConfiguration) 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 SnapshotUserConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SnapshotUserConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SnapshotUserConfiguration"}
	if s.AnonymousUsers != nil && len(s.AnonymousUsers) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AnonymousUsers", 1))
	}
	if s.AnonymousUsers != nil {
		for i, v := range s.AnonymousUsers {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AnonymousUsers", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAnonymousUsers sets the AnonymousUsers field's value.
func (s *SnapshotUserConfiguration) SetAnonymousUsers(v []*SnapshotAnonymousUser) *SnapshotUserConfiguration {
	s.AnonymousUsers = v
	return s
}

// A structure that contains information about the users that the dashboard
// snapshot is generated for. Sensitive user information is excluded.
type SnapshotUserConfigurationRedacted struct {
	_ struct{} `type:"structure"`

	// An array of records that describe anonymous users that the dashboard snapshot
	// is generated for. Sensitive user information is excluded.
	AnonymousUsers []*SnapshotAnonymousUserRedacted `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SnapshotUserConfigurationRedacted) 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 SnapshotUserConfigurationRedacted) GoString() string {
	return s.String()
}

// SetAnonymousUsers sets the AnonymousUsers field's value.
func (s *SnapshotUserConfigurationRedacted) SetAnonymousUsers(v []*SnapshotAnonymousUserRedacted) *SnapshotUserConfigurationRedacted {
	s.AnonymousUsers = v
	return s
}

// The parameters for Snowflake.
type SnowflakeParameters struct {
	_ struct{} `type:"structure"`

	// Database.
	//
	// Database is a required field
	Database *string `min:"1" type:"string" required:"true"`

	// Host.
	//
	// Host is a required field
	Host *string `min:"1" type:"string" required:"true"`

	// Warehouse.
	//
	// Warehouse is a required field
	Warehouse *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SnowflakeParameters) 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 SnowflakeParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SnowflakeParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SnowflakeParameters"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Database != nil && len(*s.Database) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Database", 1))
	}
	if s.Host == nil {
		invalidParams.Add(request.NewErrParamRequired("Host"))
	}
	if s.Host != nil && len(*s.Host) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Host", 1))
	}
	if s.Warehouse == nil {
		invalidParams.Add(request.NewErrParamRequired("Warehouse"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *SnowflakeParameters) SetDatabase(v string) *SnowflakeParameters {
	s.Database = &v
	return s
}

// SetHost sets the Host field's value.
func (s *SnowflakeParameters) SetHost(v string) *SnowflakeParameters {
	s.Host = &v
	return s
}

// SetWarehouse sets the Warehouse field's value.
func (s *SnowflakeParameters) SetWarehouse(v string) *SnowflakeParameters {
	s.Warehouse = &v
	return s
}

// The configuration of spacing (often a margin or padding).
type Spacing struct {
	_ struct{} `type:"structure"`

	// Define the bottom spacing.
	Bottom *string `type:"string"`

	// Define the left spacing.
	Left *string `type:"string"`

	// Define the right spacing.
	Right *string `type:"string"`

	// Define the top spacing.
	Top *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Spacing) 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 Spacing) GoString() string {
	return s.String()
}

// SetBottom sets the Bottom field's value.
func (s *Spacing) SetBottom(v string) *Spacing {
	s.Bottom = &v
	return s
}

// SetLeft sets the Left field's value.
func (s *Spacing) SetLeft(v string) *Spacing {
	s.Left = &v
	return s
}

// SetRight sets the Right field's value.
func (s *Spacing) SetRight(v string) *Spacing {
	s.Right = &v
	return s
}

// SetTop sets the Top field's value.
func (s *Spacing) SetTop(v string) *Spacing {
	s.Top = &v
	return s
}

// The parameters for Spark.
type SparkParameters struct {
	_ struct{} `type:"structure"`

	// Host.
	//
	// Host is a required field
	Host *string `min:"1" type:"string" required:"true"`

	// Port.
	//
	// Port is a required field
	Port *int64 `min:"1" type:"integer" 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 SparkParameters) 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 SparkParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SparkParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SparkParameters"}
	if s.Host == nil {
		invalidParams.Add(request.NewErrParamRequired("Host"))
	}
	if s.Host != nil && len(*s.Host) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Host", 1))
	}
	if s.Port == nil {
		invalidParams.Add(request.NewErrParamRequired("Port"))
	}
	if s.Port != nil && *s.Port < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetHost sets the Host field's value.
func (s *SparkParameters) SetHost(v string) *SparkParameters {
	s.Host = &v
	return s
}

// SetPort sets the Port field's value.
func (s *SparkParameters) SetPort(v int64) *SparkParameters {
	s.Port = &v
	return s
}

// The parameters for SQL Server.
type SqlServerParameters struct {
	_ struct{} `type:"structure"`

	// Database.
	//
	// Database is a required field
	Database *string `min:"1" type:"string" required:"true"`

	// Host.
	//
	// Host is a required field
	Host *string `min:"1" type:"string" required:"true"`

	// Port.
	//
	// Port is a required field
	Port *int64 `min:"1" type:"integer" 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 SqlServerParameters) 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 SqlServerParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SqlServerParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SqlServerParameters"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Database != nil && len(*s.Database) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Database", 1))
	}
	if s.Host == nil {
		invalidParams.Add(request.NewErrParamRequired("Host"))
	}
	if s.Host != nil && len(*s.Host) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Host", 1))
	}
	if s.Port == nil {
		invalidParams.Add(request.NewErrParamRequired("Port"))
	}
	if s.Port != nil && *s.Port < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *SqlServerParameters) SetDatabase(v string) *SqlServerParameters {
	s.Database = &v
	return s
}

// SetHost sets the Host field's value.
func (s *SqlServerParameters) SetHost(v string) *SqlServerParameters {
	s.Host = &v
	return s
}

// SetPort sets the Port field's value.
func (s *SqlServerParameters) SetPort(v int64) *SqlServerParameters {
	s.Port = &v
	return s
}

// Secure Socket Layer (SSL) properties that apply when Amazon QuickSight connects
// to your underlying data source.
type SslProperties struct {
	_ struct{} `type:"structure"`

	// A Boolean option to control whether SSL should be disabled.
	DisableSsl *bool `type:"boolean"`
}

// 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 SslProperties) 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 SslProperties) GoString() string {
	return s.String()
}

// SetDisableSsl sets the DisableSsl field's value.
func (s *SslProperties) SetDisableSsl(v bool) *SslProperties {
	s.DisableSsl = &v
	return s
}

// The parameters that are required to connect to a Starburst data source.
type StarburstParameters struct {
	_ struct{} `type:"structure"`

	// The catalog name for the Starburst data source.
	//
	// Catalog is a required field
	Catalog *string `type:"string" required:"true"`

	// The host name of the Starburst data source.
	//
	// Host is a required field
	Host *string `min:"1" type:"string" required:"true"`

	// The port for the Starburst data source.
	//
	// Port is a required field
	Port *int64 `min:"1" type:"integer" required:"true"`

	// The product type for the Starburst data source.
	ProductType *string `type:"string" enum:"StarburstProductType"`
}

// 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 StarburstParameters) 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 StarburstParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StarburstParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StarburstParameters"}
	if s.Catalog == nil {
		invalidParams.Add(request.NewErrParamRequired("Catalog"))
	}
	if s.Host == nil {
		invalidParams.Add(request.NewErrParamRequired("Host"))
	}
	if s.Host != nil && len(*s.Host) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Host", 1))
	}
	if s.Port == nil {
		invalidParams.Add(request.NewErrParamRequired("Port"))
	}
	if s.Port != nil && *s.Port < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalog sets the Catalog field's value.
func (s *StarburstParameters) SetCatalog(v string) *StarburstParameters {
	s.Catalog = &v
	return s
}

// SetHost sets the Host field's value.
func (s *StarburstParameters) SetHost(v string) *StarburstParameters {
	s.Host = &v
	return s
}

// SetPort sets the Port field's value.
func (s *StarburstParameters) SetPort(v int64) *StarburstParameters {
	s.Port = &v
	return s
}

// SetProductType sets the ProductType field's value.
func (s *StarburstParameters) SetProductType(v string) *StarburstParameters {
	s.ProductType = &v
	return s
}

type StartAssetBundleExportJobInput struct {
	_ struct{} `type:"structure"`

	// The ID of the job. This ID is unique while the job is running. After the
	// job is completed, you can reuse this ID for another job.
	//
	// AssetBundleExportJobId is a required field
	AssetBundleExportJobId *string `min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account to export assets from.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// An optional collection of structures that generate CloudFormation parameters
	// to override the existing resource property values when the resource is exported
	// to a new CloudFormation template.
	//
	// Use this field if the ExportFormat field of a StartAssetBundleExportJobRequest
	// API call is set to CLOUDFORMATION_JSON.
	CloudFormationOverridePropertyConfiguration *AssetBundleCloudFormationOverridePropertyConfiguration `type:"structure"`

	// The export data format.
	//
	// ExportFormat is a required field
	ExportFormat *string `type:"string" required:"true" enum:"AssetBundleExportFormat"`

	// A Boolean that determines whether all dependencies of each resource ARN are
	// recursively exported with the job. For example, say you provided a Dashboard
	// ARN to the ResourceArns parameter. If you set IncludeAllDependencies to TRUE,
	// any theme, dataset, and data source resource that is a dependency of the
	// dashboard is also exported.
	IncludeAllDependencies *bool `type:"boolean"`

	// A Boolean that determines whether all permissions for each resource ARN are
	// exported with the job. If you set IncludePermissions to TRUE, any permissions
	// associated with each resource are exported.
	IncludePermissions *bool `type:"boolean"`

	// A Boolean that determines whether all tags for each resource ARN are exported
	// with the job. If you set IncludeTags to TRUE, any tags associated with each
	// resource are exported.
	IncludeTags *bool `type:"boolean"`

	// An array of resource ARNs to export. The following resources are supported.
	//
	//    * Analysis
	//
	//    * Dashboard
	//
	//    * DataSet
	//
	//    * DataSource
	//
	//    * RefreshSchedule
	//
	//    * Theme
	//
	//    * VPCConnection
	//
	// The API caller must have the necessary permissions in their IAM role to access
	// each resource before the resources can be exported.
	//
	// ResourceArns is a required field
	ResourceArns []*string `min:"1" type:"list" required:"true"`

	// An optional parameter that determines which validation strategy to use for
	// the export job. If StrictModeForAllResources is set to TRUE, strict validation
	// for every error is enforced. If it is set to FALSE, validation is skipped
	// for specific UI errors that are shown as warnings. The default value for
	// StrictModeForAllResources is FALSE.
	ValidationStrategy *AssetBundleExportJobValidationStrategy `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 StartAssetBundleExportJobInput) 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 StartAssetBundleExportJobInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartAssetBundleExportJobInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartAssetBundleExportJobInput"}
	if s.AssetBundleExportJobId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssetBundleExportJobId"))
	}
	if s.AssetBundleExportJobId != nil && len(*s.AssetBundleExportJobId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssetBundleExportJobId", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.ExportFormat == nil {
		invalidParams.Add(request.NewErrParamRequired("ExportFormat"))
	}
	if s.ResourceArns == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArns"))
	}
	if s.ResourceArns != nil && len(s.ResourceArns) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArns", 1))
	}
	if s.CloudFormationOverridePropertyConfiguration != nil {
		if err := s.CloudFormationOverridePropertyConfiguration.Validate(); err != nil {
			invalidParams.AddNested("CloudFormationOverridePropertyConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssetBundleExportJobId sets the AssetBundleExportJobId field's value.
func (s *StartAssetBundleExportJobInput) SetAssetBundleExportJobId(v string) *StartAssetBundleExportJobInput {
	s.AssetBundleExportJobId = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *StartAssetBundleExportJobInput) SetAwsAccountId(v string) *StartAssetBundleExportJobInput {
	s.AwsAccountId = &v
	return s
}

// SetCloudFormationOverridePropertyConfiguration sets the CloudFormationOverridePropertyConfiguration field's value.
func (s *StartAssetBundleExportJobInput) SetCloudFormationOverridePropertyConfiguration(v *AssetBundleCloudFormationOverridePropertyConfiguration) *StartAssetBundleExportJobInput {
	s.CloudFormationOverridePropertyConfiguration = v
	return s
}

// SetExportFormat sets the ExportFormat field's value.
func (s *StartAssetBundleExportJobInput) SetExportFormat(v string) *StartAssetBundleExportJobInput {
	s.ExportFormat = &v
	return s
}

// SetIncludeAllDependencies sets the IncludeAllDependencies field's value.
func (s *StartAssetBundleExportJobInput) SetIncludeAllDependencies(v bool) *StartAssetBundleExportJobInput {
	s.IncludeAllDependencies = &v
	return s
}

// SetIncludePermissions sets the IncludePermissions field's value.
func (s *StartAssetBundleExportJobInput) SetIncludePermissions(v bool) *StartAssetBundleExportJobInput {
	s.IncludePermissions = &v
	return s
}

// SetIncludeTags sets the IncludeTags field's value.
func (s *StartAssetBundleExportJobInput) SetIncludeTags(v bool) *StartAssetBundleExportJobInput {
	s.IncludeTags = &v
	return s
}

// SetResourceArns sets the ResourceArns field's value.
func (s *StartAssetBundleExportJobInput) SetResourceArns(v []*string) *StartAssetBundleExportJobInput {
	s.ResourceArns = v
	return s
}

// SetValidationStrategy sets the ValidationStrategy field's value.
func (s *StartAssetBundleExportJobInput) SetValidationStrategy(v *AssetBundleExportJobValidationStrategy) *StartAssetBundleExportJobInput {
	s.ValidationStrategy = v
	return s
}

type StartAssetBundleExportJobOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the export job.
	Arn *string `type:"string"`

	// The ID of the job. This ID is unique while the job is running. After the
	// job is completed, you can reuse this ID for another job.
	AssetBundleExportJobId *string `min:"1" type:"string"`

	// The Amazon Web Services response ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the response.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 StartAssetBundleExportJobOutput) 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 StartAssetBundleExportJobOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *StartAssetBundleExportJobOutput) SetArn(v string) *StartAssetBundleExportJobOutput {
	s.Arn = &v
	return s
}

// SetAssetBundleExportJobId sets the AssetBundleExportJobId field's value.
func (s *StartAssetBundleExportJobOutput) SetAssetBundleExportJobId(v string) *StartAssetBundleExportJobOutput {
	s.AssetBundleExportJobId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *StartAssetBundleExportJobOutput) SetRequestId(v string) *StartAssetBundleExportJobOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *StartAssetBundleExportJobOutput) SetStatus(v int64) *StartAssetBundleExportJobOutput {
	s.Status = &v
	return s
}

type StartAssetBundleImportJobInput struct {
	_ struct{} `type:"structure"`

	// The ID of the job. This ID is unique while the job is running. After the
	// job is completed, you can reuse this ID for another job.
	//
	// AssetBundleImportJobId is a required field
	AssetBundleImportJobId *string `min:"1" type:"string" required:"true"`

	// The source of the asset bundle zip file that contains the data that you want
	// to import. The file must be in QUICKSIGHT_JSON format.
	//
	// AssetBundleImportSource is a required field
	AssetBundleImportSource *AssetBundleImportSource `type:"structure" required:"true"`

	// The ID of the Amazon Web Services account to import assets into.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The failure action for the import job.
	//
	// If you choose ROLLBACK, failed import jobs will attempt to undo any asset
	// changes caused by the failed job.
	//
	// If you choose DO_NOTHING, failed import jobs will not attempt to roll back
	// any asset changes caused by the failed job, possibly keeping the Amazon QuickSight
	// account in an inconsistent state.
	FailureAction *string `type:"string" enum:"AssetBundleImportFailureAction"`

	// Optional overrides that are applied to the resource configuration before
	// import.
	OverrideParameters *AssetBundleImportJobOverrideParameters `type:"structure"`

	// Optional permission overrides that are applied to the resource configuration
	// before import.
	OverridePermissions *AssetBundleImportJobOverridePermissions `type:"structure"`

	// Optional tag overrides that are applied to the resource configuration before
	// import.
	OverrideTags *AssetBundleImportJobOverrideTags `type:"structure"`

	// An optional validation strategy override for all analyses and dashboards
	// that is applied to the resource configuration before import.
	OverrideValidationStrategy *AssetBundleImportJobOverrideValidationStrategy `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 StartAssetBundleImportJobInput) 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 StartAssetBundleImportJobInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartAssetBundleImportJobInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartAssetBundleImportJobInput"}
	if s.AssetBundleImportJobId == nil {
		invalidParams.Add(request.NewErrParamRequired("AssetBundleImportJobId"))
	}
	if s.AssetBundleImportJobId != nil && len(*s.AssetBundleImportJobId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssetBundleImportJobId", 1))
	}
	if s.AssetBundleImportSource == nil {
		invalidParams.Add(request.NewErrParamRequired("AssetBundleImportSource"))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.OverrideParameters != nil {
		if err := s.OverrideParameters.Validate(); err != nil {
			invalidParams.AddNested("OverrideParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.OverridePermissions != nil {
		if err := s.OverridePermissions.Validate(); err != nil {
			invalidParams.AddNested("OverridePermissions", err.(request.ErrInvalidParams))
		}
	}
	if s.OverrideTags != nil {
		if err := s.OverrideTags.Validate(); err != nil {
			invalidParams.AddNested("OverrideTags", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssetBundleImportJobId sets the AssetBundleImportJobId field's value.
func (s *StartAssetBundleImportJobInput) SetAssetBundleImportJobId(v string) *StartAssetBundleImportJobInput {
	s.AssetBundleImportJobId = &v
	return s
}

// SetAssetBundleImportSource sets the AssetBundleImportSource field's value.
func (s *StartAssetBundleImportJobInput) SetAssetBundleImportSource(v *AssetBundleImportSource) *StartAssetBundleImportJobInput {
	s.AssetBundleImportSource = v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *StartAssetBundleImportJobInput) SetAwsAccountId(v string) *StartAssetBundleImportJobInput {
	s.AwsAccountId = &v
	return s
}

// SetFailureAction sets the FailureAction field's value.
func (s *StartAssetBundleImportJobInput) SetFailureAction(v string) *StartAssetBundleImportJobInput {
	s.FailureAction = &v
	return s
}

// SetOverrideParameters sets the OverrideParameters field's value.
func (s *StartAssetBundleImportJobInput) SetOverrideParameters(v *AssetBundleImportJobOverrideParameters) *StartAssetBundleImportJobInput {
	s.OverrideParameters = v
	return s
}

// SetOverridePermissions sets the OverridePermissions field's value.
func (s *StartAssetBundleImportJobInput) SetOverridePermissions(v *AssetBundleImportJobOverridePermissions) *StartAssetBundleImportJobInput {
	s.OverridePermissions = v
	return s
}

// SetOverrideTags sets the OverrideTags field's value.
func (s *StartAssetBundleImportJobInput) SetOverrideTags(v *AssetBundleImportJobOverrideTags) *StartAssetBundleImportJobInput {
	s.OverrideTags = v
	return s
}

// SetOverrideValidationStrategy sets the OverrideValidationStrategy field's value.
func (s *StartAssetBundleImportJobInput) SetOverrideValidationStrategy(v *AssetBundleImportJobOverrideValidationStrategy) *StartAssetBundleImportJobInput {
	s.OverrideValidationStrategy = v
	return s
}

type StartAssetBundleImportJobOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the import job.
	Arn *string `type:"string"`

	// The ID of the job. This ID is unique while the job is running. After the
	// job is completed, you can reuse this ID for another job.
	AssetBundleImportJobId *string `min:"1" type:"string"`

	// The Amazon Web Services response ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the response.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 StartAssetBundleImportJobOutput) 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 StartAssetBundleImportJobOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *StartAssetBundleImportJobOutput) SetArn(v string) *StartAssetBundleImportJobOutput {
	s.Arn = &v
	return s
}

// SetAssetBundleImportJobId sets the AssetBundleImportJobId field's value.
func (s *StartAssetBundleImportJobOutput) SetAssetBundleImportJobId(v string) *StartAssetBundleImportJobOutput {
	s.AssetBundleImportJobId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *StartAssetBundleImportJobOutput) SetRequestId(v string) *StartAssetBundleImportJobOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *StartAssetBundleImportJobOutput) SetStatus(v int64) *StartAssetBundleImportJobOutput {
	s.Status = &v
	return s
}

type StartDashboardSnapshotJobInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that the dashboard snapshot job
	// is executed in.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dashboard that you want to start a snapshot job for.
	//
	// DashboardId is a required field
	DashboardId *string `location:"uri" locationName:"DashboardId" min:"1" type:"string" required:"true"`

	// A structure that describes the configuration of the dashboard snapshot.
	//
	// SnapshotConfiguration is a required field
	SnapshotConfiguration *SnapshotConfiguration `type:"structure" required:"true"`

	// An ID for the dashboard snapshot job. This ID is unique to the dashboard
	// while the job is running. This ID can be used to poll the status of a job
	// with a DescribeDashboardSnapshotJob while the job runs. You can reuse this
	// ID for another job 24 hours after the current job is completed.
	//
	// SnapshotJobId is a required field
	SnapshotJobId *string `min:"1" type:"string" required:"true"`

	// A structure that contains information about the anonymous users that the
	// generated snapshot is for. This API will not return information about registered
	// Amazon QuickSight.
	//
	// UserConfiguration is a required field
	UserConfiguration *SnapshotUserConfiguration `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 StartDashboardSnapshotJobInput) 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 StartDashboardSnapshotJobInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartDashboardSnapshotJobInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartDashboardSnapshotJobInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DashboardId == nil {
		invalidParams.Add(request.NewErrParamRequired("DashboardId"))
	}
	if s.DashboardId != nil && len(*s.DashboardId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DashboardId", 1))
	}
	if s.SnapshotConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("SnapshotConfiguration"))
	}
	if s.SnapshotJobId == nil {
		invalidParams.Add(request.NewErrParamRequired("SnapshotJobId"))
	}
	if s.SnapshotJobId != nil && len(*s.SnapshotJobId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SnapshotJobId", 1))
	}
	if s.UserConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("UserConfiguration"))
	}
	if s.SnapshotConfiguration != nil {
		if err := s.SnapshotConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SnapshotConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.UserConfiguration != nil {
		if err := s.UserConfiguration.Validate(); err != nil {
			invalidParams.AddNested("UserConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *StartDashboardSnapshotJobInput) SetAwsAccountId(v string) *StartDashboardSnapshotJobInput {
	s.AwsAccountId = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *StartDashboardSnapshotJobInput) SetDashboardId(v string) *StartDashboardSnapshotJobInput {
	s.DashboardId = &v
	return s
}

// SetSnapshotConfiguration sets the SnapshotConfiguration field's value.
func (s *StartDashboardSnapshotJobInput) SetSnapshotConfiguration(v *SnapshotConfiguration) *StartDashboardSnapshotJobInput {
	s.SnapshotConfiguration = v
	return s
}

// SetSnapshotJobId sets the SnapshotJobId field's value.
func (s *StartDashboardSnapshotJobInput) SetSnapshotJobId(v string) *StartDashboardSnapshotJobInput {
	s.SnapshotJobId = &v
	return s
}

// SetUserConfiguration sets the UserConfiguration field's value.
func (s *StartDashboardSnapshotJobInput) SetUserConfiguration(v *SnapshotUserConfiguration) *StartDashboardSnapshotJobInput {
	s.UserConfiguration = v
	return s
}

type StartDashboardSnapshotJobOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the dashboard snapshot job.
	Arn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The ID of the job. The job ID is set when you start a new job with a StartDashboardSnapshotJob
	// API call.
	SnapshotJobId *string `min:"1" type:"string"`

	// The HTTP status of the request
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 StartDashboardSnapshotJobOutput) 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 StartDashboardSnapshotJobOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *StartDashboardSnapshotJobOutput) SetArn(v string) *StartDashboardSnapshotJobOutput {
	s.Arn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *StartDashboardSnapshotJobOutput) SetRequestId(v string) *StartDashboardSnapshotJobOutput {
	s.RequestId = &v
	return s
}

// SetSnapshotJobId sets the SnapshotJobId field's value.
func (s *StartDashboardSnapshotJobOutput) SetSnapshotJobId(v string) *StartDashboardSnapshotJobOutput {
	s.SnapshotJobId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *StartDashboardSnapshotJobOutput) SetStatus(v int64) *StartDashboardSnapshotJobOutput {
	s.Status = &v
	return s
}

// The state perssitence configuration of an embedded dashboard.
type StatePersistenceConfigurations struct {
	_ struct{} `type:"structure"`

	// Determines if a Amazon QuickSight dashboard's state persistence settings
	// are turned on or off.
	//
	// Enabled is a required field
	Enabled *bool `type:"boolean" 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 StatePersistenceConfigurations) 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 StatePersistenceConfigurations) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StatePersistenceConfigurations) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StatePersistenceConfigurations"}
	if s.Enabled == nil {
		invalidParams.Add(request.NewErrParamRequired("Enabled"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEnabled sets the Enabled field's value.
func (s *StatePersistenceConfigurations) SetEnabled(v bool) *StatePersistenceConfigurations {
	s.Enabled = &v
	return s
}

// A string parameter for a dataset.
type StringDatasetParameter struct {
	_ struct{} `type:"structure"`

	// A list of default values for a given string dataset parameter type. This
	// structure only accepts static values.
	DefaultValues *StringDatasetParameterDefaultValues `type:"structure"`

	// An identifier for the string parameter that is created in the dataset.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// The name of the string parameter that is created in the dataset.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The value type of the dataset parameter. Valid values are single value or
	// multi value.
	//
	// ValueType is a required field
	ValueType *string `type:"string" required:"true" enum:"DatasetParameterValueType"`
}

// 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 StringDatasetParameter) 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 StringDatasetParameter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StringDatasetParameter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StringDatasetParameter"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Id != nil && len(*s.Id) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Id", 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 s.ValueType == nil {
		invalidParams.Add(request.NewErrParamRequired("ValueType"))
	}
	if s.DefaultValues != nil {
		if err := s.DefaultValues.Validate(); err != nil {
			invalidParams.AddNested("DefaultValues", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDefaultValues sets the DefaultValues field's value.
func (s *StringDatasetParameter) SetDefaultValues(v *StringDatasetParameterDefaultValues) *StringDatasetParameter {
	s.DefaultValues = v
	return s
}

// SetId sets the Id field's value.
func (s *StringDatasetParameter) SetId(v string) *StringDatasetParameter {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *StringDatasetParameter) SetName(v string) *StringDatasetParameter {
	s.Name = &v
	return s
}

// SetValueType sets the ValueType field's value.
func (s *StringDatasetParameter) SetValueType(v string) *StringDatasetParameter {
	s.ValueType = &v
	return s
}

// The default values of a string parameter.
type StringDatasetParameterDefaultValues struct {
	_ struct{} `type:"structure"`

	// A list of static default values for a given string parameter.
	StaticValues []*string `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StringDatasetParameterDefaultValues) 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 StringDatasetParameterDefaultValues) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StringDatasetParameterDefaultValues) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StringDatasetParameterDefaultValues"}
	if s.StaticValues != nil && len(s.StaticValues) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("StaticValues", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetStaticValues sets the StaticValues field's value.
func (s *StringDatasetParameterDefaultValues) SetStaticValues(v []*string) *StringDatasetParameterDefaultValues {
	s.StaticValues = v
	return s
}

// The default values of the StringParameterDeclaration.
type StringDefaultValues struct {
	_ struct{} `type:"structure"`

	// The dynamic value of the StringDefaultValues. Different defaults displayed
	// according to users, groups, and values mapping.
	DynamicValue *DynamicDefaultValue `type:"structure"`

	// The static values of the DecimalDefaultValues.
	StaticValues []*string `type:"list" sensitive:"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 StringDefaultValues) 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 StringDefaultValues) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StringDefaultValues) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StringDefaultValues"}
	if s.DynamicValue != nil {
		if err := s.DynamicValue.Validate(); err != nil {
			invalidParams.AddNested("DynamicValue", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDynamicValue sets the DynamicValue field's value.
func (s *StringDefaultValues) SetDynamicValue(v *DynamicDefaultValue) *StringDefaultValues {
	s.DynamicValue = v
	return s
}

// SetStaticValues sets the StaticValues field's value.
func (s *StringDefaultValues) SetStaticValues(v []*string) *StringDefaultValues {
	s.StaticValues = v
	return s
}

// Formatting configuration for string fields.
type StringFormatConfiguration struct {
	_ struct{} `type:"structure"`

	// The options that determine the null value format configuration.
	NullValueFormatConfiguration *NullValueFormatConfiguration `type:"structure"`

	// The formatting configuration for numeric strings.
	NumericFormatConfiguration *NumericFormatConfiguration `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 StringFormatConfiguration) 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 StringFormatConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StringFormatConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StringFormatConfiguration"}
	if s.NullValueFormatConfiguration != nil {
		if err := s.NullValueFormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("NullValueFormatConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.NumericFormatConfiguration != nil {
		if err := s.NumericFormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("NumericFormatConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetNullValueFormatConfiguration sets the NullValueFormatConfiguration field's value.
func (s *StringFormatConfiguration) SetNullValueFormatConfiguration(v *NullValueFormatConfiguration) *StringFormatConfiguration {
	s.NullValueFormatConfiguration = v
	return s
}

// SetNumericFormatConfiguration sets the NumericFormatConfiguration field's value.
func (s *StringFormatConfiguration) SetNumericFormatConfiguration(v *NumericFormatConfiguration) *StringFormatConfiguration {
	s.NumericFormatConfiguration = v
	return s
}

// A string parameter.
type StringParameter struct {
	_ struct{} `type:"structure"`

	// A display name for a string parameter.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The values of a string parameter.
	//
	// Values is a required field
	Values []*string `type:"list" required:"true" sensitive:"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 StringParameter) 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 StringParameter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StringParameter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StringParameter"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *StringParameter) SetName(v string) *StringParameter {
	s.Name = &v
	return s
}

// SetValues sets the Values field's value.
func (s *StringParameter) SetValues(v []*string) *StringParameter {
	s.Values = v
	return s
}

// A parameter declaration for the String data type.
type StringParameterDeclaration struct {
	_ struct{} `type:"structure"`

	// The default values of a parameter. If the parameter is a single-value parameter,
	// a maximum of one default value can be provided.
	DefaultValues *StringDefaultValues `type:"structure"`

	// A list of dataset parameters that are mapped to an analysis parameter.
	MappedDataSetParameters []*MappedDataSetParameter `type:"list"`

	// The name of the parameter that is being declared.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The value type determines whether the parameter is a single-value or multi-value
	// parameter.
	//
	// ParameterValueType is a required field
	ParameterValueType *string `type:"string" required:"true" enum:"ParameterValueType"`

	// The configuration that defines the default value of a String parameter when
	// a value has not been set.
	ValueWhenUnset *StringValueWhenUnsetConfiguration `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 StringParameterDeclaration) 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 StringParameterDeclaration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StringParameterDeclaration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StringParameterDeclaration"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.ParameterValueType == nil {
		invalidParams.Add(request.NewErrParamRequired("ParameterValueType"))
	}
	if s.DefaultValues != nil {
		if err := s.DefaultValues.Validate(); err != nil {
			invalidParams.AddNested("DefaultValues", err.(request.ErrInvalidParams))
		}
	}
	if s.MappedDataSetParameters != nil {
		for i, v := range s.MappedDataSetParameters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "MappedDataSetParameters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDefaultValues sets the DefaultValues field's value.
func (s *StringParameterDeclaration) SetDefaultValues(v *StringDefaultValues) *StringParameterDeclaration {
	s.DefaultValues = v
	return s
}

// SetMappedDataSetParameters sets the MappedDataSetParameters field's value.
func (s *StringParameterDeclaration) SetMappedDataSetParameters(v []*MappedDataSetParameter) *StringParameterDeclaration {
	s.MappedDataSetParameters = v
	return s
}

// SetName sets the Name field's value.
func (s *StringParameterDeclaration) SetName(v string) *StringParameterDeclaration {
	s.Name = &v
	return s
}

// SetParameterValueType sets the ParameterValueType field's value.
func (s *StringParameterDeclaration) SetParameterValueType(v string) *StringParameterDeclaration {
	s.ParameterValueType = &v
	return s
}

// SetValueWhenUnset sets the ValueWhenUnset field's value.
func (s *StringParameterDeclaration) SetValueWhenUnset(v *StringValueWhenUnsetConfiguration) *StringParameterDeclaration {
	s.ValueWhenUnset = v
	return s
}

// The configuration that defines the default value of a String parameter when
// a value has not been set.
type StringValueWhenUnsetConfiguration struct {
	_ struct{} `type:"structure"`

	// A custom value that's used when the value of a parameter isn't set.
	//
	// CustomValue is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by StringValueWhenUnsetConfiguration's
	// String and GoString methods.
	CustomValue *string `type:"string" sensitive:"true"`

	// The built-in options for default values. The value can be one of the following:
	//
	//    * RECOMMENDED: The recommended value.
	//
	//    * NULL: The NULL value.
	ValueWhenUnsetOption *string `type:"string" enum:"ValueWhenUnsetOption"`
}

// 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 StringValueWhenUnsetConfiguration) 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 StringValueWhenUnsetConfiguration) GoString() string {
	return s.String()
}

// SetCustomValue sets the CustomValue field's value.
func (s *StringValueWhenUnsetConfiguration) SetCustomValue(v string) *StringValueWhenUnsetConfiguration {
	s.CustomValue = &v
	return s
}

// SetValueWhenUnsetOption sets the ValueWhenUnsetOption field's value.
func (s *StringValueWhenUnsetConfiguration) SetValueWhenUnsetOption(v string) *StringValueWhenUnsetConfiguration {
	s.ValueWhenUnsetOption = &v
	return s
}

// The subtotal options.
type SubtotalOptions struct {
	_ struct{} `type:"structure"`

	// The custom label string for the subtotal cells.
	CustomLabel *string `type:"string"`

	// The field level (all, custom, last) for the subtotal cells.
	FieldLevel *string `type:"string" enum:"PivotTableSubtotalLevel"`

	// The optional configuration of subtotal cells.
	FieldLevelOptions []*PivotTableFieldSubtotalOptions `type:"list"`

	// The cell styling options for the subtotals of header cells.
	MetricHeaderCellStyle *TableCellStyle `type:"structure"`

	// The style targets options for subtotals.
	StyleTargets []*TableStyleTarget `type:"list"`

	// The cell styling options for the subtotal cells.
	TotalCellStyle *TableCellStyle `type:"structure"`

	// The visibility configuration for the subtotal cells.
	TotalsVisibility *string `type:"string" enum:"Visibility"`

	// The cell styling options for the subtotals of value cells.
	ValueCellStyle *TableCellStyle `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 SubtotalOptions) 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 SubtotalOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SubtotalOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SubtotalOptions"}
	if s.FieldLevelOptions != nil {
		for i, v := range s.FieldLevelOptions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "FieldLevelOptions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.MetricHeaderCellStyle != nil {
		if err := s.MetricHeaderCellStyle.Validate(); err != nil {
			invalidParams.AddNested("MetricHeaderCellStyle", err.(request.ErrInvalidParams))
		}
	}
	if s.StyleTargets != nil {
		for i, v := range s.StyleTargets {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "StyleTargets", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.TotalCellStyle != nil {
		if err := s.TotalCellStyle.Validate(); err != nil {
			invalidParams.AddNested("TotalCellStyle", err.(request.ErrInvalidParams))
		}
	}
	if s.ValueCellStyle != nil {
		if err := s.ValueCellStyle.Validate(); err != nil {
			invalidParams.AddNested("ValueCellStyle", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCustomLabel sets the CustomLabel field's value.
func (s *SubtotalOptions) SetCustomLabel(v string) *SubtotalOptions {
	s.CustomLabel = &v
	return s
}

// SetFieldLevel sets the FieldLevel field's value.
func (s *SubtotalOptions) SetFieldLevel(v string) *SubtotalOptions {
	s.FieldLevel = &v
	return s
}

// SetFieldLevelOptions sets the FieldLevelOptions field's value.
func (s *SubtotalOptions) SetFieldLevelOptions(v []*PivotTableFieldSubtotalOptions) *SubtotalOptions {
	s.FieldLevelOptions = v
	return s
}

// SetMetricHeaderCellStyle sets the MetricHeaderCellStyle field's value.
func (s *SubtotalOptions) SetMetricHeaderCellStyle(v *TableCellStyle) *SubtotalOptions {
	s.MetricHeaderCellStyle = v
	return s
}

// SetStyleTargets sets the StyleTargets field's value.
func (s *SubtotalOptions) SetStyleTargets(v []*TableStyleTarget) *SubtotalOptions {
	s.StyleTargets = v
	return s
}

// SetTotalCellStyle sets the TotalCellStyle field's value.
func (s *SubtotalOptions) SetTotalCellStyle(v *TableCellStyle) *SubtotalOptions {
	s.TotalCellStyle = v
	return s
}

// SetTotalsVisibility sets the TotalsVisibility field's value.
func (s *SubtotalOptions) SetTotalsVisibility(v string) *SubtotalOptions {
	s.TotalsVisibility = &v
	return s
}

// SetValueCellStyle sets the ValueCellStyle field's value.
func (s *SubtotalOptions) SetValueCellStyle(v *TableCellStyle) *SubtotalOptions {
	s.ValueCellStyle = v
	return s
}

// The definition for a SucceededTopicReviewedAnswer.
type SucceededTopicReviewedAnswer struct {
	_ struct{} `type:"structure"`

	// The answer ID for the SucceededTopicReviewedAnswer.
	AnswerId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SucceededTopicReviewedAnswer) 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 SucceededTopicReviewedAnswer) GoString() string {
	return s.String()
}

// SetAnswerId sets the AnswerId field's value.
func (s *SucceededTopicReviewedAnswer) SetAnswerId(v string) *SucceededTopicReviewedAnswer {
	s.AnswerId = &v
	return s
}

// A success entry that occurs when a KeyRegistration job is successfully applied
// to the Amazon QuickSight account.
type SuccessfulKeyRegistrationEntry struct {
	_ struct{} `type:"structure"`

	// The ARN of the KMS key that is associated with the SuccessfulKeyRegistrationEntry
	// entry.
	//
	// KeyArn is a required field
	KeyArn *string `type:"string" required:"true"`

	// The HTTP status of a SuccessfulKeyRegistrationEntry entry.
	//
	// StatusCode is a required field
	StatusCode *int64 `type:"integer" 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 SuccessfulKeyRegistrationEntry) 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 SuccessfulKeyRegistrationEntry) GoString() string {
	return s.String()
}

// SetKeyArn sets the KeyArn field's value.
func (s *SuccessfulKeyRegistrationEntry) SetKeyArn(v string) *SuccessfulKeyRegistrationEntry {
	s.KeyArn = &v
	return s
}

// SetStatusCode sets the StatusCode field's value.
func (s *SuccessfulKeyRegistrationEntry) SetStatusCode(v int64) *SuccessfulKeyRegistrationEntry {
	s.StatusCode = &v
	return s
}

// The aggregated field well for the table.
type TableAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The group by field well for a pivot table. Values are grouped by group by
	// fields.
	GroupBy []*DimensionField `type:"list"`

	// The values field well for a pivot table. Values are aggregated based on group
	// by fields.
	Values []*MeasureField `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 TableAggregatedFieldWells) 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 TableAggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableAggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableAggregatedFieldWells"}
	if s.GroupBy != nil {
		for i, v := range s.GroupBy {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GroupBy", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Values != nil {
		for i, v := range s.Values {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Values", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetGroupBy sets the GroupBy field's value.
func (s *TableAggregatedFieldWells) SetGroupBy(v []*DimensionField) *TableAggregatedFieldWells {
	s.GroupBy = v
	return s
}

// SetValues sets the Values field's value.
func (s *TableAggregatedFieldWells) SetValues(v []*MeasureField) *TableAggregatedFieldWells {
	s.Values = v
	return s
}

// The border options for a table border.
type TableBorderOptions struct {
	_ struct{} `type:"structure"`

	// The color of a table border.
	Color *string `type:"string"`

	// The style (none, solid) of a table border.
	Style *string `type:"string" enum:"TableBorderStyle"`

	// The thickness of a table border.
	Thickness *int64 `min:"1" type:"integer"`
}

// 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 TableBorderOptions) 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 TableBorderOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableBorderOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableBorderOptions"}
	if s.Thickness != nil && *s.Thickness < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Thickness", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColor sets the Color field's value.
func (s *TableBorderOptions) SetColor(v string) *TableBorderOptions {
	s.Color = &v
	return s
}

// SetStyle sets the Style field's value.
func (s *TableBorderOptions) SetStyle(v string) *TableBorderOptions {
	s.Style = &v
	return s
}

// SetThickness sets the Thickness field's value.
func (s *TableBorderOptions) SetThickness(v int64) *TableBorderOptions {
	s.Thickness = &v
	return s
}

// The cell conditional formatting option for a table.
type TableCellConditionalFormatting struct {
	_ struct{} `type:"structure"`

	// The field ID of the cell for conditional formatting.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The text format of the cell for conditional formatting.
	TextFormat *TextConditionalFormat `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 TableCellConditionalFormatting) 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 TableCellConditionalFormatting) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableCellConditionalFormatting) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableCellConditionalFormatting"}
	if s.FieldId == nil {
		invalidParams.Add(request.NewErrParamRequired("FieldId"))
	}
	if s.FieldId != nil && len(*s.FieldId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FieldId", 1))
	}
	if s.TextFormat != nil {
		if err := s.TextFormat.Validate(); err != nil {
			invalidParams.AddNested("TextFormat", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldId sets the FieldId field's value.
func (s *TableCellConditionalFormatting) SetFieldId(v string) *TableCellConditionalFormatting {
	s.FieldId = &v
	return s
}

// SetTextFormat sets the TextFormat field's value.
func (s *TableCellConditionalFormatting) SetTextFormat(v *TextConditionalFormat) *TableCellConditionalFormatting {
	s.TextFormat = v
	return s
}

// The sizing options for the table image configuration.
type TableCellImageSizingConfiguration struct {
	_ struct{} `type:"structure"`

	// The cell scaling configuration of the sizing options for the table image
	// configuration.
	TableCellImageScalingConfiguration *string `type:"string" enum:"TableCellImageScalingConfiguration"`
}

// 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 TableCellImageSizingConfiguration) 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 TableCellImageSizingConfiguration) GoString() string {
	return s.String()
}

// SetTableCellImageScalingConfiguration sets the TableCellImageScalingConfiguration field's value.
func (s *TableCellImageSizingConfiguration) SetTableCellImageScalingConfiguration(v string) *TableCellImageSizingConfiguration {
	s.TableCellImageScalingConfiguration = &v
	return s
}

// The table cell style for a cell in pivot table or table visual.
type TableCellStyle struct {
	_ struct{} `type:"structure"`

	// The background color for the table cells.
	BackgroundColor *string `type:"string"`

	// The borders for the table cells.
	Border *GlobalTableBorderOptions `type:"structure"`

	// The font configuration of the table cells.
	FontConfiguration *FontConfiguration `type:"structure"`

	// The height color for the table cells.
	Height *int64 `min:"8" type:"integer"`

	// The horizontal text alignment (left, center, right, auto) for the table cells.
	HorizontalTextAlignment *string `type:"string" enum:"HorizontalTextAlignment"`

	// The text wrap (none, wrap) for the table cells.
	TextWrap *string `type:"string" enum:"TextWrap"`

	// The vertical text alignment (top, middle, bottom) for the table cells.
	VerticalTextAlignment *string `type:"string" enum:"VerticalTextAlignment"`

	// The visibility of the table cells.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 TableCellStyle) 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 TableCellStyle) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableCellStyle) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableCellStyle"}
	if s.Height != nil && *s.Height < 8 {
		invalidParams.Add(request.NewErrParamMinValue("Height", 8))
	}
	if s.Border != nil {
		if err := s.Border.Validate(); err != nil {
			invalidParams.AddNested("Border", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBackgroundColor sets the BackgroundColor field's value.
func (s *TableCellStyle) SetBackgroundColor(v string) *TableCellStyle {
	s.BackgroundColor = &v
	return s
}

// SetBorder sets the Border field's value.
func (s *TableCellStyle) SetBorder(v *GlobalTableBorderOptions) *TableCellStyle {
	s.Border = v
	return s
}

// SetFontConfiguration sets the FontConfiguration field's value.
func (s *TableCellStyle) SetFontConfiguration(v *FontConfiguration) *TableCellStyle {
	s.FontConfiguration = v
	return s
}

// SetHeight sets the Height field's value.
func (s *TableCellStyle) SetHeight(v int64) *TableCellStyle {
	s.Height = &v
	return s
}

// SetHorizontalTextAlignment sets the HorizontalTextAlignment field's value.
func (s *TableCellStyle) SetHorizontalTextAlignment(v string) *TableCellStyle {
	s.HorizontalTextAlignment = &v
	return s
}

// SetTextWrap sets the TextWrap field's value.
func (s *TableCellStyle) SetTextWrap(v string) *TableCellStyle {
	s.TextWrap = &v
	return s
}

// SetVerticalTextAlignment sets the VerticalTextAlignment field's value.
func (s *TableCellStyle) SetVerticalTextAlignment(v string) *TableCellStyle {
	s.VerticalTextAlignment = &v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *TableCellStyle) SetVisibility(v string) *TableCellStyle {
	s.Visibility = &v
	return s
}

// The conditional formatting for a PivotTableVisual.
type TableConditionalFormatting struct {
	_ struct{} `type:"structure"`

	// Conditional formatting options for a PivotTableVisual.
	ConditionalFormattingOptions []*TableConditionalFormattingOption `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 TableConditionalFormatting) 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 TableConditionalFormatting) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableConditionalFormatting) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableConditionalFormatting"}
	if s.ConditionalFormattingOptions != nil {
		for i, v := range s.ConditionalFormattingOptions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ConditionalFormattingOptions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConditionalFormattingOptions sets the ConditionalFormattingOptions field's value.
func (s *TableConditionalFormatting) SetConditionalFormattingOptions(v []*TableConditionalFormattingOption) *TableConditionalFormatting {
	s.ConditionalFormattingOptions = v
	return s
}

// Conditional formatting options for a PivotTableVisual.
type TableConditionalFormattingOption struct {
	_ struct{} `type:"structure"`

	// The cell conditional formatting option for a table.
	Cell *TableCellConditionalFormatting `type:"structure"`

	// The row conditional formatting option for a table.
	Row *TableRowConditionalFormatting `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 TableConditionalFormattingOption) 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 TableConditionalFormattingOption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableConditionalFormattingOption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableConditionalFormattingOption"}
	if s.Cell != nil {
		if err := s.Cell.Validate(); err != nil {
			invalidParams.AddNested("Cell", err.(request.ErrInvalidParams))
		}
	}
	if s.Row != nil {
		if err := s.Row.Validate(); err != nil {
			invalidParams.AddNested("Row", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCell sets the Cell field's value.
func (s *TableConditionalFormattingOption) SetCell(v *TableCellConditionalFormatting) *TableConditionalFormattingOption {
	s.Cell = v
	return s
}

// SetRow sets the Row field's value.
func (s *TableConditionalFormattingOption) SetRow(v *TableRowConditionalFormatting) *TableConditionalFormattingOption {
	s.Row = v
	return s
}

// The configuration for a TableVisual.
type TableConfiguration struct {
	_ struct{} `type:"structure"`

	// The field options for a table visual.
	FieldOptions *TableFieldOptions `type:"structure"`

	// The field wells of the visual.
	FieldWells *TableFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The paginated report options for a table visual.
	PaginatedReportOptions *TablePaginatedReportOptions `type:"structure"`

	// The sort configuration for a TableVisual.
	SortConfiguration *TableSortConfiguration `type:"structure"`

	// A collection of inline visualizations to display within a chart.
	TableInlineVisualizations []*TableInlineVisualization `type:"list"`

	// The table options for a table visual.
	TableOptions *TableOptions `type:"structure"`

	// The total options for a table visual.
	TotalOptions *TotalOptions `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 TableConfiguration) 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 TableConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableConfiguration"}
	if s.FieldOptions != nil {
		if err := s.FieldOptions.Validate(); err != nil {
			invalidParams.AddNested("FieldOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.SortConfiguration != nil {
		if err := s.SortConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SortConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.TableInlineVisualizations != nil {
		for i, v := range s.TableInlineVisualizations {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TableInlineVisualizations", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.TableOptions != nil {
		if err := s.TableOptions.Validate(); err != nil {
			invalidParams.AddNested("TableOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.TotalOptions != nil {
		if err := s.TotalOptions.Validate(); err != nil {
			invalidParams.AddNested("TotalOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldOptions sets the FieldOptions field's value.
func (s *TableConfiguration) SetFieldOptions(v *TableFieldOptions) *TableConfiguration {
	s.FieldOptions = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *TableConfiguration) SetFieldWells(v *TableFieldWells) *TableConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *TableConfiguration) SetInteractions(v *VisualInteractionOptions) *TableConfiguration {
	s.Interactions = v
	return s
}

// SetPaginatedReportOptions sets the PaginatedReportOptions field's value.
func (s *TableConfiguration) SetPaginatedReportOptions(v *TablePaginatedReportOptions) *TableConfiguration {
	s.PaginatedReportOptions = v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *TableConfiguration) SetSortConfiguration(v *TableSortConfiguration) *TableConfiguration {
	s.SortConfiguration = v
	return s
}

// SetTableInlineVisualizations sets the TableInlineVisualizations field's value.
func (s *TableConfiguration) SetTableInlineVisualizations(v []*TableInlineVisualization) *TableConfiguration {
	s.TableInlineVisualizations = v
	return s
}

// SetTableOptions sets the TableOptions field's value.
func (s *TableConfiguration) SetTableOptions(v *TableOptions) *TableConfiguration {
	s.TableOptions = v
	return s
}

// SetTotalOptions sets the TotalOptions field's value.
func (s *TableConfiguration) SetTotalOptions(v *TotalOptions) *TableConfiguration {
	s.TotalOptions = v
	return s
}

// The custom icon content for the table link content configuration.
type TableFieldCustomIconContent struct {
	_ struct{} `type:"structure"`

	// The icon set type (link) of the custom icon content for table URL link content.
	Icon *string `type:"string" enum:"TableFieldIconSetType"`
}

// 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 TableFieldCustomIconContent) 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 TableFieldCustomIconContent) GoString() string {
	return s.String()
}

// SetIcon sets the Icon field's value.
func (s *TableFieldCustomIconContent) SetIcon(v string) *TableFieldCustomIconContent {
	s.Icon = &v
	return s
}

// The custom text content (value, font configuration) for the table link content
// configuration.
type TableFieldCustomTextContent struct {
	_ struct{} `type:"structure"`

	// The font configuration of the custom text content for the table URL link
	// content.
	//
	// FontConfiguration is a required field
	FontConfiguration *FontConfiguration `type:"structure" required:"true"`

	// The string value of the custom text content for the table URL link content.
	Value *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TableFieldCustomTextContent) 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 TableFieldCustomTextContent) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableFieldCustomTextContent) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableFieldCustomTextContent"}
	if s.FontConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("FontConfiguration"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFontConfiguration sets the FontConfiguration field's value.
func (s *TableFieldCustomTextContent) SetFontConfiguration(v *FontConfiguration) *TableFieldCustomTextContent {
	s.FontConfiguration = v
	return s
}

// SetValue sets the Value field's value.
func (s *TableFieldCustomTextContent) SetValue(v string) *TableFieldCustomTextContent {
	s.Value = &v
	return s
}

// The image configuration of a table field URL.
type TableFieldImageConfiguration struct {
	_ struct{} `type:"structure"`

	// The sizing options for the table image configuration.
	SizingOptions *TableCellImageSizingConfiguration `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 TableFieldImageConfiguration) 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 TableFieldImageConfiguration) GoString() string {
	return s.String()
}

// SetSizingOptions sets the SizingOptions field's value.
func (s *TableFieldImageConfiguration) SetSizingOptions(v *TableCellImageSizingConfiguration) *TableFieldImageConfiguration {
	s.SizingOptions = v
	return s
}

// The link configuration of a table field URL.
type TableFieldLinkConfiguration struct {
	_ struct{} `type:"structure"`

	// The URL content (text, icon) for the table link configuration.
	//
	// Content is a required field
	Content *TableFieldLinkContentConfiguration `type:"structure" required:"true"`

	// The URL target (new tab, new window, same tab) for the table link configuration.
	//
	// Target is a required field
	Target *string `type:"string" required:"true" enum:"URLTargetConfiguration"`
}

// 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 TableFieldLinkConfiguration) 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 TableFieldLinkConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableFieldLinkConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableFieldLinkConfiguration"}
	if s.Content == nil {
		invalidParams.Add(request.NewErrParamRequired("Content"))
	}
	if s.Target == nil {
		invalidParams.Add(request.NewErrParamRequired("Target"))
	}
	if s.Content != nil {
		if err := s.Content.Validate(); err != nil {
			invalidParams.AddNested("Content", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContent sets the Content field's value.
func (s *TableFieldLinkConfiguration) SetContent(v *TableFieldLinkContentConfiguration) *TableFieldLinkConfiguration {
	s.Content = v
	return s
}

// SetTarget sets the Target field's value.
func (s *TableFieldLinkConfiguration) SetTarget(v string) *TableFieldLinkConfiguration {
	s.Target = &v
	return s
}

// The URL content (text, icon) for the table link configuration.
type TableFieldLinkContentConfiguration struct {
	_ struct{} `type:"structure"`

	// The custom icon content for the table link content configuration.
	CustomIconContent *TableFieldCustomIconContent `type:"structure"`

	// The custom text content (value, font configuration) for the table link content
	// configuration.
	CustomTextContent *TableFieldCustomTextContent `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 TableFieldLinkContentConfiguration) 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 TableFieldLinkContentConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableFieldLinkContentConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableFieldLinkContentConfiguration"}
	if s.CustomTextContent != nil {
		if err := s.CustomTextContent.Validate(); err != nil {
			invalidParams.AddNested("CustomTextContent", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCustomIconContent sets the CustomIconContent field's value.
func (s *TableFieldLinkContentConfiguration) SetCustomIconContent(v *TableFieldCustomIconContent) *TableFieldLinkContentConfiguration {
	s.CustomIconContent = v
	return s
}

// SetCustomTextContent sets the CustomTextContent field's value.
func (s *TableFieldLinkContentConfiguration) SetCustomTextContent(v *TableFieldCustomTextContent) *TableFieldLinkContentConfiguration {
	s.CustomTextContent = v
	return s
}

// The options for a table field.
type TableFieldOption struct {
	_ struct{} `type:"structure"`

	// The custom label for a table field.
	CustomLabel *string `min:"1" type:"string"`

	// The field ID for a table field.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The URL configuration for a table field.
	URLStyling *TableFieldURLConfiguration `type:"structure"`

	// The visibility of a table field.
	Visibility *string `type:"string" enum:"Visibility"`

	// The width for a table field.
	Width *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TableFieldOption) 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 TableFieldOption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableFieldOption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableFieldOption"}
	if s.CustomLabel != nil && len(*s.CustomLabel) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CustomLabel", 1))
	}
	if s.FieldId == nil {
		invalidParams.Add(request.NewErrParamRequired("FieldId"))
	}
	if s.FieldId != nil && len(*s.FieldId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FieldId", 1))
	}
	if s.URLStyling != nil {
		if err := s.URLStyling.Validate(); err != nil {
			invalidParams.AddNested("URLStyling", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCustomLabel sets the CustomLabel field's value.
func (s *TableFieldOption) SetCustomLabel(v string) *TableFieldOption {
	s.CustomLabel = &v
	return s
}

// SetFieldId sets the FieldId field's value.
func (s *TableFieldOption) SetFieldId(v string) *TableFieldOption {
	s.FieldId = &v
	return s
}

// SetURLStyling sets the URLStyling field's value.
func (s *TableFieldOption) SetURLStyling(v *TableFieldURLConfiguration) *TableFieldOption {
	s.URLStyling = v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *TableFieldOption) SetVisibility(v string) *TableFieldOption {
	s.Visibility = &v
	return s
}

// SetWidth sets the Width field's value.
func (s *TableFieldOption) SetWidth(v string) *TableFieldOption {
	s.Width = &v
	return s
}

// The field options of a table visual.
type TableFieldOptions struct {
	_ struct{} `type:"structure"`

	// The order of the field IDs that are configured as field options for a table
	// visual.
	Order []*string `type:"list"`

	// The settings for the pinned columns of a table visual.
	PinnedFieldOptions *TablePinnedFieldOptions `type:"structure"`

	// The field options to be configured to a table.
	SelectedFieldOptions []*TableFieldOption `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 TableFieldOptions) 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 TableFieldOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableFieldOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableFieldOptions"}
	if s.SelectedFieldOptions != nil {
		for i, v := range s.SelectedFieldOptions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SelectedFieldOptions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetOrder sets the Order field's value.
func (s *TableFieldOptions) SetOrder(v []*string) *TableFieldOptions {
	s.Order = v
	return s
}

// SetPinnedFieldOptions sets the PinnedFieldOptions field's value.
func (s *TableFieldOptions) SetPinnedFieldOptions(v *TablePinnedFieldOptions) *TableFieldOptions {
	s.PinnedFieldOptions = v
	return s
}

// SetSelectedFieldOptions sets the SelectedFieldOptions field's value.
func (s *TableFieldOptions) SetSelectedFieldOptions(v []*TableFieldOption) *TableFieldOptions {
	s.SelectedFieldOptions = v
	return s
}

// The URL configuration for a table field.
type TableFieldURLConfiguration struct {
	_ struct{} `type:"structure"`

	// The image configuration of a table field URL.
	ImageConfiguration *TableFieldImageConfiguration `type:"structure"`

	// The link configuration of a table field URL.
	LinkConfiguration *TableFieldLinkConfiguration `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 TableFieldURLConfiguration) 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 TableFieldURLConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableFieldURLConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableFieldURLConfiguration"}
	if s.LinkConfiguration != nil {
		if err := s.LinkConfiguration.Validate(); err != nil {
			invalidParams.AddNested("LinkConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetImageConfiguration sets the ImageConfiguration field's value.
func (s *TableFieldURLConfiguration) SetImageConfiguration(v *TableFieldImageConfiguration) *TableFieldURLConfiguration {
	s.ImageConfiguration = v
	return s
}

// SetLinkConfiguration sets the LinkConfiguration field's value.
func (s *TableFieldURLConfiguration) SetLinkConfiguration(v *TableFieldLinkConfiguration) *TableFieldURLConfiguration {
	s.LinkConfiguration = v
	return s
}

// The field wells for a table visual.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type TableFieldWells struct {
	_ struct{} `type:"structure"`

	// The aggregated field well for the table.
	TableAggregatedFieldWells *TableAggregatedFieldWells `type:"structure"`

	// The unaggregated field well for the table.
	TableUnaggregatedFieldWells *TableUnaggregatedFieldWells `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 TableFieldWells) 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 TableFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableFieldWells"}
	if s.TableAggregatedFieldWells != nil {
		if err := s.TableAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("TableAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.TableUnaggregatedFieldWells != nil {
		if err := s.TableUnaggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("TableUnaggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTableAggregatedFieldWells sets the TableAggregatedFieldWells field's value.
func (s *TableFieldWells) SetTableAggregatedFieldWells(v *TableAggregatedFieldWells) *TableFieldWells {
	s.TableAggregatedFieldWells = v
	return s
}

// SetTableUnaggregatedFieldWells sets the TableUnaggregatedFieldWells field's value.
func (s *TableFieldWells) SetTableUnaggregatedFieldWells(v *TableUnaggregatedFieldWells) *TableFieldWells {
	s.TableUnaggregatedFieldWells = v
	return s
}

// The inline visualization of a specific type to display within a chart.
type TableInlineVisualization struct {
	_ struct{} `type:"structure"`

	// The configuration of the inline visualization of the data bars within a chart.
	DataBars *DataBarsOptions `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 TableInlineVisualization) 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 TableInlineVisualization) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableInlineVisualization) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableInlineVisualization"}
	if s.DataBars != nil {
		if err := s.DataBars.Validate(); err != nil {
			invalidParams.AddNested("DataBars", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataBars sets the DataBars field's value.
func (s *TableInlineVisualization) SetDataBars(v *DataBarsOptions) *TableInlineVisualization {
	s.DataBars = v
	return s
}

// The table options for a table visual.
type TableOptions struct {
	_ struct{} `type:"structure"`

	// The table cell style of table cells.
	CellStyle *TableCellStyle `type:"structure"`

	// The table cell style of a table header.
	HeaderStyle *TableCellStyle `type:"structure"`

	// The orientation (vertical, horizontal) for a table.
	Orientation *string `type:"string" enum:"TableOrientation"`

	// The row alternate color options (widget status, row alternate colors) for
	// a table.
	RowAlternateColorOptions *RowAlternateColorOptions `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 TableOptions) 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 TableOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableOptions"}
	if s.CellStyle != nil {
		if err := s.CellStyle.Validate(); err != nil {
			invalidParams.AddNested("CellStyle", err.(request.ErrInvalidParams))
		}
	}
	if s.HeaderStyle != nil {
		if err := s.HeaderStyle.Validate(); err != nil {
			invalidParams.AddNested("HeaderStyle", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCellStyle sets the CellStyle field's value.
func (s *TableOptions) SetCellStyle(v *TableCellStyle) *TableOptions {
	s.CellStyle = v
	return s
}

// SetHeaderStyle sets the HeaderStyle field's value.
func (s *TableOptions) SetHeaderStyle(v *TableCellStyle) *TableOptions {
	s.HeaderStyle = v
	return s
}

// SetOrientation sets the Orientation field's value.
func (s *TableOptions) SetOrientation(v string) *TableOptions {
	s.Orientation = &v
	return s
}

// SetRowAlternateColorOptions sets the RowAlternateColorOptions field's value.
func (s *TableOptions) SetRowAlternateColorOptions(v *RowAlternateColorOptions) *TableOptions {
	s.RowAlternateColorOptions = v
	return s
}

// The paginated report options for a table visual.
type TablePaginatedReportOptions struct {
	_ struct{} `type:"structure"`

	// The visibility of repeating header rows on each page.
	OverflowColumnHeaderVisibility *string `type:"string" enum:"Visibility"`

	// The visibility of printing table overflow across pages.
	VerticalOverflowVisibility *string `type:"string" enum:"Visibility"`
}

// 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 TablePaginatedReportOptions) 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 TablePaginatedReportOptions) GoString() string {
	return s.String()
}

// SetOverflowColumnHeaderVisibility sets the OverflowColumnHeaderVisibility field's value.
func (s *TablePaginatedReportOptions) SetOverflowColumnHeaderVisibility(v string) *TablePaginatedReportOptions {
	s.OverflowColumnHeaderVisibility = &v
	return s
}

// SetVerticalOverflowVisibility sets the VerticalOverflowVisibility field's value.
func (s *TablePaginatedReportOptions) SetVerticalOverflowVisibility(v string) *TablePaginatedReportOptions {
	s.VerticalOverflowVisibility = &v
	return s
}

// The settings for the pinned columns of a table visual.
type TablePinnedFieldOptions struct {
	_ struct{} `type:"structure"`

	// A list of columns to be pinned to the left of a table visual.
	PinnedLeftFields []*string `type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TablePinnedFieldOptions) 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 TablePinnedFieldOptions) GoString() string {
	return s.String()
}

// SetPinnedLeftFields sets the PinnedLeftFields field's value.
func (s *TablePinnedFieldOptions) SetPinnedLeftFields(v []*string) *TablePinnedFieldOptions {
	s.PinnedLeftFields = v
	return s
}

// The conditional formatting of a table row.
type TableRowConditionalFormatting struct {
	_ struct{} `type:"structure"`

	// The conditional formatting color (solid, gradient) of the background for
	// a table row.
	BackgroundColor *ConditionalFormattingColor `type:"structure"`

	// The conditional formatting color (solid, gradient) of the text for a table
	// row.
	TextColor *ConditionalFormattingColor `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 TableRowConditionalFormatting) 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 TableRowConditionalFormatting) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableRowConditionalFormatting) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableRowConditionalFormatting"}
	if s.BackgroundColor != nil {
		if err := s.BackgroundColor.Validate(); err != nil {
			invalidParams.AddNested("BackgroundColor", err.(request.ErrInvalidParams))
		}
	}
	if s.TextColor != nil {
		if err := s.TextColor.Validate(); err != nil {
			invalidParams.AddNested("TextColor", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBackgroundColor sets the BackgroundColor field's value.
func (s *TableRowConditionalFormatting) SetBackgroundColor(v *ConditionalFormattingColor) *TableRowConditionalFormatting {
	s.BackgroundColor = v
	return s
}

// SetTextColor sets the TextColor field's value.
func (s *TableRowConditionalFormatting) SetTextColor(v *ConditionalFormattingColor) *TableRowConditionalFormatting {
	s.TextColor = v
	return s
}

// The side border options for a table.
type TableSideBorderOptions struct {
	_ struct{} `type:"structure"`

	// The table border options of the bottom border.
	Bottom *TableBorderOptions `type:"structure"`

	// The table border options of the inner horizontal border.
	InnerHorizontal *TableBorderOptions `type:"structure"`

	// The table border options of the inner vertical border.
	InnerVertical *TableBorderOptions `type:"structure"`

	// The table border options of the left border.
	Left *TableBorderOptions `type:"structure"`

	// The table border options of the right border.
	Right *TableBorderOptions `type:"structure"`

	// The table border options of the top border.
	Top *TableBorderOptions `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 TableSideBorderOptions) 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 TableSideBorderOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableSideBorderOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableSideBorderOptions"}
	if s.Bottom != nil {
		if err := s.Bottom.Validate(); err != nil {
			invalidParams.AddNested("Bottom", err.(request.ErrInvalidParams))
		}
	}
	if s.InnerHorizontal != nil {
		if err := s.InnerHorizontal.Validate(); err != nil {
			invalidParams.AddNested("InnerHorizontal", err.(request.ErrInvalidParams))
		}
	}
	if s.InnerVertical != nil {
		if err := s.InnerVertical.Validate(); err != nil {
			invalidParams.AddNested("InnerVertical", err.(request.ErrInvalidParams))
		}
	}
	if s.Left != nil {
		if err := s.Left.Validate(); err != nil {
			invalidParams.AddNested("Left", err.(request.ErrInvalidParams))
		}
	}
	if s.Right != nil {
		if err := s.Right.Validate(); err != nil {
			invalidParams.AddNested("Right", err.(request.ErrInvalidParams))
		}
	}
	if s.Top != nil {
		if err := s.Top.Validate(); err != nil {
			invalidParams.AddNested("Top", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBottom sets the Bottom field's value.
func (s *TableSideBorderOptions) SetBottom(v *TableBorderOptions) *TableSideBorderOptions {
	s.Bottom = v
	return s
}

// SetInnerHorizontal sets the InnerHorizontal field's value.
func (s *TableSideBorderOptions) SetInnerHorizontal(v *TableBorderOptions) *TableSideBorderOptions {
	s.InnerHorizontal = v
	return s
}

// SetInnerVertical sets the InnerVertical field's value.
func (s *TableSideBorderOptions) SetInnerVertical(v *TableBorderOptions) *TableSideBorderOptions {
	s.InnerVertical = v
	return s
}

// SetLeft sets the Left field's value.
func (s *TableSideBorderOptions) SetLeft(v *TableBorderOptions) *TableSideBorderOptions {
	s.Left = v
	return s
}

// SetRight sets the Right field's value.
func (s *TableSideBorderOptions) SetRight(v *TableBorderOptions) *TableSideBorderOptions {
	s.Right = v
	return s
}

// SetTop sets the Top field's value.
func (s *TableSideBorderOptions) SetTop(v *TableBorderOptions) *TableSideBorderOptions {
	s.Top = v
	return s
}

// The sort configuration for a TableVisual.
type TableSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The pagination configuration (page size, page number) for the table.
	PaginationConfiguration *PaginationConfiguration `type:"structure"`

	// The field sort options for rows in the table.
	RowSort []*FieldSortOptions `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 TableSortConfiguration) 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 TableSortConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableSortConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableSortConfiguration"}
	if s.PaginationConfiguration != nil {
		if err := s.PaginationConfiguration.Validate(); err != nil {
			invalidParams.AddNested("PaginationConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.RowSort != nil {
		for i, v := range s.RowSort {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RowSort", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPaginationConfiguration sets the PaginationConfiguration field's value.
func (s *TableSortConfiguration) SetPaginationConfiguration(v *PaginationConfiguration) *TableSortConfiguration {
	s.PaginationConfiguration = v
	return s
}

// SetRowSort sets the RowSort field's value.
func (s *TableSortConfiguration) SetRowSort(v []*FieldSortOptions) *TableSortConfiguration {
	s.RowSort = v
	return s
}

// The table style target.
type TableStyleTarget struct {
	_ struct{} `type:"structure"`

	// The cell type of the table style target.
	//
	// CellType is a required field
	CellType *string `type:"string" required:"true" enum:"StyledCellType"`
}

// 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 TableStyleTarget) 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 TableStyleTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableStyleTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableStyleTarget"}
	if s.CellType == nil {
		invalidParams.Add(request.NewErrParamRequired("CellType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCellType sets the CellType field's value.
func (s *TableStyleTarget) SetCellType(v string) *TableStyleTarget {
	s.CellType = &v
	return s
}

// The unaggregated field well for the table.
type TableUnaggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The values field well for a pivot table. Values are unaggregated for an unaggregated
	// table.
	Values []*UnaggregatedField `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 TableUnaggregatedFieldWells) 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 TableUnaggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableUnaggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableUnaggregatedFieldWells"}
	if s.Values != nil {
		for i, v := range s.Values {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Values", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetValues sets the Values field's value.
func (s *TableUnaggregatedFieldWells) SetValues(v []*UnaggregatedField) *TableUnaggregatedFieldWells {
	s.Values = v
	return s
}

// A table visual.
//
// For more information, see Using tables as visuals (https://docs.aws.amazon.com/quicksight/latest/user/tabular.html)
// in the Amazon QuickSight User Guide.
type TableVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration settings of the visual.
	ChartConfiguration *TableConfiguration `type:"structure"`

	// The conditional formatting for a PivotTableVisual.
	ConditionalFormatting *TableConditionalFormatting `type:"structure"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers..
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TableVisual) 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 TableVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ConditionalFormatting != nil {
		if err := s.ConditionalFormatting.Validate(); err != nil {
			invalidParams.AddNested("ConditionalFormatting", err.(request.ErrInvalidParams))
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *TableVisual) SetActions(v []*VisualCustomAction) *TableVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *TableVisual) SetChartConfiguration(v *TableConfiguration) *TableVisual {
	s.ChartConfiguration = v
	return s
}

// SetConditionalFormatting sets the ConditionalFormatting field's value.
func (s *TableVisual) SetConditionalFormatting(v *TableConditionalFormatting) *TableVisual {
	s.ConditionalFormatting = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *TableVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *TableVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *TableVisual) SetTitle(v *VisualTitleLabelOptions) *TableVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *TableVisual) SetVisualId(v string) *TableVisual {
	s.VisualId = &v
	return s
}

// The key or keys of the key-value pairs for the resource tag or tags assigned
// to the resource.
type Tag struct {
	_ struct{} `type:"structure"`

	// Tag key.
	//
	// Key is a required field
	Key *string `min:"1" type:"string" required:"true"`

	// Tag value.
	//
	// Value is a required field
	Value *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Tag) 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 Tag) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Tag) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Tag"}
	if s.Key == nil {
		invalidParams.Add(request.NewErrParamRequired("Key"))
	}
	if s.Key != nil && len(*s.Key) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}
	if s.Value != nil && len(*s.Value) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKey sets the Key field's value.
func (s *Tag) SetKey(v string) *Tag {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *Tag) SetValue(v string) *Tag {
	s.Value = &v
	return s
}

// A transform operation that tags a column with additional information.
type TagColumnOperation struct {
	_ struct{} `type:"structure"`

	// The column that this operation acts on.
	//
	// ColumnName is a required field
	ColumnName *string `min:"1" type:"string" required:"true"`

	// The dataset column tag, currently only used for geospatial type tagging.
	//
	// This is not tags for the Amazon Web Services tagging feature.
	//
	// Tags is a required field
	Tags []*ColumnTag `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagColumnOperation) 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 TagColumnOperation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TagColumnOperation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TagColumnOperation"}
	if s.ColumnName == nil {
		invalidParams.Add(request.NewErrParamRequired("ColumnName"))
	}
	if s.ColumnName != nil && len(*s.ColumnName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ColumnName", 1))
	}
	if s.Tags == nil {
		invalidParams.Add(request.NewErrParamRequired("Tags"))
	}
	if s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumnName sets the ColumnName field's value.
func (s *TagColumnOperation) SetColumnName(v string) *TagColumnOperation {
	s.ColumnName = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *TagColumnOperation) SetTags(v []*ColumnTag) *TagColumnOperation {
	s.Tags = v
	return s
}

type TagResourceInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource that you want to tag.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"ResourceArn" type:"string" required:"true"`

	// Contains a map of the key-value pairs for the resource tag or tags assigned
	// to the resource.
	//
	// Tags is a required field
	Tags []*Tag `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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 s.Tags != nil && len(s.Tags) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
	}
	if s.Tags != nil {
		for i, v := range s.Tags {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
			}
		}
	}

	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 []*Tag) *TagResourceInput {
	s.Tags = v
	return s
}

type TagResourceOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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()
}

// SetRequestId sets the RequestId field's value.
func (s *TagResourceOutput) SetRequestId(v string) *TagResourceOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *TagResourceOutput) SetStatus(v int64) *TagResourceOutput {
	s.Status = &v
	return s
}

// A template object. A template is an entity in Amazon QuickSight that encapsulates
// the metadata required to create an analysis and that you can use to create
// a dashboard. A template adds a layer of abstraction by using placeholders
// to replace the dataset associated with an analysis. You can use templates
// to create dashboards by replacing dataset placeholders with datasets that
// follow the same schema that was used to create the source analysis and template.
//
// You can share templates across Amazon Web Services accounts by allowing users
// in other Amazon Web Services accounts to create a template or a dashboard
// from an existing template.
type Template struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the template.
	Arn *string `type:"string"`

	// Time when this was created.
	CreatedTime *time.Time `type:"timestamp"`

	// Time when this was last updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// The display name of the template.
	Name *string `min:"1" type:"string"`

	// The ID for the template. This is unique per Amazon Web Services Region for
	// each Amazon Web Services account.
	TemplateId *string `min:"1" type:"string"`

	// A structure describing the versions of the template.
	Version *TemplateVersion `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 Template) 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 Template) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *Template) SetArn(v string) *Template {
	s.Arn = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *Template) SetCreatedTime(v time.Time) *Template {
	s.CreatedTime = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *Template) SetLastUpdatedTime(v time.Time) *Template {
	s.LastUpdatedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *Template) SetName(v string) *Template {
	s.Name = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *Template) SetTemplateId(v string) *Template {
	s.TemplateId = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *Template) SetVersion(v *TemplateVersion) *Template {
	s.Version = v
	return s
}

// The template alias.
type TemplateAlias struct {
	_ struct{} `type:"structure"`

	// The display name of the template alias.
	AliasName *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the template alias.
	Arn *string `type:"string"`

	// The version number of the template alias.
	TemplateVersionNumber *int64 `min:"1" type:"long"`
}

// 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 TemplateAlias) 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 TemplateAlias) GoString() string {
	return s.String()
}

// SetAliasName sets the AliasName field's value.
func (s *TemplateAlias) SetAliasName(v string) *TemplateAlias {
	s.AliasName = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *TemplateAlias) SetArn(v string) *TemplateAlias {
	s.Arn = &v
	return s
}

// SetTemplateVersionNumber sets the TemplateVersionNumber field's value.
func (s *TemplateAlias) SetTemplateVersionNumber(v int64) *TemplateAlias {
	s.TemplateVersionNumber = &v
	return s
}

// List of errors that occurred when the template version creation failed.
type TemplateError struct {
	_ struct{} `type:"structure"`

	// Description of the error type.
	Message *string `type:"string"`

	// Type of error.
	Type *string `type:"string" enum:"TemplateErrorType"`

	// An error path that shows which entities caused the template error.
	ViolatedEntities []*Entity `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 TemplateError) 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 TemplateError) GoString() string {
	return s.String()
}

// SetMessage sets the Message field's value.
func (s *TemplateError) SetMessage(v string) *TemplateError {
	s.Message = &v
	return s
}

// SetType sets the Type field's value.
func (s *TemplateError) SetType(v string) *TemplateError {
	s.Type = &v
	return s
}

// SetViolatedEntities sets the ViolatedEntities field's value.
func (s *TemplateError) SetViolatedEntities(v []*Entity) *TemplateError {
	s.ViolatedEntities = v
	return s
}

// The source analysis of the template.
type TemplateSourceAnalysis struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`

	// A structure containing information about the dataset references used as placeholders
	// in the template.
	//
	// DataSetReferences is a required field
	DataSetReferences []*DataSetReference `min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TemplateSourceAnalysis) 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 TemplateSourceAnalysis) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TemplateSourceAnalysis) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TemplateSourceAnalysis"}
	if s.Arn == nil {
		invalidParams.Add(request.NewErrParamRequired("Arn"))
	}
	if s.DataSetReferences == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetReferences"))
	}
	if s.DataSetReferences != nil && len(s.DataSetReferences) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetReferences", 1))
	}
	if s.DataSetReferences != nil {
		for i, v := range s.DataSetReferences {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DataSetReferences", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetArn sets the Arn field's value.
func (s *TemplateSourceAnalysis) SetArn(v string) *TemplateSourceAnalysis {
	s.Arn = &v
	return s
}

// SetDataSetReferences sets the DataSetReferences field's value.
func (s *TemplateSourceAnalysis) SetDataSetReferences(v []*DataSetReference) *TemplateSourceAnalysis {
	s.DataSetReferences = v
	return s
}

// The source entity of the template.
type TemplateSourceEntity struct {
	_ struct{} `type:"structure"`

	// The source analysis, if it is based on an analysis.
	SourceAnalysis *TemplateSourceAnalysis `type:"structure"`

	// The source template, if it is based on an template.
	SourceTemplate *TemplateSourceTemplate `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 TemplateSourceEntity) 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 TemplateSourceEntity) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TemplateSourceEntity) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TemplateSourceEntity"}
	if s.SourceAnalysis != nil {
		if err := s.SourceAnalysis.Validate(); err != nil {
			invalidParams.AddNested("SourceAnalysis", err.(request.ErrInvalidParams))
		}
	}
	if s.SourceTemplate != nil {
		if err := s.SourceTemplate.Validate(); err != nil {
			invalidParams.AddNested("SourceTemplate", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSourceAnalysis sets the SourceAnalysis field's value.
func (s *TemplateSourceEntity) SetSourceAnalysis(v *TemplateSourceAnalysis) *TemplateSourceEntity {
	s.SourceAnalysis = v
	return s
}

// SetSourceTemplate sets the SourceTemplate field's value.
func (s *TemplateSourceEntity) SetSourceTemplate(v *TemplateSourceTemplate) *TemplateSourceEntity {
	s.SourceTemplate = v
	return s
}

// The source template of the template.
type TemplateSourceTemplate struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	//
	// Arn is a required field
	Arn *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TemplateSourceTemplate) 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 TemplateSourceTemplate) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TemplateSourceTemplate) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TemplateSourceTemplate"}
	if s.Arn == nil {
		invalidParams.Add(request.NewErrParamRequired("Arn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetArn sets the Arn field's value.
func (s *TemplateSourceTemplate) SetArn(v string) *TemplateSourceTemplate {
	s.Arn = &v
	return s
}

// The template summary.
type TemplateSummary struct {
	_ struct{} `type:"structure"`

	// A summary of a template.
	Arn *string `type:"string"`

	// The last time that this template was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The last time that this template was updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// A structure containing a list of version numbers for the template summary.
	LatestVersionNumber *int64 `min:"1" type:"long"`

	// A display name for the template.
	Name *string `min:"1" type:"string"`

	// The ID of the template. This ID is unique per Amazon Web Services Region
	// for each Amazon Web Services account.
	TemplateId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TemplateSummary) 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 TemplateSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *TemplateSummary) SetArn(v string) *TemplateSummary {
	s.Arn = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *TemplateSummary) SetCreatedTime(v time.Time) *TemplateSummary {
	s.CreatedTime = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *TemplateSummary) SetLastUpdatedTime(v time.Time) *TemplateSummary {
	s.LastUpdatedTime = &v
	return s
}

// SetLatestVersionNumber sets the LatestVersionNumber field's value.
func (s *TemplateSummary) SetLatestVersionNumber(v int64) *TemplateSummary {
	s.LatestVersionNumber = &v
	return s
}

// SetName sets the Name field's value.
func (s *TemplateSummary) SetName(v string) *TemplateSummary {
	s.Name = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *TemplateSummary) SetTemplateId(v string) *TemplateSummary {
	s.TemplateId = &v
	return s
}

// A version of a template.
type TemplateVersion struct {
	_ struct{} `type:"structure"`

	// The time that this template version was created.
	CreatedTime *time.Time `type:"timestamp"`

	// Schema of the dataset identified by the placeholder. Any dashboard created
	// from this template should be bound to new datasets matching the same schema
	// described through this API operation.
	DataSetConfigurations []*DataSetConfiguration `type:"list"`

	// The description of the template.
	Description *string `min:"1" type:"string"`

	// Errors associated with this template version.
	Errors []*TemplateError `min:"1" type:"list"`

	// A list of the associated sheets with the unique identifier and name of each
	// sheet.
	Sheets []*Sheet `type:"list"`

	// The Amazon Resource Name (ARN) of an analysis or template that was used to
	// create this template.
	SourceEntityArn *string `type:"string"`

	// The status that is associated with the template.
	//
	//    * CREATION_IN_PROGRESS
	//
	//    * CREATION_SUCCESSFUL
	//
	//    * CREATION_FAILED
	//
	//    * UPDATE_IN_PROGRESS
	//
	//    * UPDATE_SUCCESSFUL
	//
	//    * UPDATE_FAILED
	//
	//    * DELETED
	Status *string `type:"string" enum:"ResourceStatus"`

	// The ARN of the theme associated with this version of the template.
	ThemeArn *string `type:"string"`

	// The version number of the template version.
	VersionNumber *int64 `min:"1" type:"long"`
}

// 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 TemplateVersion) 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 TemplateVersion) GoString() string {
	return s.String()
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *TemplateVersion) SetCreatedTime(v time.Time) *TemplateVersion {
	s.CreatedTime = &v
	return s
}

// SetDataSetConfigurations sets the DataSetConfigurations field's value.
func (s *TemplateVersion) SetDataSetConfigurations(v []*DataSetConfiguration) *TemplateVersion {
	s.DataSetConfigurations = v
	return s
}

// SetDescription sets the Description field's value.
func (s *TemplateVersion) SetDescription(v string) *TemplateVersion {
	s.Description = &v
	return s
}

// SetErrors sets the Errors field's value.
func (s *TemplateVersion) SetErrors(v []*TemplateError) *TemplateVersion {
	s.Errors = v
	return s
}

// SetSheets sets the Sheets field's value.
func (s *TemplateVersion) SetSheets(v []*Sheet) *TemplateVersion {
	s.Sheets = v
	return s
}

// SetSourceEntityArn sets the SourceEntityArn field's value.
func (s *TemplateVersion) SetSourceEntityArn(v string) *TemplateVersion {
	s.SourceEntityArn = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *TemplateVersion) SetStatus(v string) *TemplateVersion {
	s.Status = &v
	return s
}

// SetThemeArn sets the ThemeArn field's value.
func (s *TemplateVersion) SetThemeArn(v string) *TemplateVersion {
	s.ThemeArn = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *TemplateVersion) SetVersionNumber(v int64) *TemplateVersion {
	s.VersionNumber = &v
	return s
}

// The detailed definition of a template.
type TemplateVersionDefinition struct {
	_ struct{} `type:"structure"`

	// The configuration for default analysis settings.
	AnalysisDefaults *AnalysisDefaults `type:"structure"`

	// An array of calculated field definitions for the template.
	CalculatedFields []*CalculatedField `type:"list"`

	// An array of template-level column configurations. Column configurations are
	// used to set default formatting for a column that's used throughout a template.
	ColumnConfigurations []*ColumnConfiguration `type:"list"`

	// An array of dataset configurations. These configurations define the required
	// columns for each dataset used within a template.
	//
	// DataSetConfigurations is a required field
	DataSetConfigurations []*DataSetConfiguration `type:"list" required:"true"`

	// Filter definitions for a template.
	//
	// For more information, see Filtering Data (https://docs.aws.amazon.com/quicksight/latest/user/filtering-visual-data.html)
	// in the Amazon QuickSight User Guide.
	FilterGroups []*FilterGroup `type:"list"`

	// An array of option definitions for a template.
	Options *AssetOptions `type:"structure"`

	// An array of parameter declarations for a template.
	//
	// Parameters are named variables that can transfer a value for use by an action
	// or an object.
	//
	// For more information, see Parameters in Amazon QuickSight (https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html)
	// in the Amazon QuickSight User Guide.
	ParameterDeclarations []*ParameterDeclaration `type:"list"`

	// An array of sheet definitions for a template.
	Sheets []*SheetDefinition `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 TemplateVersionDefinition) 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 TemplateVersionDefinition) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TemplateVersionDefinition) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TemplateVersionDefinition"}
	if s.DataSetConfigurations == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetConfigurations"))
	}
	if s.AnalysisDefaults != nil {
		if err := s.AnalysisDefaults.Validate(); err != nil {
			invalidParams.AddNested("AnalysisDefaults", err.(request.ErrInvalidParams))
		}
	}
	if s.CalculatedFields != nil {
		for i, v := range s.CalculatedFields {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CalculatedFields", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ColumnConfigurations != nil {
		for i, v := range s.ColumnConfigurations {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnConfigurations", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.FilterGroups != nil {
		for i, v := range s.FilterGroups {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "FilterGroups", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ParameterDeclarations != nil {
		for i, v := range s.ParameterDeclarations {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ParameterDeclarations", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Sheets != nil {
		for i, v := range s.Sheets {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Sheets", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAnalysisDefaults sets the AnalysisDefaults field's value.
func (s *TemplateVersionDefinition) SetAnalysisDefaults(v *AnalysisDefaults) *TemplateVersionDefinition {
	s.AnalysisDefaults = v
	return s
}

// SetCalculatedFields sets the CalculatedFields field's value.
func (s *TemplateVersionDefinition) SetCalculatedFields(v []*CalculatedField) *TemplateVersionDefinition {
	s.CalculatedFields = v
	return s
}

// SetColumnConfigurations sets the ColumnConfigurations field's value.
func (s *TemplateVersionDefinition) SetColumnConfigurations(v []*ColumnConfiguration) *TemplateVersionDefinition {
	s.ColumnConfigurations = v
	return s
}

// SetDataSetConfigurations sets the DataSetConfigurations field's value.
func (s *TemplateVersionDefinition) SetDataSetConfigurations(v []*DataSetConfiguration) *TemplateVersionDefinition {
	s.DataSetConfigurations = v
	return s
}

// SetFilterGroups sets the FilterGroups field's value.
func (s *TemplateVersionDefinition) SetFilterGroups(v []*FilterGroup) *TemplateVersionDefinition {
	s.FilterGroups = v
	return s
}

// SetOptions sets the Options field's value.
func (s *TemplateVersionDefinition) SetOptions(v *AssetOptions) *TemplateVersionDefinition {
	s.Options = v
	return s
}

// SetParameterDeclarations sets the ParameterDeclarations field's value.
func (s *TemplateVersionDefinition) SetParameterDeclarations(v []*ParameterDeclaration) *TemplateVersionDefinition {
	s.ParameterDeclarations = v
	return s
}

// SetSheets sets the Sheets field's value.
func (s *TemplateVersionDefinition) SetSheets(v []*SheetDefinition) *TemplateVersionDefinition {
	s.Sheets = v
	return s
}

// The template version.
type TemplateVersionSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the template version.
	Arn *string `type:"string"`

	// The time that this template version was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The description of the template version.
	Description *string `min:"1" type:"string"`

	// The status of the template version.
	Status *string `type:"string" enum:"ResourceStatus"`

	// The version number of the template version.
	VersionNumber *int64 `min:"1" type:"long"`
}

// 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 TemplateVersionSummary) 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 TemplateVersionSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *TemplateVersionSummary) SetArn(v string) *TemplateVersionSummary {
	s.Arn = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *TemplateVersionSummary) SetCreatedTime(v time.Time) *TemplateVersionSummary {
	s.CreatedTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *TemplateVersionSummary) SetDescription(v string) *TemplateVersionSummary {
	s.Description = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *TemplateVersionSummary) SetStatus(v string) *TemplateVersionSummary {
	s.Status = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *TemplateVersionSummary) SetVersionNumber(v int64) *TemplateVersionSummary {
	s.VersionNumber = &v
	return s
}

// The parameters for Teradata.
type TeradataParameters struct {
	_ struct{} `type:"structure"`

	// Database.
	//
	// Database is a required field
	Database *string `min:"1" type:"string" required:"true"`

	// Host.
	//
	// Host is a required field
	Host *string `min:"1" type:"string" required:"true"`

	// Port.
	//
	// Port is a required field
	Port *int64 `min:"1" type:"integer" 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 TeradataParameters) 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 TeradataParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TeradataParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TeradataParameters"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Database != nil && len(*s.Database) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Database", 1))
	}
	if s.Host == nil {
		invalidParams.Add(request.NewErrParamRequired("Host"))
	}
	if s.Host != nil && len(*s.Host) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Host", 1))
	}
	if s.Port == nil {
		invalidParams.Add(request.NewErrParamRequired("Port"))
	}
	if s.Port != nil && *s.Port < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *TeradataParameters) SetDatabase(v string) *TeradataParameters {
	s.Database = &v
	return s
}

// SetHost sets the Host field's value.
func (s *TeradataParameters) SetHost(v string) *TeradataParameters {
	s.Host = &v
	return s
}

// SetPort sets the Port field's value.
func (s *TeradataParameters) SetPort(v int64) *TeradataParameters {
	s.Port = &v
	return s
}

// The display options of a control.
type TextAreaControlDisplayOptions struct {
	_ struct{} `type:"structure"`

	// The configuration of info icon label options.
	InfoIconLabelOptions *SheetControlInfoIconLabelOptions `type:"structure"`

	// The configuration of the placeholder options in a text area control.
	PlaceholderOptions *TextControlPlaceholderOptions `type:"structure"`

	// The options to configure the title visibility, name, and font size.
	TitleOptions *LabelOptions `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 TextAreaControlDisplayOptions) 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 TextAreaControlDisplayOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TextAreaControlDisplayOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TextAreaControlDisplayOptions"}
	if s.InfoIconLabelOptions != nil {
		if err := s.InfoIconLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("InfoIconLabelOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInfoIconLabelOptions sets the InfoIconLabelOptions field's value.
func (s *TextAreaControlDisplayOptions) SetInfoIconLabelOptions(v *SheetControlInfoIconLabelOptions) *TextAreaControlDisplayOptions {
	s.InfoIconLabelOptions = v
	return s
}

// SetPlaceholderOptions sets the PlaceholderOptions field's value.
func (s *TextAreaControlDisplayOptions) SetPlaceholderOptions(v *TextControlPlaceholderOptions) *TextAreaControlDisplayOptions {
	s.PlaceholderOptions = v
	return s
}

// SetTitleOptions sets the TitleOptions field's value.
func (s *TextAreaControlDisplayOptions) SetTitleOptions(v *LabelOptions) *TextAreaControlDisplayOptions {
	s.TitleOptions = v
	return s
}

// The conditional formatting for the text.
type TextConditionalFormat struct {
	_ struct{} `type:"structure"`

	// The conditional formatting for the text background color.
	BackgroundColor *ConditionalFormattingColor `type:"structure"`

	// The conditional formatting for the icon.
	Icon *ConditionalFormattingIcon `type:"structure"`

	// The conditional formatting for the text color.
	TextColor *ConditionalFormattingColor `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 TextConditionalFormat) 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 TextConditionalFormat) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TextConditionalFormat) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TextConditionalFormat"}
	if s.BackgroundColor != nil {
		if err := s.BackgroundColor.Validate(); err != nil {
			invalidParams.AddNested("BackgroundColor", err.(request.ErrInvalidParams))
		}
	}
	if s.Icon != nil {
		if err := s.Icon.Validate(); err != nil {
			invalidParams.AddNested("Icon", err.(request.ErrInvalidParams))
		}
	}
	if s.TextColor != nil {
		if err := s.TextColor.Validate(); err != nil {
			invalidParams.AddNested("TextColor", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBackgroundColor sets the BackgroundColor field's value.
func (s *TextConditionalFormat) SetBackgroundColor(v *ConditionalFormattingColor) *TextConditionalFormat {
	s.BackgroundColor = v
	return s
}

// SetIcon sets the Icon field's value.
func (s *TextConditionalFormat) SetIcon(v *ConditionalFormattingIcon) *TextConditionalFormat {
	s.Icon = v
	return s
}

// SetTextColor sets the TextColor field's value.
func (s *TextConditionalFormat) SetTextColor(v *ConditionalFormattingColor) *TextConditionalFormat {
	s.TextColor = v
	return s
}

// The configuration of the placeholder options in a text control.
type TextControlPlaceholderOptions struct {
	_ struct{} `type:"structure"`

	// The visibility configuration of the placeholder options in a text control.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 TextControlPlaceholderOptions) 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 TextControlPlaceholderOptions) GoString() string {
	return s.String()
}

// SetVisibility sets the Visibility field's value.
func (s *TextControlPlaceholderOptions) SetVisibility(v string) *TextControlPlaceholderOptions {
	s.Visibility = &v
	return s
}

// The display options of a control.
type TextFieldControlDisplayOptions struct {
	_ struct{} `type:"structure"`

	// The configuration of info icon label options.
	InfoIconLabelOptions *SheetControlInfoIconLabelOptions `type:"structure"`

	// The configuration of the placeholder options in a text field control.
	PlaceholderOptions *TextControlPlaceholderOptions `type:"structure"`

	// The options to configure the title visibility, name, and font size.
	TitleOptions *LabelOptions `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 TextFieldControlDisplayOptions) 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 TextFieldControlDisplayOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TextFieldControlDisplayOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TextFieldControlDisplayOptions"}
	if s.InfoIconLabelOptions != nil {
		if err := s.InfoIconLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("InfoIconLabelOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInfoIconLabelOptions sets the InfoIconLabelOptions field's value.
func (s *TextFieldControlDisplayOptions) SetInfoIconLabelOptions(v *SheetControlInfoIconLabelOptions) *TextFieldControlDisplayOptions {
	s.InfoIconLabelOptions = v
	return s
}

// SetPlaceholderOptions sets the PlaceholderOptions field's value.
func (s *TextFieldControlDisplayOptions) SetPlaceholderOptions(v *TextControlPlaceholderOptions) *TextFieldControlDisplayOptions {
	s.PlaceholderOptions = v
	return s
}

// SetTitleOptions sets the TitleOptions field's value.
func (s *TextFieldControlDisplayOptions) SetTitleOptions(v *LabelOptions) *TextFieldControlDisplayOptions {
	s.TitleOptions = v
	return s
}

// Summary information about a theme.
type Theme struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the theme.
	Arn *string `type:"string"`

	// The date and time that the theme was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The date and time that the theme was last updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// The name that the user gives to the theme.
	Name *string `min:"1" type:"string"`

	// The identifier that the user gives to the theme.
	ThemeId *string `min:"1" type:"string"`

	// The type of theme, based on how it was created. Valid values include: QUICKSIGHT
	// and CUSTOM.
	Type *string `type:"string" enum:"ThemeType"`

	// A version of a theme.
	Version *ThemeVersion `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 Theme) 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 Theme) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *Theme) SetArn(v string) *Theme {
	s.Arn = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *Theme) SetCreatedTime(v time.Time) *Theme {
	s.CreatedTime = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *Theme) SetLastUpdatedTime(v time.Time) *Theme {
	s.LastUpdatedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *Theme) SetName(v string) *Theme {
	s.Name = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *Theme) SetThemeId(v string) *Theme {
	s.ThemeId = &v
	return s
}

// SetType sets the Type field's value.
func (s *Theme) SetType(v string) *Theme {
	s.Type = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *Theme) SetVersion(v *ThemeVersion) *Theme {
	s.Version = v
	return s
}

// An alias for a theme.
type ThemeAlias struct {
	_ struct{} `type:"structure"`

	// The display name of the theme alias.
	AliasName *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the theme alias.
	Arn *string `type:"string"`

	// The version number of the theme alias.
	ThemeVersionNumber *int64 `min:"1" type:"long"`
}

// 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 ThemeAlias) 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 ThemeAlias) GoString() string {
	return s.String()
}

// SetAliasName sets the AliasName field's value.
func (s *ThemeAlias) SetAliasName(v string) *ThemeAlias {
	s.AliasName = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *ThemeAlias) SetArn(v string) *ThemeAlias {
	s.Arn = &v
	return s
}

// SetThemeVersionNumber sets the ThemeVersionNumber field's value.
func (s *ThemeAlias) SetThemeVersionNumber(v int64) *ThemeAlias {
	s.ThemeVersionNumber = &v
	return s
}

// The theme configuration. This configuration contains all of the display properties
// for a theme.
type ThemeConfiguration struct {
	_ struct{} `type:"structure"`

	// Color properties that apply to chart data colors.
	DataColorPalette *DataColorPalette `type:"structure"`

	// Display options related to sheets.
	Sheet *SheetStyle `type:"structure"`

	// Determines the typography options.
	Typography *Typography `type:"structure"`

	// Color properties that apply to the UI and to charts, excluding the colors
	// that apply to data.
	UIColorPalette *UIColorPalette `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 ThemeConfiguration) 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 ThemeConfiguration) GoString() string {
	return s.String()
}

// SetDataColorPalette sets the DataColorPalette field's value.
func (s *ThemeConfiguration) SetDataColorPalette(v *DataColorPalette) *ThemeConfiguration {
	s.DataColorPalette = v
	return s
}

// SetSheet sets the Sheet field's value.
func (s *ThemeConfiguration) SetSheet(v *SheetStyle) *ThemeConfiguration {
	s.Sheet = v
	return s
}

// SetTypography sets the Typography field's value.
func (s *ThemeConfiguration) SetTypography(v *Typography) *ThemeConfiguration {
	s.Typography = v
	return s
}

// SetUIColorPalette sets the UIColorPalette field's value.
func (s *ThemeConfiguration) SetUIColorPalette(v *UIColorPalette) *ThemeConfiguration {
	s.UIColorPalette = v
	return s
}

// Theme error.
type ThemeError struct {
	_ struct{} `type:"structure"`

	// The error message.
	Message *string `type:"string"`

	// The type of error.
	Type *string `type:"string" enum:"ThemeErrorType"`
}

// 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 ThemeError) 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 ThemeError) GoString() string {
	return s.String()
}

// SetMessage sets the Message field's value.
func (s *ThemeError) SetMessage(v string) *ThemeError {
	s.Message = &v
	return s
}

// SetType sets the Type field's value.
func (s *ThemeError) SetType(v string) *ThemeError {
	s.Type = &v
	return s
}

// The theme summary.
type ThemeSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	Arn *string `type:"string"`

	// The date and time that this theme was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The last date and time that this theme was updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// The latest version number for the theme.
	LatestVersionNumber *int64 `min:"1" type:"long"`

	// the display name for the theme.
	Name *string `min:"1" type:"string"`

	// The ID of the theme. This ID is unique per Amazon Web Services Region for
	// each Amazon Web Services account.
	ThemeId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThemeSummary) 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 ThemeSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ThemeSummary) SetArn(v string) *ThemeSummary {
	s.Arn = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *ThemeSummary) SetCreatedTime(v time.Time) *ThemeSummary {
	s.CreatedTime = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *ThemeSummary) SetLastUpdatedTime(v time.Time) *ThemeSummary {
	s.LastUpdatedTime = &v
	return s
}

// SetLatestVersionNumber sets the LatestVersionNumber field's value.
func (s *ThemeSummary) SetLatestVersionNumber(v int64) *ThemeSummary {
	s.LatestVersionNumber = &v
	return s
}

// SetName sets the Name field's value.
func (s *ThemeSummary) SetName(v string) *ThemeSummary {
	s.Name = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *ThemeSummary) SetThemeId(v string) *ThemeSummary {
	s.ThemeId = &v
	return s
}

// A version of a theme.
type ThemeVersion struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	Arn *string `type:"string"`

	// The Amazon QuickSight-defined ID of the theme that a custom theme inherits
	// from. All themes initially inherit from a default Amazon QuickSight theme.
	BaseThemeId *string `min:"1" type:"string"`

	// The theme configuration, which contains all the theme display properties.
	Configuration *ThemeConfiguration `type:"structure"`

	// The date and time that this theme version was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The description of the theme.
	Description *string `min:"1" type:"string"`

	// Errors associated with the theme.
	Errors []*ThemeError `min:"1" type:"list"`

	// The status of the theme version.
	Status *string `type:"string" enum:"ResourceStatus"`

	// The version number of the theme.
	VersionNumber *int64 `min:"1" type:"long"`
}

// 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 ThemeVersion) 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 ThemeVersion) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ThemeVersion) SetArn(v string) *ThemeVersion {
	s.Arn = &v
	return s
}

// SetBaseThemeId sets the BaseThemeId field's value.
func (s *ThemeVersion) SetBaseThemeId(v string) *ThemeVersion {
	s.BaseThemeId = &v
	return s
}

// SetConfiguration sets the Configuration field's value.
func (s *ThemeVersion) SetConfiguration(v *ThemeConfiguration) *ThemeVersion {
	s.Configuration = v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *ThemeVersion) SetCreatedTime(v time.Time) *ThemeVersion {
	s.CreatedTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *ThemeVersion) SetDescription(v string) *ThemeVersion {
	s.Description = &v
	return s
}

// SetErrors sets the Errors field's value.
func (s *ThemeVersion) SetErrors(v []*ThemeError) *ThemeVersion {
	s.Errors = v
	return s
}

// SetStatus sets the Status field's value.
func (s *ThemeVersion) SetStatus(v string) *ThemeVersion {
	s.Status = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *ThemeVersion) SetVersionNumber(v int64) *ThemeVersion {
	s.VersionNumber = &v
	return s
}

// The theme version.
type ThemeVersionSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the theme version.
	Arn *string `type:"string"`

	// The date and time that this theme version was created.
	CreatedTime *time.Time `type:"timestamp"`

	// The description of the theme version.
	Description *string `min:"1" type:"string"`

	// The status of the theme version.
	Status *string `type:"string" enum:"ResourceStatus"`

	// The version number of the theme version.
	VersionNumber *int64 `min:"1" type:"long"`
}

// 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 ThemeVersionSummary) 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 ThemeVersionSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ThemeVersionSummary) SetArn(v string) *ThemeVersionSummary {
	s.Arn = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *ThemeVersionSummary) SetCreatedTime(v time.Time) *ThemeVersionSummary {
	s.CreatedTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *ThemeVersionSummary) SetDescription(v string) *ThemeVersionSummary {
	s.Description = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ThemeVersionSummary) SetStatus(v string) *ThemeVersionSummary {
	s.Status = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *ThemeVersionSummary) SetVersionNumber(v int64) *ThemeVersionSummary {
	s.VersionNumber = &v
	return s
}

// The options that determine the thousands separator configuration.
type ThousandSeparatorOptions struct {
	_ struct{} `type:"structure"`

	// Determines the thousands separator symbol.
	Symbol *string `type:"string" enum:"NumericSeparatorSymbol"`

	// Determines the visibility of the thousands separator.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 ThousandSeparatorOptions) 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 ThousandSeparatorOptions) GoString() string {
	return s.String()
}

// SetSymbol sets the Symbol field's value.
func (s *ThousandSeparatorOptions) SetSymbol(v string) *ThousandSeparatorOptions {
	s.Symbol = &v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *ThousandSeparatorOptions) SetVisibility(v string) *ThousandSeparatorOptions {
	s.Visibility = &v
	return s
}

// Access is throttled.
type ThrottlingException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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
}

// The display options for the layout of tiles on a sheet.
type TileLayoutStyle struct {
	_ struct{} `type:"structure"`

	// The gutter settings that apply between tiles.
	Gutter *GutterStyle `type:"structure"`

	// The margin settings that apply around the outside edge of sheets.
	Margin *MarginStyle `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 TileLayoutStyle) 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 TileLayoutStyle) GoString() string {
	return s.String()
}

// SetGutter sets the Gutter field's value.
func (s *TileLayoutStyle) SetGutter(v *GutterStyle) *TileLayoutStyle {
	s.Gutter = v
	return s
}

// SetMargin sets the Margin field's value.
func (s *TileLayoutStyle) SetMargin(v *MarginStyle) *TileLayoutStyle {
	s.Margin = v
	return s
}

// Display options related to tiles on a sheet.
type TileStyle struct {
	_ struct{} `type:"structure"`

	// The border around a tile.
	Border *BorderStyle `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 TileStyle) 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 TileStyle) GoString() string {
	return s.String()
}

// SetBorder sets the Border field's value.
func (s *TileStyle) SetBorder(v *BorderStyle) *TileStyle {
	s.Border = v
	return s
}

// The forecast properties setup of a forecast in the line chart.
type TimeBasedForecastProperties struct {
	_ struct{} `type:"structure"`

	// The lower boundary setup of a forecast computation.
	LowerBoundary *float64 `type:"double"`

	// The periods backward setup of a forecast computation.
	PeriodsBackward *int64 `type:"integer"`

	// The periods forward setup of a forecast computation.
	PeriodsForward *int64 `min:"1" type:"integer"`

	// The prediction interval setup of a forecast computation.
	PredictionInterval *int64 `min:"50" type:"integer"`

	// The seasonality setup of a forecast computation. Choose one of the following
	// options:
	//
	//    * NULL: The input is set to NULL.
	//
	//    * NON_NULL: The input is set to a custom value.
	Seasonality *int64 `min:"1" type:"integer"`

	// The upper boundary setup of a forecast computation.
	UpperBoundary *float64 `type:"double"`
}

// 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 TimeBasedForecastProperties) 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 TimeBasedForecastProperties) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TimeBasedForecastProperties) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TimeBasedForecastProperties"}
	if s.PeriodsForward != nil && *s.PeriodsForward < 1 {
		invalidParams.Add(request.NewErrParamMinValue("PeriodsForward", 1))
	}
	if s.PredictionInterval != nil && *s.PredictionInterval < 50 {
		invalidParams.Add(request.NewErrParamMinValue("PredictionInterval", 50))
	}
	if s.Seasonality != nil && *s.Seasonality < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Seasonality", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetLowerBoundary sets the LowerBoundary field's value.
func (s *TimeBasedForecastProperties) SetLowerBoundary(v float64) *TimeBasedForecastProperties {
	s.LowerBoundary = &v
	return s
}

// SetPeriodsBackward sets the PeriodsBackward field's value.
func (s *TimeBasedForecastProperties) SetPeriodsBackward(v int64) *TimeBasedForecastProperties {
	s.PeriodsBackward = &v
	return s
}

// SetPeriodsForward sets the PeriodsForward field's value.
func (s *TimeBasedForecastProperties) SetPeriodsForward(v int64) *TimeBasedForecastProperties {
	s.PeriodsForward = &v
	return s
}

// SetPredictionInterval sets the PredictionInterval field's value.
func (s *TimeBasedForecastProperties) SetPredictionInterval(v int64) *TimeBasedForecastProperties {
	s.PredictionInterval = &v
	return s
}

// SetSeasonality sets the Seasonality field's value.
func (s *TimeBasedForecastProperties) SetSeasonality(v int64) *TimeBasedForecastProperties {
	s.Seasonality = &v
	return s
}

// SetUpperBoundary sets the UpperBoundary field's value.
func (s *TimeBasedForecastProperties) SetUpperBoundary(v float64) *TimeBasedForecastProperties {
	s.UpperBoundary = &v
	return s
}

// A TimeEqualityFilter filters values that are equal to a given value.
type TimeEqualityFilter struct {
	_ struct{} `type:"structure"`

	// The column that the filter is applied to.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The default configurations for the associated controls. This applies only
	// for filters that are scoped to multiple sheets.
	DefaultFilterControlConfiguration *DefaultFilterControlConfiguration `type:"structure"`

	// An identifier that uniquely identifies a filter within a dashboard, analysis,
	// or template.
	//
	// FilterId is a required field
	FilterId *string `min:"1" type:"string" required:"true"`

	// The parameter whose value should be used for the filter value.
	//
	// This field is mutually exclusive to Value and RollingDate.
	ParameterName *string `min:"1" type:"string"`

	// The rolling date input for the TimeEquality filter.
	//
	// This field is mutually exclusive to Value and ParameterName.
	RollingDate *RollingDateConfiguration `type:"structure"`

	// The level of time precision that is used to aggregate DateTime values.
	TimeGranularity *string `type:"string" enum:"TimeGranularity"`

	// The value of a TimeEquality filter.
	//
	// This field is mutually exclusive to RollingDate and ParameterName.
	Value *time.Time `type:"timestamp"`
}

// 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 TimeEqualityFilter) 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 TimeEqualityFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TimeEqualityFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TimeEqualityFilter"}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.FilterId == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterId"))
	}
	if s.FilterId != nil && len(*s.FilterId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterId", 1))
	}
	if s.ParameterName != nil && len(*s.ParameterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ParameterName", 1))
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}
	if s.DefaultFilterControlConfiguration != nil {
		if err := s.DefaultFilterControlConfiguration.Validate(); err != nil {
			invalidParams.AddNested("DefaultFilterControlConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.RollingDate != nil {
		if err := s.RollingDate.Validate(); err != nil {
			invalidParams.AddNested("RollingDate", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumn sets the Column field's value.
func (s *TimeEqualityFilter) SetColumn(v *ColumnIdentifier) *TimeEqualityFilter {
	s.Column = v
	return s
}

// SetDefaultFilterControlConfiguration sets the DefaultFilterControlConfiguration field's value.
func (s *TimeEqualityFilter) SetDefaultFilterControlConfiguration(v *DefaultFilterControlConfiguration) *TimeEqualityFilter {
	s.DefaultFilterControlConfiguration = v
	return s
}

// SetFilterId sets the FilterId field's value.
func (s *TimeEqualityFilter) SetFilterId(v string) *TimeEqualityFilter {
	s.FilterId = &v
	return s
}

// SetParameterName sets the ParameterName field's value.
func (s *TimeEqualityFilter) SetParameterName(v string) *TimeEqualityFilter {
	s.ParameterName = &v
	return s
}

// SetRollingDate sets the RollingDate field's value.
func (s *TimeEqualityFilter) SetRollingDate(v *RollingDateConfiguration) *TimeEqualityFilter {
	s.RollingDate = v
	return s
}

// SetTimeGranularity sets the TimeGranularity field's value.
func (s *TimeEqualityFilter) SetTimeGranularity(v string) *TimeEqualityFilter {
	s.TimeGranularity = &v
	return s
}

// SetValue sets the Value field's value.
func (s *TimeEqualityFilter) SetValue(v time.Time) *TimeEqualityFilter {
	s.Value = &v
	return s
}

// The time range drill down filter.
type TimeRangeDrillDownFilter struct {
	_ struct{} `type:"structure"`

	// The column that the filter is applied to.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The maximum value for the filter value range.
	//
	// RangeMaximum is a required field
	RangeMaximum *time.Time `type:"timestamp" required:"true"`

	// The minimum value for the filter value range.
	//
	// RangeMinimum is a required field
	RangeMinimum *time.Time `type:"timestamp" required:"true"`

	// The level of time precision that is used to aggregate DateTime values.
	//
	// TimeGranularity is a required field
	TimeGranularity *string `type:"string" required:"true" enum:"TimeGranularity"`
}

// 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 TimeRangeDrillDownFilter) 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 TimeRangeDrillDownFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TimeRangeDrillDownFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TimeRangeDrillDownFilter"}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.RangeMaximum == nil {
		invalidParams.Add(request.NewErrParamRequired("RangeMaximum"))
	}
	if s.RangeMinimum == nil {
		invalidParams.Add(request.NewErrParamRequired("RangeMinimum"))
	}
	if s.TimeGranularity == nil {
		invalidParams.Add(request.NewErrParamRequired("TimeGranularity"))
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumn sets the Column field's value.
func (s *TimeRangeDrillDownFilter) SetColumn(v *ColumnIdentifier) *TimeRangeDrillDownFilter {
	s.Column = v
	return s
}

// SetRangeMaximum sets the RangeMaximum field's value.
func (s *TimeRangeDrillDownFilter) SetRangeMaximum(v time.Time) *TimeRangeDrillDownFilter {
	s.RangeMaximum = &v
	return s
}

// SetRangeMinimum sets the RangeMinimum field's value.
func (s *TimeRangeDrillDownFilter) SetRangeMinimum(v time.Time) *TimeRangeDrillDownFilter {
	s.RangeMinimum = &v
	return s
}

// SetTimeGranularity sets the TimeGranularity field's value.
func (s *TimeRangeDrillDownFilter) SetTimeGranularity(v string) *TimeRangeDrillDownFilter {
	s.TimeGranularity = &v
	return s
}

// A TimeRangeFilter filters values that are between two specified values.
type TimeRangeFilter struct {
	_ struct{} `type:"structure"`

	// The column that the filter is applied to.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The default configurations for the associated controls. This applies only
	// for filters that are scoped to multiple sheets.
	DefaultFilterControlConfiguration *DefaultFilterControlConfiguration `type:"structure"`

	// The exclude period of the time range filter.
	ExcludePeriodConfiguration *ExcludePeriodConfiguration `type:"structure"`

	// An identifier that uniquely identifies a filter within a dashboard, analysis,
	// or template.
	//
	// FilterId is a required field
	FilterId *string `min:"1" type:"string" required:"true"`

	// Determines whether the maximum value in the filter value range should be
	// included in the filtered results.
	IncludeMaximum *bool `type:"boolean"`

	// Determines whether the minimum value in the filter value range should be
	// included in the filtered results.
	IncludeMinimum *bool `type:"boolean"`

	// This option determines how null values should be treated when filtering data.
	//
	//    * ALL_VALUES: Include null values in filtered results.
	//
	//    * NULLS_ONLY: Only include null values in filtered results.
	//
	//    * NON_NULLS_ONLY: Exclude null values from filtered results.
	//
	// NullOption is a required field
	NullOption *string `type:"string" required:"true" enum:"FilterNullOption"`

	// The maximum value for the filter value range.
	RangeMaximumValue *TimeRangeFilterValue `type:"structure"`

	// The minimum value for the filter value range.
	RangeMinimumValue *TimeRangeFilterValue `type:"structure"`

	// The level of time precision that is used to aggregate DateTime values.
	TimeGranularity *string `type:"string" enum:"TimeGranularity"`
}

// 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 TimeRangeFilter) 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 TimeRangeFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TimeRangeFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TimeRangeFilter"}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.FilterId == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterId"))
	}
	if s.FilterId != nil && len(*s.FilterId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterId", 1))
	}
	if s.NullOption == nil {
		invalidParams.Add(request.NewErrParamRequired("NullOption"))
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}
	if s.DefaultFilterControlConfiguration != nil {
		if err := s.DefaultFilterControlConfiguration.Validate(); err != nil {
			invalidParams.AddNested("DefaultFilterControlConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ExcludePeriodConfiguration != nil {
		if err := s.ExcludePeriodConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ExcludePeriodConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.RangeMaximumValue != nil {
		if err := s.RangeMaximumValue.Validate(); err != nil {
			invalidParams.AddNested("RangeMaximumValue", err.(request.ErrInvalidParams))
		}
	}
	if s.RangeMinimumValue != nil {
		if err := s.RangeMinimumValue.Validate(); err != nil {
			invalidParams.AddNested("RangeMinimumValue", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumn sets the Column field's value.
func (s *TimeRangeFilter) SetColumn(v *ColumnIdentifier) *TimeRangeFilter {
	s.Column = v
	return s
}

// SetDefaultFilterControlConfiguration sets the DefaultFilterControlConfiguration field's value.
func (s *TimeRangeFilter) SetDefaultFilterControlConfiguration(v *DefaultFilterControlConfiguration) *TimeRangeFilter {
	s.DefaultFilterControlConfiguration = v
	return s
}

// SetExcludePeriodConfiguration sets the ExcludePeriodConfiguration field's value.
func (s *TimeRangeFilter) SetExcludePeriodConfiguration(v *ExcludePeriodConfiguration) *TimeRangeFilter {
	s.ExcludePeriodConfiguration = v
	return s
}

// SetFilterId sets the FilterId field's value.
func (s *TimeRangeFilter) SetFilterId(v string) *TimeRangeFilter {
	s.FilterId = &v
	return s
}

// SetIncludeMaximum sets the IncludeMaximum field's value.
func (s *TimeRangeFilter) SetIncludeMaximum(v bool) *TimeRangeFilter {
	s.IncludeMaximum = &v
	return s
}

// SetIncludeMinimum sets the IncludeMinimum field's value.
func (s *TimeRangeFilter) SetIncludeMinimum(v bool) *TimeRangeFilter {
	s.IncludeMinimum = &v
	return s
}

// SetNullOption sets the NullOption field's value.
func (s *TimeRangeFilter) SetNullOption(v string) *TimeRangeFilter {
	s.NullOption = &v
	return s
}

// SetRangeMaximumValue sets the RangeMaximumValue field's value.
func (s *TimeRangeFilter) SetRangeMaximumValue(v *TimeRangeFilterValue) *TimeRangeFilter {
	s.RangeMaximumValue = v
	return s
}

// SetRangeMinimumValue sets the RangeMinimumValue field's value.
func (s *TimeRangeFilter) SetRangeMinimumValue(v *TimeRangeFilterValue) *TimeRangeFilter {
	s.RangeMinimumValue = v
	return s
}

// SetTimeGranularity sets the TimeGranularity field's value.
func (s *TimeRangeFilter) SetTimeGranularity(v string) *TimeRangeFilter {
	s.TimeGranularity = &v
	return s
}

// The value of a time range filter.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type TimeRangeFilterValue struct {
	_ struct{} `type:"structure"`

	// The parameter type input value.
	Parameter *string `min:"1" type:"string"`

	// The rolling date input value.
	RollingDate *RollingDateConfiguration `type:"structure"`

	// The static input value.
	StaticValue *time.Time `type:"timestamp"`
}

// 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 TimeRangeFilterValue) 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 TimeRangeFilterValue) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TimeRangeFilterValue) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TimeRangeFilterValue"}
	if s.Parameter != nil && len(*s.Parameter) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Parameter", 1))
	}
	if s.RollingDate != nil {
		if err := s.RollingDate.Validate(); err != nil {
			invalidParams.AddNested("RollingDate", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetParameter sets the Parameter field's value.
func (s *TimeRangeFilterValue) SetParameter(v string) *TimeRangeFilterValue {
	s.Parameter = &v
	return s
}

// SetRollingDate sets the RollingDate field's value.
func (s *TimeRangeFilterValue) SetRollingDate(v *RollingDateConfiguration) *TimeRangeFilterValue {
	s.RollingDate = v
	return s
}

// SetStaticValue sets the StaticValue field's value.
func (s *TimeRangeFilterValue) SetStaticValue(v time.Time) *TimeRangeFilterValue {
	s.StaticValue = &v
	return s
}

// The tooltip.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type TooltipItem struct {
	_ struct{} `type:"structure"`

	// The tooltip item for the columns that are not part of a field well.
	ColumnTooltipItem *ColumnTooltipItem `type:"structure"`

	// The tooltip item for the fields.
	FieldTooltipItem *FieldTooltipItem `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 TooltipItem) 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 TooltipItem) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TooltipItem) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TooltipItem"}
	if s.ColumnTooltipItem != nil {
		if err := s.ColumnTooltipItem.Validate(); err != nil {
			invalidParams.AddNested("ColumnTooltipItem", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldTooltipItem != nil {
		if err := s.FieldTooltipItem.Validate(); err != nil {
			invalidParams.AddNested("FieldTooltipItem", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumnTooltipItem sets the ColumnTooltipItem field's value.
func (s *TooltipItem) SetColumnTooltipItem(v *ColumnTooltipItem) *TooltipItem {
	s.ColumnTooltipItem = v
	return s
}

// SetFieldTooltipItem sets the FieldTooltipItem field's value.
func (s *TooltipItem) SetFieldTooltipItem(v *FieldTooltipItem) *TooltipItem {
	s.FieldTooltipItem = v
	return s
}

// The display options for the visual tooltip.
type TooltipOptions struct {
	_ struct{} `type:"structure"`

	// The setup for the detailed tooltip. The tooltip setup is always saved. The
	// display type is decided based on the tooltip type.
	FieldBasedTooltip *FieldBasedTooltip `type:"structure"`

	// The selected type for the tooltip. Choose one of the following options:
	//
	//    * BASIC: A basic tooltip.
	//
	//    * DETAILED: A detailed tooltip.
	SelectedTooltipType *string `type:"string" enum:"SelectedTooltipType"`

	// Determines whether or not the tooltip is visible.
	TooltipVisibility *string `type:"string" enum:"Visibility"`
}

// 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 TooltipOptions) 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 TooltipOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TooltipOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TooltipOptions"}
	if s.FieldBasedTooltip != nil {
		if err := s.FieldBasedTooltip.Validate(); err != nil {
			invalidParams.AddNested("FieldBasedTooltip", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldBasedTooltip sets the FieldBasedTooltip field's value.
func (s *TooltipOptions) SetFieldBasedTooltip(v *FieldBasedTooltip) *TooltipOptions {
	s.FieldBasedTooltip = v
	return s
}

// SetSelectedTooltipType sets the SelectedTooltipType field's value.
func (s *TooltipOptions) SetSelectedTooltipType(v string) *TooltipOptions {
	s.SelectedTooltipType = &v
	return s
}

// SetTooltipVisibility sets the TooltipVisibility field's value.
func (s *TooltipOptions) SetTooltipVisibility(v string) *TooltipOptions {
	s.TooltipVisibility = &v
	return s
}

// A TopBottomFilter filters values that are at the top or the bottom.
type TopBottomFilter struct {
	_ struct{} `type:"structure"`

	// The aggregation and sort configuration of the top bottom filter.
	//
	// AggregationSortConfigurations is a required field
	AggregationSortConfigurations []*AggregationSortConfiguration `type:"list" required:"true"`

	// The column that the filter is applied to.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The default configurations for the associated controls. This applies only
	// for filters that are scoped to multiple sheets.
	DefaultFilterControlConfiguration *DefaultFilterControlConfiguration `type:"structure"`

	// An identifier that uniquely identifies a filter within a dashboard, analysis,
	// or template.
	//
	// FilterId is a required field
	FilterId *string `min:"1" type:"string" required:"true"`

	// The number of items to include in the top bottom filter results.
	Limit *int64 `type:"integer"`

	// The parameter whose value should be used for the filter value.
	ParameterName *string `min:"1" type:"string"`

	// The level of time precision that is used to aggregate DateTime values.
	TimeGranularity *string `type:"string" enum:"TimeGranularity"`
}

// 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 TopBottomFilter) 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 TopBottomFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TopBottomFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TopBottomFilter"}
	if s.AggregationSortConfigurations == nil {
		invalidParams.Add(request.NewErrParamRequired("AggregationSortConfigurations"))
	}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.FilterId == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterId"))
	}
	if s.FilterId != nil && len(*s.FilterId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FilterId", 1))
	}
	if s.ParameterName != nil && len(*s.ParameterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ParameterName", 1))
	}
	if s.AggregationSortConfigurations != nil {
		for i, v := range s.AggregationSortConfigurations {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AggregationSortConfigurations", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}
	if s.DefaultFilterControlConfiguration != nil {
		if err := s.DefaultFilterControlConfiguration.Validate(); err != nil {
			invalidParams.AddNested("DefaultFilterControlConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAggregationSortConfigurations sets the AggregationSortConfigurations field's value.
func (s *TopBottomFilter) SetAggregationSortConfigurations(v []*AggregationSortConfiguration) *TopBottomFilter {
	s.AggregationSortConfigurations = v
	return s
}

// SetColumn sets the Column field's value.
func (s *TopBottomFilter) SetColumn(v *ColumnIdentifier) *TopBottomFilter {
	s.Column = v
	return s
}

// SetDefaultFilterControlConfiguration sets the DefaultFilterControlConfiguration field's value.
func (s *TopBottomFilter) SetDefaultFilterControlConfiguration(v *DefaultFilterControlConfiguration) *TopBottomFilter {
	s.DefaultFilterControlConfiguration = v
	return s
}

// SetFilterId sets the FilterId field's value.
func (s *TopBottomFilter) SetFilterId(v string) *TopBottomFilter {
	s.FilterId = &v
	return s
}

// SetLimit sets the Limit field's value.
func (s *TopBottomFilter) SetLimit(v int64) *TopBottomFilter {
	s.Limit = &v
	return s
}

// SetParameterName sets the ParameterName field's value.
func (s *TopBottomFilter) SetParameterName(v string) *TopBottomFilter {
	s.ParameterName = &v
	return s
}

// SetTimeGranularity sets the TimeGranularity field's value.
func (s *TopBottomFilter) SetTimeGranularity(v string) *TopBottomFilter {
	s.TimeGranularity = &v
	return s
}

// The top movers and bottom movers computation setup.
type TopBottomMoversComputation struct {
	_ struct{} `type:"structure"`

	// The category field that is used in a computation.
	Category *DimensionField `type:"structure"`

	// The ID for a computation.
	//
	// ComputationId is a required field
	ComputationId *string `min:"1" type:"string" required:"true"`

	// The mover size setup of the top and bottom movers computation.
	MoverSize *int64 `min:"1" type:"integer"`

	// The name of a computation.
	Name *string `type:"string"`

	// The sort order setup of the top and bottom movers computation.
	SortOrder *string `type:"string" enum:"TopBottomSortOrder"`

	// The time field that is used in a computation.
	Time *DimensionField `type:"structure"`

	// The computation type. Choose from the following options:
	//
	//    * TOP: Top movers computation.
	//
	//    * BOTTOM: Bottom movers computation.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"TopBottomComputationType"`

	// The value field that is used in a computation.
	Value *MeasureField `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 TopBottomMoversComputation) 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 TopBottomMoversComputation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TopBottomMoversComputation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TopBottomMoversComputation"}
	if s.ComputationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ComputationId"))
	}
	if s.ComputationId != nil && len(*s.ComputationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComputationId", 1))
	}
	if s.MoverSize != nil && *s.MoverSize < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MoverSize", 1))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.Category != nil {
		if err := s.Category.Validate(); err != nil {
			invalidParams.AddNested("Category", err.(request.ErrInvalidParams))
		}
	}
	if s.Time != nil {
		if err := s.Time.Validate(); err != nil {
			invalidParams.AddNested("Time", err.(request.ErrInvalidParams))
		}
	}
	if s.Value != nil {
		if err := s.Value.Validate(); err != nil {
			invalidParams.AddNested("Value", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategory sets the Category field's value.
func (s *TopBottomMoversComputation) SetCategory(v *DimensionField) *TopBottomMoversComputation {
	s.Category = v
	return s
}

// SetComputationId sets the ComputationId field's value.
func (s *TopBottomMoversComputation) SetComputationId(v string) *TopBottomMoversComputation {
	s.ComputationId = &v
	return s
}

// SetMoverSize sets the MoverSize field's value.
func (s *TopBottomMoversComputation) SetMoverSize(v int64) *TopBottomMoversComputation {
	s.MoverSize = &v
	return s
}

// SetName sets the Name field's value.
func (s *TopBottomMoversComputation) SetName(v string) *TopBottomMoversComputation {
	s.Name = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *TopBottomMoversComputation) SetSortOrder(v string) *TopBottomMoversComputation {
	s.SortOrder = &v
	return s
}

// SetTime sets the Time field's value.
func (s *TopBottomMoversComputation) SetTime(v *DimensionField) *TopBottomMoversComputation {
	s.Time = v
	return s
}

// SetType sets the Type field's value.
func (s *TopBottomMoversComputation) SetType(v string) *TopBottomMoversComputation {
	s.Type = &v
	return s
}

// SetValue sets the Value field's value.
func (s *TopBottomMoversComputation) SetValue(v *MeasureField) *TopBottomMoversComputation {
	s.Value = v
	return s
}

// The top ranked and bottom ranked computation configuration.
type TopBottomRankedComputation struct {
	_ struct{} `type:"structure"`

	// The category field that is used in a computation.
	Category *DimensionField `type:"structure"`

	// The ID for a computation.
	//
	// ComputationId is a required field
	ComputationId *string `min:"1" type:"string" required:"true"`

	// The name of a computation.
	Name *string `type:"string"`

	// The result size of a top and bottom ranked computation.
	ResultSize *int64 `min:"1" type:"integer"`

	// The computation type. Choose one of the following options:
	//
	//    * TOP: A top ranked computation.
	//
	//    * BOTTOM: A bottom ranked computation.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"TopBottomComputationType"`

	// The value field that is used in a computation.
	Value *MeasureField `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 TopBottomRankedComputation) 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 TopBottomRankedComputation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TopBottomRankedComputation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TopBottomRankedComputation"}
	if s.ComputationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ComputationId"))
	}
	if s.ComputationId != nil && len(*s.ComputationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComputationId", 1))
	}
	if s.ResultSize != nil && *s.ResultSize < 1 {
		invalidParams.Add(request.NewErrParamMinValue("ResultSize", 1))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.Category != nil {
		if err := s.Category.Validate(); err != nil {
			invalidParams.AddNested("Category", err.(request.ErrInvalidParams))
		}
	}
	if s.Value != nil {
		if err := s.Value.Validate(); err != nil {
			invalidParams.AddNested("Value", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategory sets the Category field's value.
func (s *TopBottomRankedComputation) SetCategory(v *DimensionField) *TopBottomRankedComputation {
	s.Category = v
	return s
}

// SetComputationId sets the ComputationId field's value.
func (s *TopBottomRankedComputation) SetComputationId(v string) *TopBottomRankedComputation {
	s.ComputationId = &v
	return s
}

// SetName sets the Name field's value.
func (s *TopBottomRankedComputation) SetName(v string) *TopBottomRankedComputation {
	s.Name = &v
	return s
}

// SetResultSize sets the ResultSize field's value.
func (s *TopBottomRankedComputation) SetResultSize(v int64) *TopBottomRankedComputation {
	s.ResultSize = &v
	return s
}

// SetType sets the Type field's value.
func (s *TopBottomRankedComputation) SetType(v string) *TopBottomRankedComputation {
	s.Type = &v
	return s
}

// SetValue sets the Value field's value.
func (s *TopBottomRankedComputation) SetValue(v *MeasureField) *TopBottomRankedComputation {
	s.Value = v
	return s
}

// A structure that represents a calculated field.
type TopicCalculatedField struct {
	_ struct{} `type:"structure"`

	// The default aggregation. Valid values for this structure are SUM, MAX, MIN,
	// COUNT, DISTINCT_COUNT, and AVERAGE.
	Aggregation *string `type:"string" enum:"DefaultAggregation"`

	// The list of aggregation types that are allowed for the calculated field.
	// Valid values for this structure are COUNT, DISTINCT_COUNT, MIN, MAX, MEDIAN,
	// SUM, AVERAGE, STDEV, STDEVP, VAR, VARP, and PERCENTILE.
	AllowedAggregations []*string `type:"list" enum:"AuthorSpecifiedAggregation"`

	// The calculated field description.
	CalculatedFieldDescription *string `type:"string"`

	// The calculated field name.
	//
	// CalculatedFieldName is a required field
	CalculatedFieldName *string `type:"string" required:"true"`

	// The other names or aliases for the calculated field.
	CalculatedFieldSynonyms []*string `type:"list"`

	// The other names or aliases for the calculated field cell value.
	CellValueSynonyms []*CellValueSynonym `type:"list"`

	// The column data role for a calculated field. Valid values for this structure
	// are DIMENSION and MEASURE.
	ColumnDataRole *string `type:"string" enum:"ColumnDataRole"`

	// The order in which data is displayed for the calculated field when it's used
	// in a comparative context.
	ComparativeOrder *ComparativeOrder `type:"structure"`

	// The default formatting definition.
	DefaultFormatting *DefaultFormatting `type:"structure"`

	// A Boolean value that indicates if a calculated field is visible in the autocomplete.
	DisableIndexing *bool `type:"boolean"`

	// The calculated field expression.
	//
	// Expression is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by TopicCalculatedField's
	// String and GoString methods.
	//
	// Expression is a required field
	Expression *string `min:"1" type:"string" required:"true" sensitive:"true"`

	// A boolean value that indicates if a calculated field is included in the topic.
	IsIncludedInTopic *bool `type:"boolean"`

	// A Boolean value that indicates whether to never aggregate calculated field
	// in filters.
	NeverAggregateInFilter *bool `type:"boolean"`

	// The non additive for the table style target.
	NonAdditive *bool `type:"boolean"`

	// The list of aggregation types that are not allowed for the calculated field.
	// Valid values for this structure are COUNT, DISTINCT_COUNT, MIN, MAX, MEDIAN,
	// SUM, AVERAGE, STDEV, STDEVP, VAR, VARP, and PERCENTILE.
	NotAllowedAggregations []*string `type:"list" enum:"AuthorSpecifiedAggregation"`

	// The semantic type.
	SemanticType *SemanticType `type:"structure"`

	// The level of time precision that is used to aggregate DateTime values.
	TimeGranularity *string `type:"string" enum:"TopicTimeGranularity"`
}

// 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 TopicCalculatedField) 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 TopicCalculatedField) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TopicCalculatedField) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TopicCalculatedField"}
	if s.CalculatedFieldName == nil {
		invalidParams.Add(request.NewErrParamRequired("CalculatedFieldName"))
	}
	if s.Expression == nil {
		invalidParams.Add(request.NewErrParamRequired("Expression"))
	}
	if s.Expression != nil && len(*s.Expression) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Expression", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAggregation sets the Aggregation field's value.
func (s *TopicCalculatedField) SetAggregation(v string) *TopicCalculatedField {
	s.Aggregation = &v
	return s
}

// SetAllowedAggregations sets the AllowedAggregations field's value.
func (s *TopicCalculatedField) SetAllowedAggregations(v []*string) *TopicCalculatedField {
	s.AllowedAggregations = v
	return s
}

// SetCalculatedFieldDescription sets the CalculatedFieldDescription field's value.
func (s *TopicCalculatedField) SetCalculatedFieldDescription(v string) *TopicCalculatedField {
	s.CalculatedFieldDescription = &v
	return s
}

// SetCalculatedFieldName sets the CalculatedFieldName field's value.
func (s *TopicCalculatedField) SetCalculatedFieldName(v string) *TopicCalculatedField {
	s.CalculatedFieldName = &v
	return s
}

// SetCalculatedFieldSynonyms sets the CalculatedFieldSynonyms field's value.
func (s *TopicCalculatedField) SetCalculatedFieldSynonyms(v []*string) *TopicCalculatedField {
	s.CalculatedFieldSynonyms = v
	return s
}

// SetCellValueSynonyms sets the CellValueSynonyms field's value.
func (s *TopicCalculatedField) SetCellValueSynonyms(v []*CellValueSynonym) *TopicCalculatedField {
	s.CellValueSynonyms = v
	return s
}

// SetColumnDataRole sets the ColumnDataRole field's value.
func (s *TopicCalculatedField) SetColumnDataRole(v string) *TopicCalculatedField {
	s.ColumnDataRole = &v
	return s
}

// SetComparativeOrder sets the ComparativeOrder field's value.
func (s *TopicCalculatedField) SetComparativeOrder(v *ComparativeOrder) *TopicCalculatedField {
	s.ComparativeOrder = v
	return s
}

// SetDefaultFormatting sets the DefaultFormatting field's value.
func (s *TopicCalculatedField) SetDefaultFormatting(v *DefaultFormatting) *TopicCalculatedField {
	s.DefaultFormatting = v
	return s
}

// SetDisableIndexing sets the DisableIndexing field's value.
func (s *TopicCalculatedField) SetDisableIndexing(v bool) *TopicCalculatedField {
	s.DisableIndexing = &v
	return s
}

// SetExpression sets the Expression field's value.
func (s *TopicCalculatedField) SetExpression(v string) *TopicCalculatedField {
	s.Expression = &v
	return s
}

// SetIsIncludedInTopic sets the IsIncludedInTopic field's value.
func (s *TopicCalculatedField) SetIsIncludedInTopic(v bool) *TopicCalculatedField {
	s.IsIncludedInTopic = &v
	return s
}

// SetNeverAggregateInFilter sets the NeverAggregateInFilter field's value.
func (s *TopicCalculatedField) SetNeverAggregateInFilter(v bool) *TopicCalculatedField {
	s.NeverAggregateInFilter = &v
	return s
}

// SetNonAdditive sets the NonAdditive field's value.
func (s *TopicCalculatedField) SetNonAdditive(v bool) *TopicCalculatedField {
	s.NonAdditive = &v
	return s
}

// SetNotAllowedAggregations sets the NotAllowedAggregations field's value.
func (s *TopicCalculatedField) SetNotAllowedAggregations(v []*string) *TopicCalculatedField {
	s.NotAllowedAggregations = v
	return s
}

// SetSemanticType sets the SemanticType field's value.
func (s *TopicCalculatedField) SetSemanticType(v *SemanticType) *TopicCalculatedField {
	s.SemanticType = v
	return s
}

// SetTimeGranularity sets the TimeGranularity field's value.
func (s *TopicCalculatedField) SetTimeGranularity(v string) *TopicCalculatedField {
	s.TimeGranularity = &v
	return s
}

// A structure that represents a category filter.
type TopicCategoryFilter struct {
	_ struct{} `type:"structure"`

	// The category filter function. Valid values for this structure are EXACT and
	// CONTAINS.
	CategoryFilterFunction *string `type:"string" enum:"CategoryFilterFunction"`

	// The category filter type. This element is used to specify whether a filter
	// is a simple category filter or an inverse category filter.
	CategoryFilterType *string `type:"string" enum:"CategoryFilterType"`

	// The constant used in a category filter.
	//
	// Constant is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by TopicCategoryFilter's
	// String and GoString methods.
	Constant *TopicCategoryFilterConstant `type:"structure" sensitive:"true"`

	// A Boolean value that indicates if the filter is inverse.
	Inverse *bool `type:"boolean"`
}

// 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 TopicCategoryFilter) 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 TopicCategoryFilter) GoString() string {
	return s.String()
}

// SetCategoryFilterFunction sets the CategoryFilterFunction field's value.
func (s *TopicCategoryFilter) SetCategoryFilterFunction(v string) *TopicCategoryFilter {
	s.CategoryFilterFunction = &v
	return s
}

// SetCategoryFilterType sets the CategoryFilterType field's value.
func (s *TopicCategoryFilter) SetCategoryFilterType(v string) *TopicCategoryFilter {
	s.CategoryFilterType = &v
	return s
}

// SetConstant sets the Constant field's value.
func (s *TopicCategoryFilter) SetConstant(v *TopicCategoryFilterConstant) *TopicCategoryFilter {
	s.Constant = v
	return s
}

// SetInverse sets the Inverse field's value.
func (s *TopicCategoryFilter) SetInverse(v bool) *TopicCategoryFilter {
	s.Inverse = &v
	return s
}

// A constant used in a category filter.
type TopicCategoryFilterConstant struct {
	_ struct{} `type:"structure" sensitive:"true"`

	// A collective constant used in a category filter. This element is used to
	// specify a list of values for the constant.
	CollectiveConstant *CollectiveConstant `type:"structure"`

	// The type of category filter constant. This element is used to specify whether
	// a constant is a singular or collective. Valid values are SINGULAR and COLLECTIVE.
	ConstantType *string `type:"string" enum:"ConstantType"`

	// A singular constant used in a category filter. This element is used to specify
	// a single value for the constant.
	SingularConstant *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TopicCategoryFilterConstant) 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 TopicCategoryFilterConstant) GoString() string {
	return s.String()
}

// SetCollectiveConstant sets the CollectiveConstant field's value.
func (s *TopicCategoryFilterConstant) SetCollectiveConstant(v *CollectiveConstant) *TopicCategoryFilterConstant {
	s.CollectiveConstant = v
	return s
}

// SetConstantType sets the ConstantType field's value.
func (s *TopicCategoryFilterConstant) SetConstantType(v string) *TopicCategoryFilterConstant {
	s.ConstantType = &v
	return s
}

// SetSingularConstant sets the SingularConstant field's value.
func (s *TopicCategoryFilterConstant) SetSingularConstant(v string) *TopicCategoryFilterConstant {
	s.SingularConstant = &v
	return s
}

// Represents a column in a dataset.
type TopicColumn struct {
	_ struct{} `type:"structure"`

	// The type of aggregation that is performed on the column data when it's queried.
	Aggregation *string `type:"string" enum:"DefaultAggregation"`

	// The list of aggregation types that are allowed for the column. Valid values
	// for this structure are COUNT, DISTINCT_COUNT, MIN, MAX, MEDIAN, SUM, AVERAGE,
	// STDEV, STDEVP, VAR, VARP, and PERCENTILE.
	AllowedAggregations []*string `type:"list" enum:"AuthorSpecifiedAggregation"`

	// The other names or aliases for the column cell value.
	CellValueSynonyms []*CellValueSynonym `type:"list"`

	// The role of the column in the data. Valid values are DIMENSION and MEASURE.
	ColumnDataRole *string `type:"string" enum:"ColumnDataRole"`

	// A description of the column and its contents.
	ColumnDescription *string `type:"string"`

	// A user-friendly name for the column.
	ColumnFriendlyName *string `type:"string"`

	// The name of the column.
	//
	// ColumnName is a required field
	ColumnName *string `type:"string" required:"true"`

	// The other names or aliases for the column.
	ColumnSynonyms []*string `type:"list"`

	// The order in which data is displayed for the column when it's used in a comparative
	// context.
	ComparativeOrder *ComparativeOrder `type:"structure"`

	// The default formatting used for values in the column.
	DefaultFormatting *DefaultFormatting `type:"structure"`

	// A Boolean value that indicates whether the column shows in the autocomplete
	// functionality.
	DisableIndexing *bool `type:"boolean"`

	// A Boolean value that indicates whether the column is included in the query
	// results.
	IsIncludedInTopic *bool `type:"boolean"`

	// A Boolean value that indicates whether to aggregate the column data when
	// it's used in a filter context.
	NeverAggregateInFilter *bool `type:"boolean"`

	// The non additive value for the column.
	NonAdditive *bool `type:"boolean"`

	// The list of aggregation types that are not allowed for the column. Valid
	// values for this structure are COUNT, DISTINCT_COUNT, MIN, MAX, MEDIAN, SUM,
	// AVERAGE, STDEV, STDEVP, VAR, VARP, and PERCENTILE.
	NotAllowedAggregations []*string `type:"list" enum:"AuthorSpecifiedAggregation"`

	// The semantic type of data contained in the column.
	SemanticType *SemanticType `type:"structure"`

	// The level of time precision that is used to aggregate DateTime values.
	TimeGranularity *string `type:"string" enum:"TopicTimeGranularity"`
}

// 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 TopicColumn) 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 TopicColumn) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TopicColumn) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TopicColumn"}
	if s.ColumnName == nil {
		invalidParams.Add(request.NewErrParamRequired("ColumnName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAggregation sets the Aggregation field's value.
func (s *TopicColumn) SetAggregation(v string) *TopicColumn {
	s.Aggregation = &v
	return s
}

// SetAllowedAggregations sets the AllowedAggregations field's value.
func (s *TopicColumn) SetAllowedAggregations(v []*string) *TopicColumn {
	s.AllowedAggregations = v
	return s
}

// SetCellValueSynonyms sets the CellValueSynonyms field's value.
func (s *TopicColumn) SetCellValueSynonyms(v []*CellValueSynonym) *TopicColumn {
	s.CellValueSynonyms = v
	return s
}

// SetColumnDataRole sets the ColumnDataRole field's value.
func (s *TopicColumn) SetColumnDataRole(v string) *TopicColumn {
	s.ColumnDataRole = &v
	return s
}

// SetColumnDescription sets the ColumnDescription field's value.
func (s *TopicColumn) SetColumnDescription(v string) *TopicColumn {
	s.ColumnDescription = &v
	return s
}

// SetColumnFriendlyName sets the ColumnFriendlyName field's value.
func (s *TopicColumn) SetColumnFriendlyName(v string) *TopicColumn {
	s.ColumnFriendlyName = &v
	return s
}

// SetColumnName sets the ColumnName field's value.
func (s *TopicColumn) SetColumnName(v string) *TopicColumn {
	s.ColumnName = &v
	return s
}

// SetColumnSynonyms sets the ColumnSynonyms field's value.
func (s *TopicColumn) SetColumnSynonyms(v []*string) *TopicColumn {
	s.ColumnSynonyms = v
	return s
}

// SetComparativeOrder sets the ComparativeOrder field's value.
func (s *TopicColumn) SetComparativeOrder(v *ComparativeOrder) *TopicColumn {
	s.ComparativeOrder = v
	return s
}

// SetDefaultFormatting sets the DefaultFormatting field's value.
func (s *TopicColumn) SetDefaultFormatting(v *DefaultFormatting) *TopicColumn {
	s.DefaultFormatting = v
	return s
}

// SetDisableIndexing sets the DisableIndexing field's value.
func (s *TopicColumn) SetDisableIndexing(v bool) *TopicColumn {
	s.DisableIndexing = &v
	return s
}

// SetIsIncludedInTopic sets the IsIncludedInTopic field's value.
func (s *TopicColumn) SetIsIncludedInTopic(v bool) *TopicColumn {
	s.IsIncludedInTopic = &v
	return s
}

// SetNeverAggregateInFilter sets the NeverAggregateInFilter field's value.
func (s *TopicColumn) SetNeverAggregateInFilter(v bool) *TopicColumn {
	s.NeverAggregateInFilter = &v
	return s
}

// SetNonAdditive sets the NonAdditive field's value.
func (s *TopicColumn) SetNonAdditive(v bool) *TopicColumn {
	s.NonAdditive = &v
	return s
}

// SetNotAllowedAggregations sets the NotAllowedAggregations field's value.
func (s *TopicColumn) SetNotAllowedAggregations(v []*string) *TopicColumn {
	s.NotAllowedAggregations = v
	return s
}

// SetSemanticType sets the SemanticType field's value.
func (s *TopicColumn) SetSemanticType(v *SemanticType) *TopicColumn {
	s.SemanticType = v
	return s
}

// SetTimeGranularity sets the TimeGranularity field's value.
func (s *TopicColumn) SetTimeGranularity(v string) *TopicColumn {
	s.TimeGranularity = &v
	return s
}

// The definition for a TopicConstantValue.
type TopicConstantValue struct {
	_ struct{} `type:"structure"`

	// The constant type of a TopicConstantValue.
	ConstantType *string `type:"string" enum:"ConstantType"`

	// The maximum for the TopicConstantValue.
	Maximum *string `type:"string"`

	// The minimum for the TopicConstantValue.
	Minimum *string `type:"string"`

	// The value of the TopicConstantValue.
	Value *string `type:"string"`

	// The value list of the TopicConstantValue.
	ValueList []*CollectiveConstantEntry `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 TopicConstantValue) 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 TopicConstantValue) GoString() string {
	return s.String()
}

// SetConstantType sets the ConstantType field's value.
func (s *TopicConstantValue) SetConstantType(v string) *TopicConstantValue {
	s.ConstantType = &v
	return s
}

// SetMaximum sets the Maximum field's value.
func (s *TopicConstantValue) SetMaximum(v string) *TopicConstantValue {
	s.Maximum = &v
	return s
}

// SetMinimum sets the Minimum field's value.
func (s *TopicConstantValue) SetMinimum(v string) *TopicConstantValue {
	s.Minimum = &v
	return s
}

// SetValue sets the Value field's value.
func (s *TopicConstantValue) SetValue(v string) *TopicConstantValue {
	s.Value = &v
	return s
}

// SetValueList sets the ValueList field's value.
func (s *TopicConstantValue) SetValueList(v []*CollectiveConstantEntry) *TopicConstantValue {
	s.ValueList = v
	return s
}

// A filter used to restrict data based on a range of dates or times.
type TopicDateRangeFilter struct {
	_ struct{} `type:"structure"`

	// The constant used in a date range filter.
	//
	// Constant is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by TopicDateRangeFilter's
	// String and GoString methods.
	Constant *TopicRangeFilterConstant `type:"structure" sensitive:"true"`

	// A Boolean value that indicates whether the date range filter should include
	// the boundary values. If set to true, the filter includes the start and end
	// dates. If set to false, the filter excludes them.
	Inclusive *bool `type:"boolean"`
}

// 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 TopicDateRangeFilter) 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 TopicDateRangeFilter) GoString() string {
	return s.String()
}

// SetConstant sets the Constant field's value.
func (s *TopicDateRangeFilter) SetConstant(v *TopicRangeFilterConstant) *TopicDateRangeFilter {
	s.Constant = v
	return s
}

// SetInclusive sets the Inclusive field's value.
func (s *TopicDateRangeFilter) SetInclusive(v bool) *TopicDateRangeFilter {
	s.Inclusive = &v
	return s
}

// A structure that describes the details of a topic, such as its name, description,
// and associated data sets.
type TopicDetails struct {
	_ struct{} `type:"structure"`

	// The data sets that the topic is associated with.
	DataSets []*DatasetMetadata `type:"list"`

	// The description of the topic.
	Description *string `type:"string"`

	// The name of the topic.
	Name *string `min:"1" type:"string"`

	// The user experience version of a topic.
	UserExperienceVersion *string `type:"string" enum:"TopicUserExperienceVersion"`
}

// 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 TopicDetails) 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 TopicDetails) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TopicDetails) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TopicDetails"}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.DataSets != nil {
		for i, v := range s.DataSets {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DataSets", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataSets sets the DataSets field's value.
func (s *TopicDetails) SetDataSets(v []*DatasetMetadata) *TopicDetails {
	s.DataSets = v
	return s
}

// SetDescription sets the Description field's value.
func (s *TopicDetails) SetDescription(v string) *TopicDetails {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *TopicDetails) SetName(v string) *TopicDetails {
	s.Name = &v
	return s
}

// SetUserExperienceVersion sets the UserExperienceVersion field's value.
func (s *TopicDetails) SetUserExperienceVersion(v string) *TopicDetails {
	s.UserExperienceVersion = &v
	return s
}

// A structure that represents a filter used to select items for a topic.
type TopicFilter struct {
	_ struct{} `type:"structure"`

	// The category filter that is associated with this filter.
	CategoryFilter *TopicCategoryFilter `type:"structure"`

	// The date range filter.
	DateRangeFilter *TopicDateRangeFilter `type:"structure"`

	// The class of the filter. Valid values for this structure are ENFORCED_VALUE_FILTER,
	// CONDITIONAL_VALUE_FILTER, and NAMED_VALUE_FILTER.
	FilterClass *string `type:"string" enum:"FilterClass"`

	// A description of the filter used to select items for a topic.
	FilterDescription *string `type:"string"`

	// The name of the filter.
	//
	// FilterName is a required field
	FilterName *string `type:"string" required:"true"`

	// The other names or aliases for the filter.
	FilterSynonyms []*string `type:"list"`

	// The type of the filter. Valid values for this structure are CATEGORY_FILTER,
	// NUMERIC_EQUALITY_FILTER, NUMERIC_RANGE_FILTER, DATE_RANGE_FILTER, and RELATIVE_DATE_FILTER.
	FilterType *string `type:"string" enum:"NamedFilterType"`

	// The numeric equality filter.
	NumericEqualityFilter *TopicNumericEqualityFilter `type:"structure"`

	// The numeric range filter.
	NumericRangeFilter *TopicNumericRangeFilter `type:"structure"`

	// The name of the field that the filter operates on.
	//
	// OperandFieldName is a required field
	OperandFieldName *string `type:"string" required:"true"`

	// The relative date filter.
	RelativeDateFilter *TopicRelativeDateFilter `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 TopicFilter) 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 TopicFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TopicFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TopicFilter"}
	if s.FilterName == nil {
		invalidParams.Add(request.NewErrParamRequired("FilterName"))
	}
	if s.OperandFieldName == nil {
		invalidParams.Add(request.NewErrParamRequired("OperandFieldName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategoryFilter sets the CategoryFilter field's value.
func (s *TopicFilter) SetCategoryFilter(v *TopicCategoryFilter) *TopicFilter {
	s.CategoryFilter = v
	return s
}

// SetDateRangeFilter sets the DateRangeFilter field's value.
func (s *TopicFilter) SetDateRangeFilter(v *TopicDateRangeFilter) *TopicFilter {
	s.DateRangeFilter = v
	return s
}

// SetFilterClass sets the FilterClass field's value.
func (s *TopicFilter) SetFilterClass(v string) *TopicFilter {
	s.FilterClass = &v
	return s
}

// SetFilterDescription sets the FilterDescription field's value.
func (s *TopicFilter) SetFilterDescription(v string) *TopicFilter {
	s.FilterDescription = &v
	return s
}

// SetFilterName sets the FilterName field's value.
func (s *TopicFilter) SetFilterName(v string) *TopicFilter {
	s.FilterName = &v
	return s
}

// SetFilterSynonyms sets the FilterSynonyms field's value.
func (s *TopicFilter) SetFilterSynonyms(v []*string) *TopicFilter {
	s.FilterSynonyms = v
	return s
}

// SetFilterType sets the FilterType field's value.
func (s *TopicFilter) SetFilterType(v string) *TopicFilter {
	s.FilterType = &v
	return s
}

// SetNumericEqualityFilter sets the NumericEqualityFilter field's value.
func (s *TopicFilter) SetNumericEqualityFilter(v *TopicNumericEqualityFilter) *TopicFilter {
	s.NumericEqualityFilter = v
	return s
}

// SetNumericRangeFilter sets the NumericRangeFilter field's value.
func (s *TopicFilter) SetNumericRangeFilter(v *TopicNumericRangeFilter) *TopicFilter {
	s.NumericRangeFilter = v
	return s
}

// SetOperandFieldName sets the OperandFieldName field's value.
func (s *TopicFilter) SetOperandFieldName(v string) *TopicFilter {
	s.OperandFieldName = &v
	return s
}

// SetRelativeDateFilter sets the RelativeDateFilter field's value.
func (s *TopicFilter) SetRelativeDateFilter(v *TopicRelativeDateFilter) *TopicFilter {
	s.RelativeDateFilter = v
	return s
}

// The definition for a TopicIR.
type TopicIR struct {
	_ struct{} `type:"structure"`

	// The contribution analysis for the TopicIR.
	ContributionAnalysis *TopicIRContributionAnalysis `type:"structure"`

	// The filters for the TopicIR.
	Filters [][]*TopicIRFilterOption `type:"list"`

	// The GroupBy list for the TopicIR.
	GroupByList []*TopicIRGroupBy `type:"list"`

	// The metrics for the TopicIR.
	Metrics []*TopicIRMetric `type:"list"`

	// The sort for the TopicIR.
	Sort *TopicSortClause `type:"structure"`

	// The visual for the TopicIR.
	Visual *VisualOptions `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 TopicIR) 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 TopicIR) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TopicIR) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TopicIR"}
	if s.ContributionAnalysis != nil {
		if err := s.ContributionAnalysis.Validate(); err != nil {
			invalidParams.AddNested("ContributionAnalysis", err.(request.ErrInvalidParams))
		}
	}
	if s.GroupByList != nil {
		for i, v := range s.GroupByList {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GroupByList", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Metrics != nil {
		for i, v := range s.Metrics {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Metrics", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Sort != nil {
		if err := s.Sort.Validate(); err != nil {
			invalidParams.AddNested("Sort", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContributionAnalysis sets the ContributionAnalysis field's value.
func (s *TopicIR) SetContributionAnalysis(v *TopicIRContributionAnalysis) *TopicIR {
	s.ContributionAnalysis = v
	return s
}

// SetFilters sets the Filters field's value.
func (s *TopicIR) SetFilters(v [][]*TopicIRFilterOption) *TopicIR {
	s.Filters = v
	return s
}

// SetGroupByList sets the GroupByList field's value.
func (s *TopicIR) SetGroupByList(v []*TopicIRGroupBy) *TopicIR {
	s.GroupByList = v
	return s
}

// SetMetrics sets the Metrics field's value.
func (s *TopicIR) SetMetrics(v []*TopicIRMetric) *TopicIR {
	s.Metrics = v
	return s
}

// SetSort sets the Sort field's value.
func (s *TopicIR) SetSort(v *TopicSortClause) *TopicIR {
	s.Sort = v
	return s
}

// SetVisual sets the Visual field's value.
func (s *TopicIR) SetVisual(v *VisualOptions) *TopicIR {
	s.Visual = v
	return s
}

// The definition of a TopicIRComparisonMethod.
type TopicIRComparisonMethod struct {
	_ struct{} `type:"structure"`

	// The period for the TopicIRComparisonMethod.
	Period *string `type:"string" enum:"TopicTimeGranularity"`

	// The type for the TopicIRComparisonMethod.
	Type *string `type:"string" enum:"ComparisonMethodType"`

	// The window size for the TopicIRComparisonMethod.
	WindowSize *int64 `type:"integer"`
}

// 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 TopicIRComparisonMethod) 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 TopicIRComparisonMethod) GoString() string {
	return s.String()
}

// SetPeriod sets the Period field's value.
func (s *TopicIRComparisonMethod) SetPeriod(v string) *TopicIRComparisonMethod {
	s.Period = &v
	return s
}

// SetType sets the Type field's value.
func (s *TopicIRComparisonMethod) SetType(v string) *TopicIRComparisonMethod {
	s.Type = &v
	return s
}

// SetWindowSize sets the WindowSize field's value.
func (s *TopicIRComparisonMethod) SetWindowSize(v int64) *TopicIRComparisonMethod {
	s.WindowSize = &v
	return s
}

// The definition for a TopicIRContributionAnalysis.
type TopicIRContributionAnalysis struct {
	_ struct{} `type:"structure"`

	// The direction for the TopicIRContributionAnalysis.
	Direction *string `type:"string" enum:"ContributionAnalysisDirection"`

	// The factors for a TopicIRContributionAnalysis.
	Factors []*ContributionAnalysisFactor `type:"list"`

	// The sort type for the TopicIRContributionAnalysis.
	SortType *string `type:"string" enum:"ContributionAnalysisSortType"`

	// The time ranges for the TopicIRContributionAnalysis.
	TimeRanges *ContributionAnalysisTimeRanges `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 TopicIRContributionAnalysis) 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 TopicIRContributionAnalysis) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TopicIRContributionAnalysis) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TopicIRContributionAnalysis"}
	if s.TimeRanges != nil {
		if err := s.TimeRanges.Validate(); err != nil {
			invalidParams.AddNested("TimeRanges", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDirection sets the Direction field's value.
func (s *TopicIRContributionAnalysis) SetDirection(v string) *TopicIRContributionAnalysis {
	s.Direction = &v
	return s
}

// SetFactors sets the Factors field's value.
func (s *TopicIRContributionAnalysis) SetFactors(v []*ContributionAnalysisFactor) *TopicIRContributionAnalysis {
	s.Factors = v
	return s
}

// SetSortType sets the SortType field's value.
func (s *TopicIRContributionAnalysis) SetSortType(v string) *TopicIRContributionAnalysis {
	s.SortType = &v
	return s
}

// SetTimeRanges sets the TimeRanges field's value.
func (s *TopicIRContributionAnalysis) SetTimeRanges(v *ContributionAnalysisTimeRanges) *TopicIRContributionAnalysis {
	s.TimeRanges = v
	return s
}

// The definition for a TopicIRFilterOption.
type TopicIRFilterOption struct {
	_ struct{} `type:"structure"`

	// The agg metrics for the TopicIRFilterOption.
	AggMetrics []*FilterAggMetrics `type:"list"`

	// The aggregation for the TopicIRFilterOption.
	Aggregation *string `type:"string" enum:"AggType"`

	// The aggregation function parameters for the TopicIRFilterOption.
	AggregationFunctionParameters map[string]*string `type:"map"`

	// The AggregationPartitionBy for the TopicIRFilterOption.
	AggregationPartitionBy []*AggregationPartitionBy `type:"list"`

	// The anchor for the TopicIRFilterOption.
	Anchor *Anchor `type:"structure"`

	// The constant for the TopicIRFilterOption.
	Constant *TopicConstantValue `type:"structure"`

	// The filter class for the TopicIRFilterOption.
	FilterClass *string `type:"string" enum:"FilterClass"`

	// The filter type for the TopicIRFilterOption.
	FilterType *string `type:"string" enum:"TopicIRFilterType"`

	// The function for the TopicIRFilterOption.
	Function *string `type:"string" enum:"TopicIRFilterFunction"`

	// The inclusive for the TopicIRFilterOption.
	Inclusive *bool `type:"boolean"`

	// The inverse for the TopicIRFilterOption.
	Inverse *bool `type:"boolean"`

	// The last next offset for the TopicIRFilterOption.
	LastNextOffset *TopicConstantValue `type:"structure"`

	// The null filter for the TopicIRFilterOption.
	NullFilter *string `type:"string" enum:"NullFilterOption"`

	// The operand field for the TopicIRFilterOption.
	OperandField *Identifier `type:"structure"`

	// The range for the TopicIRFilterOption.
	Range *TopicConstantValue `type:"structure"`

	// The sort direction for the TopicIRFilterOption.
	SortDirection *string `type:"string" enum:"TopicSortDirection"`

	// The time granularity for the TopicIRFilterOption.
	TimeGranularity *string `type:"string" enum:"TimeGranularity"`

	// The TopBottomLimit for the TopicIRFilterOption.
	TopBottomLimit *TopicConstantValue `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 TopicIRFilterOption) 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 TopicIRFilterOption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TopicIRFilterOption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TopicIRFilterOption"}
	if s.AggMetrics != nil {
		for i, v := range s.AggMetrics {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AggMetrics", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.OperandField != nil {
		if err := s.OperandField.Validate(); err != nil {
			invalidParams.AddNested("OperandField", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAggMetrics sets the AggMetrics field's value.
func (s *TopicIRFilterOption) SetAggMetrics(v []*FilterAggMetrics) *TopicIRFilterOption {
	s.AggMetrics = v
	return s
}

// SetAggregation sets the Aggregation field's value.
func (s *TopicIRFilterOption) SetAggregation(v string) *TopicIRFilterOption {
	s.Aggregation = &v
	return s
}

// SetAggregationFunctionParameters sets the AggregationFunctionParameters field's value.
func (s *TopicIRFilterOption) SetAggregationFunctionParameters(v map[string]*string) *TopicIRFilterOption {
	s.AggregationFunctionParameters = v
	return s
}

// SetAggregationPartitionBy sets the AggregationPartitionBy field's value.
func (s *TopicIRFilterOption) SetAggregationPartitionBy(v []*AggregationPartitionBy) *TopicIRFilterOption {
	s.AggregationPartitionBy = v
	return s
}

// SetAnchor sets the Anchor field's value.
func (s *TopicIRFilterOption) SetAnchor(v *Anchor) *TopicIRFilterOption {
	s.Anchor = v
	return s
}

// SetConstant sets the Constant field's value.
func (s *TopicIRFilterOption) SetConstant(v *TopicConstantValue) *TopicIRFilterOption {
	s.Constant = v
	return s
}

// SetFilterClass sets the FilterClass field's value.
func (s *TopicIRFilterOption) SetFilterClass(v string) *TopicIRFilterOption {
	s.FilterClass = &v
	return s
}

// SetFilterType sets the FilterType field's value.
func (s *TopicIRFilterOption) SetFilterType(v string) *TopicIRFilterOption {
	s.FilterType = &v
	return s
}

// SetFunction sets the Function field's value.
func (s *TopicIRFilterOption) SetFunction(v string) *TopicIRFilterOption {
	s.Function = &v
	return s
}

// SetInclusive sets the Inclusive field's value.
func (s *TopicIRFilterOption) SetInclusive(v bool) *TopicIRFilterOption {
	s.Inclusive = &v
	return s
}

// SetInverse sets the Inverse field's value.
func (s *TopicIRFilterOption) SetInverse(v bool) *TopicIRFilterOption {
	s.Inverse = &v
	return s
}

// SetLastNextOffset sets the LastNextOffset field's value.
func (s *TopicIRFilterOption) SetLastNextOffset(v *TopicConstantValue) *TopicIRFilterOption {
	s.LastNextOffset = v
	return s
}

// SetNullFilter sets the NullFilter field's value.
func (s *TopicIRFilterOption) SetNullFilter(v string) *TopicIRFilterOption {
	s.NullFilter = &v
	return s
}

// SetOperandField sets the OperandField field's value.
func (s *TopicIRFilterOption) SetOperandField(v *Identifier) *TopicIRFilterOption {
	s.OperandField = v
	return s
}

// SetRange sets the Range field's value.
func (s *TopicIRFilterOption) SetRange(v *TopicConstantValue) *TopicIRFilterOption {
	s.Range = v
	return s
}

// SetSortDirection sets the SortDirection field's value.
func (s *TopicIRFilterOption) SetSortDirection(v string) *TopicIRFilterOption {
	s.SortDirection = &v
	return s
}

// SetTimeGranularity sets the TimeGranularity field's value.
func (s *TopicIRFilterOption) SetTimeGranularity(v string) *TopicIRFilterOption {
	s.TimeGranularity = &v
	return s
}

// SetTopBottomLimit sets the TopBottomLimit field's value.
func (s *TopicIRFilterOption) SetTopBottomLimit(v *TopicConstantValue) *TopicIRFilterOption {
	s.TopBottomLimit = v
	return s
}

// The definition for a TopicIRGroupBy.
type TopicIRGroupBy struct {
	_ struct{} `type:"structure"`

	// The display format for the TopicIRGroupBy.
	DisplayFormat *string `type:"string" enum:"DisplayFormat"`

	// A structure that represents additional options for display formatting.
	DisplayFormatOptions *DisplayFormatOptions `type:"structure"`

	// The field name for the TopicIRGroupBy.
	FieldName *Identifier `type:"structure"`

	// The named entity for the TopicIRGroupBy.
	NamedEntity *NamedEntityRef `type:"structure"`

	// The sort for the TopicIRGroupBy.
	Sort *TopicSortClause `type:"structure"`

	// The time granularity for the TopicIRGroupBy.
	TimeGranularity *string `type:"string" enum:"TopicTimeGranularity"`
}

// 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 TopicIRGroupBy) 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 TopicIRGroupBy) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TopicIRGroupBy) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TopicIRGroupBy"}
	if s.FieldName != nil {
		if err := s.FieldName.Validate(); err != nil {
			invalidParams.AddNested("FieldName", err.(request.ErrInvalidParams))
		}
	}
	if s.Sort != nil {
		if err := s.Sort.Validate(); err != nil {
			invalidParams.AddNested("Sort", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDisplayFormat sets the DisplayFormat field's value.
func (s *TopicIRGroupBy) SetDisplayFormat(v string) *TopicIRGroupBy {
	s.DisplayFormat = &v
	return s
}

// SetDisplayFormatOptions sets the DisplayFormatOptions field's value.
func (s *TopicIRGroupBy) SetDisplayFormatOptions(v *DisplayFormatOptions) *TopicIRGroupBy {
	s.DisplayFormatOptions = v
	return s
}

// SetFieldName sets the FieldName field's value.
func (s *TopicIRGroupBy) SetFieldName(v *Identifier) *TopicIRGroupBy {
	s.FieldName = v
	return s
}

// SetNamedEntity sets the NamedEntity field's value.
func (s *TopicIRGroupBy) SetNamedEntity(v *NamedEntityRef) *TopicIRGroupBy {
	s.NamedEntity = v
	return s
}

// SetSort sets the Sort field's value.
func (s *TopicIRGroupBy) SetSort(v *TopicSortClause) *TopicIRGroupBy {
	s.Sort = v
	return s
}

// SetTimeGranularity sets the TimeGranularity field's value.
func (s *TopicIRGroupBy) SetTimeGranularity(v string) *TopicIRGroupBy {
	s.TimeGranularity = &v
	return s
}

// The definition for a TopicIRMetric.
type TopicIRMetric struct {
	_ struct{} `type:"structure"`

	// The calculated field references for the TopicIRMetric.
	CalculatedFieldReferences []*Identifier `type:"list"`

	// The comparison method for the TopicIRMetric.
	ComparisonMethod *TopicIRComparisonMethod `type:"structure"`

	// The display format for the TopicIRMetric.
	DisplayFormat *string `type:"string" enum:"DisplayFormat"`

	// A structure that represents additional options for display formatting.
	DisplayFormatOptions *DisplayFormatOptions `type:"structure"`

	// The expression for the TopicIRMetric.
	//
	// Expression is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by TopicIRMetric's
	// String and GoString methods.
	Expression *string `min:"1" type:"string" sensitive:"true"`

	// The function for the TopicIRMetric.
	Function *AggFunction `type:"structure"`

	// The metric ID for the TopicIRMetric.
	MetricId *Identifier `type:"structure"`

	// The named entity for the TopicIRMetric.
	NamedEntity *NamedEntityRef `type:"structure"`

	// The operands for the TopicIRMetric.
	Operands []*Identifier `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 TopicIRMetric) 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 TopicIRMetric) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TopicIRMetric) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TopicIRMetric"}
	if s.Expression != nil && len(*s.Expression) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Expression", 1))
	}
	if s.CalculatedFieldReferences != nil {
		for i, v := range s.CalculatedFieldReferences {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CalculatedFieldReferences", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.MetricId != nil {
		if err := s.MetricId.Validate(); err != nil {
			invalidParams.AddNested("MetricId", err.(request.ErrInvalidParams))
		}
	}
	if s.Operands != nil {
		for i, v := range s.Operands {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Operands", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCalculatedFieldReferences sets the CalculatedFieldReferences field's value.
func (s *TopicIRMetric) SetCalculatedFieldReferences(v []*Identifier) *TopicIRMetric {
	s.CalculatedFieldReferences = v
	return s
}

// SetComparisonMethod sets the ComparisonMethod field's value.
func (s *TopicIRMetric) SetComparisonMethod(v *TopicIRComparisonMethod) *TopicIRMetric {
	s.ComparisonMethod = v
	return s
}

// SetDisplayFormat sets the DisplayFormat field's value.
func (s *TopicIRMetric) SetDisplayFormat(v string) *TopicIRMetric {
	s.DisplayFormat = &v
	return s
}

// SetDisplayFormatOptions sets the DisplayFormatOptions field's value.
func (s *TopicIRMetric) SetDisplayFormatOptions(v *DisplayFormatOptions) *TopicIRMetric {
	s.DisplayFormatOptions = v
	return s
}

// SetExpression sets the Expression field's value.
func (s *TopicIRMetric) SetExpression(v string) *TopicIRMetric {
	s.Expression = &v
	return s
}

// SetFunction sets the Function field's value.
func (s *TopicIRMetric) SetFunction(v *AggFunction) *TopicIRMetric {
	s.Function = v
	return s
}

// SetMetricId sets the MetricId field's value.
func (s *TopicIRMetric) SetMetricId(v *Identifier) *TopicIRMetric {
	s.MetricId = v
	return s
}

// SetNamedEntity sets the NamedEntity field's value.
func (s *TopicIRMetric) SetNamedEntity(v *NamedEntityRef) *TopicIRMetric {
	s.NamedEntity = v
	return s
}

// SetOperands sets the Operands field's value.
func (s *TopicIRMetric) SetOperands(v []*Identifier) *TopicIRMetric {
	s.Operands = v
	return s
}

// A structure that represents a named entity.
type TopicNamedEntity struct {
	_ struct{} `type:"structure"`

	// The definition of a named entity.
	Definition []*NamedEntityDefinition `type:"list"`

	// The description of the named entity.
	EntityDescription *string `type:"string"`

	// The name of the named entity.
	//
	// EntityName is a required field
	EntityName *string `type:"string" required:"true"`

	// The other names or aliases for the named entity.
	EntitySynonyms []*string `type:"list"`

	// The type of named entity that a topic represents.
	SemanticEntityType *SemanticEntityType `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 TopicNamedEntity) 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 TopicNamedEntity) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TopicNamedEntity) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TopicNamedEntity"}
	if s.EntityName == nil {
		invalidParams.Add(request.NewErrParamRequired("EntityName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDefinition sets the Definition field's value.
func (s *TopicNamedEntity) SetDefinition(v []*NamedEntityDefinition) *TopicNamedEntity {
	s.Definition = v
	return s
}

// SetEntityDescription sets the EntityDescription field's value.
func (s *TopicNamedEntity) SetEntityDescription(v string) *TopicNamedEntity {
	s.EntityDescription = &v
	return s
}

// SetEntityName sets the EntityName field's value.
func (s *TopicNamedEntity) SetEntityName(v string) *TopicNamedEntity {
	s.EntityName = &v
	return s
}

// SetEntitySynonyms sets the EntitySynonyms field's value.
func (s *TopicNamedEntity) SetEntitySynonyms(v []*string) *TopicNamedEntity {
	s.EntitySynonyms = v
	return s
}

// SetSemanticEntityType sets the SemanticEntityType field's value.
func (s *TopicNamedEntity) SetSemanticEntityType(v *SemanticEntityType) *TopicNamedEntity {
	s.SemanticEntityType = v
	return s
}

// A filter that filters topics based on the value of a numeric field. The filter
// includes only topics whose numeric field value matches the specified value.
type TopicNumericEqualityFilter struct {
	_ struct{} `type:"structure"`

	// An aggregation function that specifies how to calculate the value of a numeric
	// field for a topic. Valid values for this structure are NO_AGGREGATION, SUM,
	// AVERAGE, COUNT, DISTINCT_COUNT, MAX, MEDIAN, MIN, STDEV, STDEVP, VAR, and
	// VARP.
	Aggregation *string `type:"string" enum:"NamedFilterAggType"`

	// The constant used in a numeric equality filter.
	//
	// Constant is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by TopicNumericEqualityFilter's
	// String and GoString methods.
	Constant *TopicSingularFilterConstant `type:"structure" sensitive:"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 TopicNumericEqualityFilter) 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 TopicNumericEqualityFilter) GoString() string {
	return s.String()
}

// SetAggregation sets the Aggregation field's value.
func (s *TopicNumericEqualityFilter) SetAggregation(v string) *TopicNumericEqualityFilter {
	s.Aggregation = &v
	return s
}

// SetConstant sets the Constant field's value.
func (s *TopicNumericEqualityFilter) SetConstant(v *TopicSingularFilterConstant) *TopicNumericEqualityFilter {
	s.Constant = v
	return s
}

// A filter that filters topics based on the value of a numeric field. The filter
// includes only topics whose numeric field value falls within the specified
// range.
type TopicNumericRangeFilter struct {
	_ struct{} `type:"structure"`

	// An aggregation function that specifies how to calculate the value of a numeric
	// field for a topic, Valid values for this structure are NO_AGGREGATION, SUM,
	// AVERAGE, COUNT, DISTINCT_COUNT, MAX, MEDIAN, MIN, STDEV, STDEVP, VAR, and
	// VARP.
	Aggregation *string `type:"string" enum:"NamedFilterAggType"`

	// The constant used in a numeric range filter.
	//
	// Constant is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by TopicNumericRangeFilter's
	// String and GoString methods.
	Constant *TopicRangeFilterConstant `type:"structure" sensitive:"true"`

	// A Boolean value that indicates whether the endpoints of the numeric range
	// are included in the filter. If set to true, topics whose numeric field value
	// is equal to the endpoint values will be included in the filter. If set to
	// false, topics whose numeric field value is equal to the endpoint values will
	// be excluded from the filter.
	Inclusive *bool `type:"boolean"`
}

// 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 TopicNumericRangeFilter) 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 TopicNumericRangeFilter) GoString() string {
	return s.String()
}

// SetAggregation sets the Aggregation field's value.
func (s *TopicNumericRangeFilter) SetAggregation(v string) *TopicNumericRangeFilter {
	s.Aggregation = &v
	return s
}

// SetConstant sets the Constant field's value.
func (s *TopicNumericRangeFilter) SetConstant(v *TopicRangeFilterConstant) *TopicNumericRangeFilter {
	s.Constant = v
	return s
}

// SetInclusive sets the Inclusive field's value.
func (s *TopicNumericRangeFilter) SetInclusive(v bool) *TopicNumericRangeFilter {
	s.Inclusive = &v
	return s
}

// A constant value that is used in a range filter to specify the endpoints
// of the range.
type TopicRangeFilterConstant struct {
	_ struct{} `type:"structure" sensitive:"true"`

	// The data type of the constant value that is used in a range filter. Valid
	// values for this structure are RANGE.
	ConstantType *string `type:"string" enum:"ConstantType"`

	// The value of the constant that is used to specify the endpoints of a range
	// filter.
	RangeConstant *RangeConstant `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 TopicRangeFilterConstant) 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 TopicRangeFilterConstant) GoString() string {
	return s.String()
}

// SetConstantType sets the ConstantType field's value.
func (s *TopicRangeFilterConstant) SetConstantType(v string) *TopicRangeFilterConstant {
	s.ConstantType = &v
	return s
}

// SetRangeConstant sets the RangeConstant field's value.
func (s *TopicRangeFilterConstant) SetRangeConstant(v *RangeConstant) *TopicRangeFilterConstant {
	s.RangeConstant = v
	return s
}

// The details about the refresh of a topic.
type TopicRefreshDetails struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the topic refresh.
	RefreshArn *string `type:"string"`

	// The ID of the refresh, which occurs as a result of topic creation or topic
	// update.
	RefreshId *string `type:"string"`

	// The status of the refresh job that indicates whether the job is still running,
	// completed successfully, or failed.
	RefreshStatus *string `type:"string" enum:"TopicRefreshStatus"`
}

// 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 TopicRefreshDetails) 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 TopicRefreshDetails) GoString() string {
	return s.String()
}

// SetRefreshArn sets the RefreshArn field's value.
func (s *TopicRefreshDetails) SetRefreshArn(v string) *TopicRefreshDetails {
	s.RefreshArn = &v
	return s
}

// SetRefreshId sets the RefreshId field's value.
func (s *TopicRefreshDetails) SetRefreshId(v string) *TopicRefreshDetails {
	s.RefreshId = &v
	return s
}

// SetRefreshStatus sets the RefreshStatus field's value.
func (s *TopicRefreshDetails) SetRefreshStatus(v string) *TopicRefreshDetails {
	s.RefreshStatus = &v
	return s
}

// A structure that represents a topic refresh schedule.
type TopicRefreshSchedule struct {
	_ struct{} `type:"structure"`

	// A Boolean value that controls whether to schedule runs at the same schedule
	// that is specified in SPICE dataset.
	//
	// BasedOnSpiceSchedule is a required field
	BasedOnSpiceSchedule *bool `type:"boolean" required:"true"`

	// A Boolean value that controls whether to schedule is enabled.
	//
	// IsEnabled is a required field
	IsEnabled *bool `type:"boolean" required:"true"`

	// The time of day when the refresh should run, for example, Monday-Sunday.
	RepeatAt *string `type:"string"`

	// The starting date and time for the refresh schedule.
	StartingAt *time.Time `type:"timestamp"`

	// The timezone that you want the refresh schedule to use.
	Timezone *string `type:"string"`

	// The type of refresh schedule. Valid values for this structure are HOURLY,
	// DAILY, WEEKLY, and MONTHLY.
	TopicScheduleType *string `type:"string" enum:"TopicScheduleType"`
}

// 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 TopicRefreshSchedule) 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 TopicRefreshSchedule) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TopicRefreshSchedule) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TopicRefreshSchedule"}
	if s.BasedOnSpiceSchedule == nil {
		invalidParams.Add(request.NewErrParamRequired("BasedOnSpiceSchedule"))
	}
	if s.IsEnabled == nil {
		invalidParams.Add(request.NewErrParamRequired("IsEnabled"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBasedOnSpiceSchedule sets the BasedOnSpiceSchedule field's value.
func (s *TopicRefreshSchedule) SetBasedOnSpiceSchedule(v bool) *TopicRefreshSchedule {
	s.BasedOnSpiceSchedule = &v
	return s
}

// SetIsEnabled sets the IsEnabled field's value.
func (s *TopicRefreshSchedule) SetIsEnabled(v bool) *TopicRefreshSchedule {
	s.IsEnabled = &v
	return s
}

// SetRepeatAt sets the RepeatAt field's value.
func (s *TopicRefreshSchedule) SetRepeatAt(v string) *TopicRefreshSchedule {
	s.RepeatAt = &v
	return s
}

// SetStartingAt sets the StartingAt field's value.
func (s *TopicRefreshSchedule) SetStartingAt(v time.Time) *TopicRefreshSchedule {
	s.StartingAt = &v
	return s
}

// SetTimezone sets the Timezone field's value.
func (s *TopicRefreshSchedule) SetTimezone(v string) *TopicRefreshSchedule {
	s.Timezone = &v
	return s
}

// SetTopicScheduleType sets the TopicScheduleType field's value.
func (s *TopicRefreshSchedule) SetTopicScheduleType(v string) *TopicRefreshSchedule {
	s.TopicScheduleType = &v
	return s
}

// A summary of the refresh schedule details for a dataset.
type TopicRefreshScheduleSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the dataset.
	DatasetArn *string `type:"string"`

	// The ID of the dataset.
	DatasetId *string `type:"string"`

	// The name of the dataset.
	DatasetName *string `type:"string"`

	// The definition of a refresh schedule.
	RefreshSchedule *TopicRefreshSchedule `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 TopicRefreshScheduleSummary) 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 TopicRefreshScheduleSummary) GoString() string {
	return s.String()
}

// SetDatasetArn sets the DatasetArn field's value.
func (s *TopicRefreshScheduleSummary) SetDatasetArn(v string) *TopicRefreshScheduleSummary {
	s.DatasetArn = &v
	return s
}

// SetDatasetId sets the DatasetId field's value.
func (s *TopicRefreshScheduleSummary) SetDatasetId(v string) *TopicRefreshScheduleSummary {
	s.DatasetId = &v
	return s
}

// SetDatasetName sets the DatasetName field's value.
func (s *TopicRefreshScheduleSummary) SetDatasetName(v string) *TopicRefreshScheduleSummary {
	s.DatasetName = &v
	return s
}

// SetRefreshSchedule sets the RefreshSchedule field's value.
func (s *TopicRefreshScheduleSummary) SetRefreshSchedule(v *TopicRefreshSchedule) *TopicRefreshScheduleSummary {
	s.RefreshSchedule = v
	return s
}

// A structure that represents a relative date filter.
type TopicRelativeDateFilter struct {
	_ struct{} `type:"structure"`

	// The constant used in a relative date filter.
	//
	// Constant is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by TopicRelativeDateFilter's
	// String and GoString methods.
	Constant *TopicSingularFilterConstant `type:"structure" sensitive:"true"`

	// The function to be used in a relative date filter to determine the range
	// of dates to include in the results. Valid values for this structure are BEFORE,
	// AFTER, and BETWEEN.
	RelativeDateFilterFunction *string `type:"string" enum:"TopicRelativeDateFilterFunction"`

	// The level of time precision that is used to aggregate DateTime values.
	TimeGranularity *string `type:"string" enum:"TopicTimeGranularity"`
}

// 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 TopicRelativeDateFilter) 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 TopicRelativeDateFilter) GoString() string {
	return s.String()
}

// SetConstant sets the Constant field's value.
func (s *TopicRelativeDateFilter) SetConstant(v *TopicSingularFilterConstant) *TopicRelativeDateFilter {
	s.Constant = v
	return s
}

// SetRelativeDateFilterFunction sets the RelativeDateFilterFunction field's value.
func (s *TopicRelativeDateFilter) SetRelativeDateFilterFunction(v string) *TopicRelativeDateFilter {
	s.RelativeDateFilterFunction = &v
	return s
}

// SetTimeGranularity sets the TimeGranularity field's value.
func (s *TopicRelativeDateFilter) SetTimeGranularity(v string) *TopicRelativeDateFilter {
	s.TimeGranularity = &v
	return s
}

// The deinition for a TopicReviewedAnswer.
type TopicReviewedAnswer struct {
	_ struct{} `type:"structure"`

	// The answer ID of the reviewed answer.
	//
	// AnswerId is a required field
	AnswerId *string `type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the reviewed answer.
	Arn *string `type:"string"`

	// The Dataset ARN for the TopicReviewedAnswer.
	//
	// DatasetArn is a required field
	DatasetArn *string `type:"string" required:"true"`

	// The mir for the TopicReviewedAnswer.
	Mir *TopicIR `type:"structure"`

	// The primary visual for the TopicReviewedAnswer.
	PrimaryVisual *TopicVisual `type:"structure"`

	// The question for the TopicReviewedAnswer.
	//
	// Question is a required field
	Question *string `type:"string" required:"true"`

	// The template for the TopicReviewedAnswer.
	Template *TopicTemplate `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 TopicReviewedAnswer) 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 TopicReviewedAnswer) GoString() string {
	return s.String()
}

// SetAnswerId sets the AnswerId field's value.
func (s *TopicReviewedAnswer) SetAnswerId(v string) *TopicReviewedAnswer {
	s.AnswerId = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *TopicReviewedAnswer) SetArn(v string) *TopicReviewedAnswer {
	s.Arn = &v
	return s
}

// SetDatasetArn sets the DatasetArn field's value.
func (s *TopicReviewedAnswer) SetDatasetArn(v string) *TopicReviewedAnswer {
	s.DatasetArn = &v
	return s
}

// SetMir sets the Mir field's value.
func (s *TopicReviewedAnswer) SetMir(v *TopicIR) *TopicReviewedAnswer {
	s.Mir = v
	return s
}

// SetPrimaryVisual sets the PrimaryVisual field's value.
func (s *TopicReviewedAnswer) SetPrimaryVisual(v *TopicVisual) *TopicReviewedAnswer {
	s.PrimaryVisual = v
	return s
}

// SetQuestion sets the Question field's value.
func (s *TopicReviewedAnswer) SetQuestion(v string) *TopicReviewedAnswer {
	s.Question = &v
	return s
}

// SetTemplate sets the Template field's value.
func (s *TopicReviewedAnswer) SetTemplate(v *TopicTemplate) *TopicReviewedAnswer {
	s.Template = v
	return s
}

// A structure that represents a singular filter constant, used in filters to
// specify a single value to match against.
type TopicSingularFilterConstant struct {
	_ struct{} `type:"structure" sensitive:"true"`

	// The type of the singular filter constant. Valid values for this structure
	// are SINGULAR.
	ConstantType *string `type:"string" enum:"ConstantType"`

	// The value of the singular filter constant.
	SingularConstant *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TopicSingularFilterConstant) 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 TopicSingularFilterConstant) GoString() string {
	return s.String()
}

// SetConstantType sets the ConstantType field's value.
func (s *TopicSingularFilterConstant) SetConstantType(v string) *TopicSingularFilterConstant {
	s.ConstantType = &v
	return s
}

// SetSingularConstant sets the SingularConstant field's value.
func (s *TopicSingularFilterConstant) SetSingularConstant(v string) *TopicSingularFilterConstant {
	s.SingularConstant = &v
	return s
}

// The definition for a TopicSortClause.
type TopicSortClause struct {
	_ struct{} `type:"structure"`

	// The operand for a TopicSortClause.
	Operand *Identifier `type:"structure"`

	// The sort direction for the TopicSortClause.
	SortDirection *string `type:"string" enum:"TopicSortDirection"`
}

// 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 TopicSortClause) 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 TopicSortClause) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TopicSortClause) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TopicSortClause"}
	if s.Operand != nil {
		if err := s.Operand.Validate(); err != nil {
			invalidParams.AddNested("Operand", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetOperand sets the Operand field's value.
func (s *TopicSortClause) SetOperand(v *Identifier) *TopicSortClause {
	s.Operand = v
	return s
}

// SetSortDirection sets the SortDirection field's value.
func (s *TopicSortClause) SetSortDirection(v string) *TopicSortClause {
	s.SortDirection = &v
	return s
}

// A topic summary.
type TopicSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the topic.
	Arn *string `type:"string"`

	// The name of the topic.
	Name *string `min:"1" type:"string"`

	// The ID for the topic. This ID is unique per Amazon Web Services Region for
	// each Amazon Web Services account.
	TopicId *string `type:"string"`

	// The user experience version of the topic.
	UserExperienceVersion *string `type:"string" enum:"TopicUserExperienceVersion"`
}

// 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 TopicSummary) 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 TopicSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *TopicSummary) SetArn(v string) *TopicSummary {
	s.Arn = &v
	return s
}

// SetName sets the Name field's value.
func (s *TopicSummary) SetName(v string) *TopicSummary {
	s.Name = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *TopicSummary) SetTopicId(v string) *TopicSummary {
	s.TopicId = &v
	return s
}

// SetUserExperienceVersion sets the UserExperienceVersion field's value.
func (s *TopicSummary) SetUserExperienceVersion(v string) *TopicSummary {
	s.UserExperienceVersion = &v
	return s
}

// The definition for a TopicTemplate.
type TopicTemplate struct {
	_ struct{} `type:"structure"`

	// The slots for the TopicTemplate.
	Slots []*Slot `type:"list"`

	// The template type for the TopicTemplate.
	TemplateType *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TopicTemplate) 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 TopicTemplate) GoString() string {
	return s.String()
}

// SetSlots sets the Slots field's value.
func (s *TopicTemplate) SetSlots(v []*Slot) *TopicTemplate {
	s.Slots = v
	return s
}

// SetTemplateType sets the TemplateType field's value.
func (s *TopicTemplate) SetTemplateType(v string) *TopicTemplate {
	s.TemplateType = &v
	return s
}

// The definition for a TopicVisual.
type TopicVisual struct {
	_ struct{} `type:"structure"`

	// The ir for the TopicVisual.
	Ir *TopicIR `type:"structure"`

	// The role for the TopicVisual.
	Role *string `type:"string" enum:"VisualRole"`

	// The supporting visuals for the TopicVisual.
	SupportingVisuals []*TopicVisual `type:"list"`

	// The visual ID for the TopicVisual.
	VisualId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TopicVisual) 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 TopicVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TopicVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TopicVisual"}
	if s.Ir != nil {
		if err := s.Ir.Validate(); err != nil {
			invalidParams.AddNested("Ir", err.(request.ErrInvalidParams))
		}
	}
	if s.SupportingVisuals != nil {
		for i, v := range s.SupportingVisuals {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SupportingVisuals", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIr sets the Ir field's value.
func (s *TopicVisual) SetIr(v *TopicIR) *TopicVisual {
	s.Ir = v
	return s
}

// SetRole sets the Role field's value.
func (s *TopicVisual) SetRole(v string) *TopicVisual {
	s.Role = &v
	return s
}

// SetSupportingVisuals sets the SupportingVisuals field's value.
func (s *TopicVisual) SetSupportingVisuals(v []*TopicVisual) *TopicVisual {
	s.SupportingVisuals = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *TopicVisual) SetVisualId(v string) *TopicVisual {
	s.VisualId = &v
	return s
}

// The total aggregation computation configuration.
type TotalAggregationComputation struct {
	_ struct{} `type:"structure"`

	// The ID for a computation.
	//
	// ComputationId is a required field
	ComputationId *string `min:"1" type:"string" required:"true"`

	// The name of a computation.
	Name *string `type:"string"`

	// The value field that is used in a computation.
	Value *MeasureField `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 TotalAggregationComputation) 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 TotalAggregationComputation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TotalAggregationComputation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TotalAggregationComputation"}
	if s.ComputationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ComputationId"))
	}
	if s.ComputationId != nil && len(*s.ComputationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComputationId", 1))
	}
	if s.Value != nil {
		if err := s.Value.Validate(); err != nil {
			invalidParams.AddNested("Value", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetComputationId sets the ComputationId field's value.
func (s *TotalAggregationComputation) SetComputationId(v string) *TotalAggregationComputation {
	s.ComputationId = &v
	return s
}

// SetName sets the Name field's value.
func (s *TotalAggregationComputation) SetName(v string) *TotalAggregationComputation {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *TotalAggregationComputation) SetValue(v *MeasureField) *TotalAggregationComputation {
	s.Value = v
	return s
}

// An aggregation function that aggregates the total values of a measure.
type TotalAggregationFunction struct {
	_ struct{} `type:"structure"`

	// A built in aggregation function for total values.
	SimpleTotalAggregationFunction *string `type:"string" enum:"SimpleTotalAggregationFunction"`
}

// 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 TotalAggregationFunction) 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 TotalAggregationFunction) GoString() string {
	return s.String()
}

// SetSimpleTotalAggregationFunction sets the SimpleTotalAggregationFunction field's value.
func (s *TotalAggregationFunction) SetSimpleTotalAggregationFunction(v string) *TotalAggregationFunction {
	s.SimpleTotalAggregationFunction = &v
	return s
}

// The total aggregation settings map of a field id.
type TotalAggregationOption struct {
	_ struct{} `type:"structure"`

	// The field id that's associated with the total aggregation option.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The total aggregation function that you want to set for a specified field
	// id.
	//
	// TotalAggregationFunction is a required field
	TotalAggregationFunction *TotalAggregationFunction `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 TotalAggregationOption) 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 TotalAggregationOption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TotalAggregationOption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TotalAggregationOption"}
	if s.FieldId == nil {
		invalidParams.Add(request.NewErrParamRequired("FieldId"))
	}
	if s.FieldId != nil && len(*s.FieldId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FieldId", 1))
	}
	if s.TotalAggregationFunction == nil {
		invalidParams.Add(request.NewErrParamRequired("TotalAggregationFunction"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFieldId sets the FieldId field's value.
func (s *TotalAggregationOption) SetFieldId(v string) *TotalAggregationOption {
	s.FieldId = &v
	return s
}

// SetTotalAggregationFunction sets the TotalAggregationFunction field's value.
func (s *TotalAggregationOption) SetTotalAggregationFunction(v *TotalAggregationFunction) *TotalAggregationOption {
	s.TotalAggregationFunction = v
	return s
}

// The total options for a table visual.
type TotalOptions struct {
	_ struct{} `type:"structure"`

	// The custom label string for the total cells.
	CustomLabel *string `type:"string"`

	// The placement (start, end) for the total cells.
	Placement *string `type:"string" enum:"TableTotalsPlacement"`

	// The scroll status (pinned, scrolled) for the total cells.
	ScrollStatus *string `type:"string" enum:"TableTotalsScrollStatus"`

	// The total aggregation settings for each value field.
	TotalAggregationOptions []*TotalAggregationOption `type:"list"`

	// Cell styling options for the total cells.
	TotalCellStyle *TableCellStyle `type:"structure"`

	// The visibility configuration for the total cells.
	TotalsVisibility *string `type:"string" enum:"Visibility"`
}

// 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 TotalOptions) 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 TotalOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TotalOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TotalOptions"}
	if s.TotalAggregationOptions != nil {
		for i, v := range s.TotalAggregationOptions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TotalAggregationOptions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.TotalCellStyle != nil {
		if err := s.TotalCellStyle.Validate(); err != nil {
			invalidParams.AddNested("TotalCellStyle", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCustomLabel sets the CustomLabel field's value.
func (s *TotalOptions) SetCustomLabel(v string) *TotalOptions {
	s.CustomLabel = &v
	return s
}

// SetPlacement sets the Placement field's value.
func (s *TotalOptions) SetPlacement(v string) *TotalOptions {
	s.Placement = &v
	return s
}

// SetScrollStatus sets the ScrollStatus field's value.
func (s *TotalOptions) SetScrollStatus(v string) *TotalOptions {
	s.ScrollStatus = &v
	return s
}

// SetTotalAggregationOptions sets the TotalAggregationOptions field's value.
func (s *TotalOptions) SetTotalAggregationOptions(v []*TotalAggregationOption) *TotalOptions {
	s.TotalAggregationOptions = v
	return s
}

// SetTotalCellStyle sets the TotalCellStyle field's value.
func (s *TotalOptions) SetTotalCellStyle(v *TableCellStyle) *TotalOptions {
	s.TotalCellStyle = v
	return s
}

// SetTotalsVisibility sets the TotalsVisibility field's value.
func (s *TotalOptions) SetTotalsVisibility(v string) *TotalOptions {
	s.TotalsVisibility = &v
	return s
}

// A data transformation on a logical table. This is a variant type structure.
// For this structure to be valid, only one of the attributes can be non-null.
type TransformOperation struct {
	_ struct{} `type:"structure"`

	// A transform operation that casts a column to a different type.
	CastColumnTypeOperation *CastColumnTypeOperation `type:"structure"`

	// An operation that creates calculated columns. Columns created in one such
	// operation form a lexical closure.
	CreateColumnsOperation *CreateColumnsOperation `type:"structure"`

	// An operation that filters rows based on some condition.
	FilterOperation *FilterOperation `type:"structure"`

	// A transform operation that overrides the dataset parameter values that are
	// defined in another dataset.
	OverrideDatasetParameterOperation *OverrideDatasetParameterOperation `type:"structure"`

	// An operation that projects columns. Operations that come after a projection
	// can only refer to projected columns.
	ProjectOperation *ProjectOperation `type:"structure"`

	// An operation that renames a column.
	RenameColumnOperation *RenameColumnOperation `type:"structure"`

	// An operation that tags a column with additional information.
	TagColumnOperation *TagColumnOperation `type:"structure"`

	// A transform operation that removes tags associated with a column.
	UntagColumnOperation *UntagColumnOperation `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 TransformOperation) 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 TransformOperation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TransformOperation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TransformOperation"}
	if s.CastColumnTypeOperation != nil {
		if err := s.CastColumnTypeOperation.Validate(); err != nil {
			invalidParams.AddNested("CastColumnTypeOperation", err.(request.ErrInvalidParams))
		}
	}
	if s.CreateColumnsOperation != nil {
		if err := s.CreateColumnsOperation.Validate(); err != nil {
			invalidParams.AddNested("CreateColumnsOperation", err.(request.ErrInvalidParams))
		}
	}
	if s.FilterOperation != nil {
		if err := s.FilterOperation.Validate(); err != nil {
			invalidParams.AddNested("FilterOperation", err.(request.ErrInvalidParams))
		}
	}
	if s.OverrideDatasetParameterOperation != nil {
		if err := s.OverrideDatasetParameterOperation.Validate(); err != nil {
			invalidParams.AddNested("OverrideDatasetParameterOperation", err.(request.ErrInvalidParams))
		}
	}
	if s.ProjectOperation != nil {
		if err := s.ProjectOperation.Validate(); err != nil {
			invalidParams.AddNested("ProjectOperation", err.(request.ErrInvalidParams))
		}
	}
	if s.RenameColumnOperation != nil {
		if err := s.RenameColumnOperation.Validate(); err != nil {
			invalidParams.AddNested("RenameColumnOperation", err.(request.ErrInvalidParams))
		}
	}
	if s.TagColumnOperation != nil {
		if err := s.TagColumnOperation.Validate(); err != nil {
			invalidParams.AddNested("TagColumnOperation", err.(request.ErrInvalidParams))
		}
	}
	if s.UntagColumnOperation != nil {
		if err := s.UntagColumnOperation.Validate(); err != nil {
			invalidParams.AddNested("UntagColumnOperation", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCastColumnTypeOperation sets the CastColumnTypeOperation field's value.
func (s *TransformOperation) SetCastColumnTypeOperation(v *CastColumnTypeOperation) *TransformOperation {
	s.CastColumnTypeOperation = v
	return s
}

// SetCreateColumnsOperation sets the CreateColumnsOperation field's value.
func (s *TransformOperation) SetCreateColumnsOperation(v *CreateColumnsOperation) *TransformOperation {
	s.CreateColumnsOperation = v
	return s
}

// SetFilterOperation sets the FilterOperation field's value.
func (s *TransformOperation) SetFilterOperation(v *FilterOperation) *TransformOperation {
	s.FilterOperation = v
	return s
}

// SetOverrideDatasetParameterOperation sets the OverrideDatasetParameterOperation field's value.
func (s *TransformOperation) SetOverrideDatasetParameterOperation(v *OverrideDatasetParameterOperation) *TransformOperation {
	s.OverrideDatasetParameterOperation = v
	return s
}

// SetProjectOperation sets the ProjectOperation field's value.
func (s *TransformOperation) SetProjectOperation(v *ProjectOperation) *TransformOperation {
	s.ProjectOperation = v
	return s
}

// SetRenameColumnOperation sets the RenameColumnOperation field's value.
func (s *TransformOperation) SetRenameColumnOperation(v *RenameColumnOperation) *TransformOperation {
	s.RenameColumnOperation = v
	return s
}

// SetTagColumnOperation sets the TagColumnOperation field's value.
func (s *TransformOperation) SetTagColumnOperation(v *TagColumnOperation) *TransformOperation {
	s.TagColumnOperation = v
	return s
}

// SetUntagColumnOperation sets the UntagColumnOperation field's value.
func (s *TransformOperation) SetUntagColumnOperation(v *UntagColumnOperation) *TransformOperation {
	s.UntagColumnOperation = v
	return s
}

// Aggregated field wells of a tree map.
type TreeMapAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The color field well of a tree map. Values are grouped by aggregations based
	// on group by fields.
	Colors []*MeasureField `type:"list"`

	// The group by field well of a tree map. Values are grouped based on group
	// by fields.
	Groups []*DimensionField `type:"list"`

	// The size field well of a tree map. Values are aggregated based on group by
	// fields.
	Sizes []*MeasureField `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 TreeMapAggregatedFieldWells) 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 TreeMapAggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TreeMapAggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TreeMapAggregatedFieldWells"}
	if s.Colors != nil {
		for i, v := range s.Colors {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Colors", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Groups != nil {
		for i, v := range s.Groups {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Groups", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Sizes != nil {
		for i, v := range s.Sizes {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Sizes", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColors sets the Colors field's value.
func (s *TreeMapAggregatedFieldWells) SetColors(v []*MeasureField) *TreeMapAggregatedFieldWells {
	s.Colors = v
	return s
}

// SetGroups sets the Groups field's value.
func (s *TreeMapAggregatedFieldWells) SetGroups(v []*DimensionField) *TreeMapAggregatedFieldWells {
	s.Groups = v
	return s
}

// SetSizes sets the Sizes field's value.
func (s *TreeMapAggregatedFieldWells) SetSizes(v []*MeasureField) *TreeMapAggregatedFieldWells {
	s.Sizes = v
	return s
}

// The configuration of a tree map.
type TreeMapConfiguration struct {
	_ struct{} `type:"structure"`

	// The label options (label text, label visibility) for the colors displayed
	// in a tree map.
	ColorLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The color options (gradient color, point of divergence) of a tree map.
	ColorScale *ColorScale `type:"structure"`

	// The options that determine if visual data labels are displayed.
	DataLabels *DataLabelOptions `type:"structure"`

	// The field wells of the visual.
	FieldWells *TreeMapFieldWells `type:"structure"`

	// The label options (label text, label visibility) of the groups that are displayed
	// in a tree map.
	GroupLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The legend display setup of the visual.
	Legend *LegendOptions `type:"structure"`

	// The label options (label text, label visibility) of the sizes that are displayed
	// in a tree map.
	SizeLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The sort configuration of a tree map.
	SortConfiguration *TreeMapSortConfiguration `type:"structure"`

	// The tooltip display setup of the visual.
	Tooltip *TooltipOptions `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 TreeMapConfiguration) 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 TreeMapConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TreeMapConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TreeMapConfiguration"}
	if s.ColorLabelOptions != nil {
		if err := s.ColorLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("ColorLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.ColorScale != nil {
		if err := s.ColorScale.Validate(); err != nil {
			invalidParams.AddNested("ColorScale", err.(request.ErrInvalidParams))
		}
	}
	if s.DataLabels != nil {
		if err := s.DataLabels.Validate(); err != nil {
			invalidParams.AddNested("DataLabels", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.GroupLabelOptions != nil {
		if err := s.GroupLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("GroupLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.SizeLabelOptions != nil {
		if err := s.SizeLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("SizeLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.SortConfiguration != nil {
		if err := s.SortConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SortConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.Tooltip != nil {
		if err := s.Tooltip.Validate(); err != nil {
			invalidParams.AddNested("Tooltip", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColorLabelOptions sets the ColorLabelOptions field's value.
func (s *TreeMapConfiguration) SetColorLabelOptions(v *ChartAxisLabelOptions) *TreeMapConfiguration {
	s.ColorLabelOptions = v
	return s
}

// SetColorScale sets the ColorScale field's value.
func (s *TreeMapConfiguration) SetColorScale(v *ColorScale) *TreeMapConfiguration {
	s.ColorScale = v
	return s
}

// SetDataLabels sets the DataLabels field's value.
func (s *TreeMapConfiguration) SetDataLabels(v *DataLabelOptions) *TreeMapConfiguration {
	s.DataLabels = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *TreeMapConfiguration) SetFieldWells(v *TreeMapFieldWells) *TreeMapConfiguration {
	s.FieldWells = v
	return s
}

// SetGroupLabelOptions sets the GroupLabelOptions field's value.
func (s *TreeMapConfiguration) SetGroupLabelOptions(v *ChartAxisLabelOptions) *TreeMapConfiguration {
	s.GroupLabelOptions = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *TreeMapConfiguration) SetInteractions(v *VisualInteractionOptions) *TreeMapConfiguration {
	s.Interactions = v
	return s
}

// SetLegend sets the Legend field's value.
func (s *TreeMapConfiguration) SetLegend(v *LegendOptions) *TreeMapConfiguration {
	s.Legend = v
	return s
}

// SetSizeLabelOptions sets the SizeLabelOptions field's value.
func (s *TreeMapConfiguration) SetSizeLabelOptions(v *ChartAxisLabelOptions) *TreeMapConfiguration {
	s.SizeLabelOptions = v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *TreeMapConfiguration) SetSortConfiguration(v *TreeMapSortConfiguration) *TreeMapConfiguration {
	s.SortConfiguration = v
	return s
}

// SetTooltip sets the Tooltip field's value.
func (s *TreeMapConfiguration) SetTooltip(v *TooltipOptions) *TreeMapConfiguration {
	s.Tooltip = v
	return s
}

// The field wells of a tree map.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type TreeMapFieldWells struct {
	_ struct{} `type:"structure"`

	// The aggregated field wells of a tree map.
	TreeMapAggregatedFieldWells *TreeMapAggregatedFieldWells `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 TreeMapFieldWells) 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 TreeMapFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TreeMapFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TreeMapFieldWells"}
	if s.TreeMapAggregatedFieldWells != nil {
		if err := s.TreeMapAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("TreeMapAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTreeMapAggregatedFieldWells sets the TreeMapAggregatedFieldWells field's value.
func (s *TreeMapFieldWells) SetTreeMapAggregatedFieldWells(v *TreeMapAggregatedFieldWells) *TreeMapFieldWells {
	s.TreeMapAggregatedFieldWells = v
	return s
}

// The sort configuration of a tree map.
type TreeMapSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The limit on the number of groups that are displayed.
	TreeMapGroupItemsLimitConfiguration *ItemsLimitConfiguration `type:"structure"`

	// The sort configuration of group by fields.
	TreeMapSort []*FieldSortOptions `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 TreeMapSortConfiguration) 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 TreeMapSortConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TreeMapSortConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TreeMapSortConfiguration"}
	if s.TreeMapSort != nil {
		for i, v := range s.TreeMapSort {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TreeMapSort", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTreeMapGroupItemsLimitConfiguration sets the TreeMapGroupItemsLimitConfiguration field's value.
func (s *TreeMapSortConfiguration) SetTreeMapGroupItemsLimitConfiguration(v *ItemsLimitConfiguration) *TreeMapSortConfiguration {
	s.TreeMapGroupItemsLimitConfiguration = v
	return s
}

// SetTreeMapSort sets the TreeMapSort field's value.
func (s *TreeMapSortConfiguration) SetTreeMapSort(v []*FieldSortOptions) *TreeMapSortConfiguration {
	s.TreeMapSort = v
	return s
}

// A tree map.
//
// For more information, see Using tree maps (https://docs.aws.amazon.com/quicksight/latest/user/tree-map.html)
// in the Amazon QuickSight User Guide.
type TreeMapVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration settings of the visual.
	ChartConfiguration *TreeMapConfiguration `type:"structure"`

	// The column hierarchy that is used during drill-downs and drill-ups.
	ColumnHierarchies []*ColumnHierarchy `type:"list"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers..
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TreeMapVisual) 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 TreeMapVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TreeMapVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TreeMapVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ColumnHierarchies != nil {
		for i, v := range s.ColumnHierarchies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnHierarchies", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *TreeMapVisual) SetActions(v []*VisualCustomAction) *TreeMapVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *TreeMapVisual) SetChartConfiguration(v *TreeMapConfiguration) *TreeMapVisual {
	s.ChartConfiguration = v
	return s
}

// SetColumnHierarchies sets the ColumnHierarchies field's value.
func (s *TreeMapVisual) SetColumnHierarchies(v []*ColumnHierarchy) *TreeMapVisual {
	s.ColumnHierarchies = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *TreeMapVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *TreeMapVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *TreeMapVisual) SetTitle(v *VisualTitleLabelOptions) *TreeMapVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *TreeMapVisual) SetVisualId(v string) *TreeMapVisual {
	s.VisualId = &v
	return s
}

// The options that determine the presentation of trend arrows in a KPI visual.
type TrendArrowOptions struct {
	_ struct{} `type:"structure"`

	// The visibility of the trend arrows.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 TrendArrowOptions) 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 TrendArrowOptions) GoString() string {
	return s.String()
}

// SetVisibility sets the Visibility field's value.
func (s *TrendArrowOptions) SetVisibility(v string) *TrendArrowOptions {
	s.Visibility = &v
	return s
}

// The parameters that are required to connect to a Trino data source.
type TrinoParameters struct {
	_ struct{} `type:"structure"`

	// The catalog name for the Trino data source.
	//
	// Catalog is a required field
	Catalog *string `type:"string" required:"true"`

	// The host name of the Trino data source.
	//
	// Host is a required field
	Host *string `min:"1" type:"string" required:"true"`

	// The port for the Trino data source.
	//
	// Port is a required field
	Port *int64 `min:"1" type:"integer" 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 TrinoParameters) 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 TrinoParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TrinoParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TrinoParameters"}
	if s.Catalog == nil {
		invalidParams.Add(request.NewErrParamRequired("Catalog"))
	}
	if s.Host == nil {
		invalidParams.Add(request.NewErrParamRequired("Host"))
	}
	if s.Host != nil && len(*s.Host) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Host", 1))
	}
	if s.Port == nil {
		invalidParams.Add(request.NewErrParamRequired("Port"))
	}
	if s.Port != nil && *s.Port < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalog sets the Catalog field's value.
func (s *TrinoParameters) SetCatalog(v string) *TrinoParameters {
	s.Catalog = &v
	return s
}

// SetHost sets the Host field's value.
func (s *TrinoParameters) SetHost(v string) *TrinoParameters {
	s.Host = &v
	return s
}

// SetPort sets the Port field's value.
func (s *TrinoParameters) SetPort(v int64) *TrinoParameters {
	s.Port = &v
	return s
}

// The parameters for Twitter.
type TwitterParameters struct {
	_ struct{} `type:"structure"`

	// Maximum number of rows to query Twitter.
	//
	// MaxRows is a required field
	MaxRows *int64 `min:"1" type:"integer" required:"true"`

	// Twitter query string.
	//
	// Query is a required field
	Query *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TwitterParameters) 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 TwitterParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TwitterParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TwitterParameters"}
	if s.MaxRows == nil {
		invalidParams.Add(request.NewErrParamRequired("MaxRows"))
	}
	if s.MaxRows != nil && *s.MaxRows < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxRows", 1))
	}
	if s.Query == nil {
		invalidParams.Add(request.NewErrParamRequired("Query"))
	}
	if s.Query != nil && len(*s.Query) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Query", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxRows sets the MaxRows field's value.
func (s *TwitterParameters) SetMaxRows(v int64) *TwitterParameters {
	s.MaxRows = &v
	return s
}

// SetQuery sets the Query field's value.
func (s *TwitterParameters) SetQuery(v string) *TwitterParameters {
	s.Query = &v
	return s
}

// Determines the typography options.
type Typography struct {
	_ struct{} `type:"structure"`

	// Determines the list of font families.
	FontFamilies []*Font `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 Typography) 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 Typography) GoString() string {
	return s.String()
}

// SetFontFamilies sets the FontFamilies field's value.
func (s *Typography) SetFontFamilies(v []*Font) *Typography {
	s.FontFamilies = v
	return s
}

// The theme colors that apply to UI and to charts, excluding data colors. The
// colors description is a hexadecimal color code that consists of six alphanumerical
// characters, prefixed with #, for example #37BFF5. For more information, see
// Using Themes in Amazon QuickSight (https://docs.aws.amazon.com/quicksight/latest/user/themes-in-quicksight.html)
// in the Amazon QuickSight User Guide.
type UIColorPalette struct {
	_ struct{} `type:"structure"`

	// This color is that applies to selected states and buttons.
	Accent *string `type:"string"`

	// The foreground color that applies to any text or other elements that appear
	// over the accent color.
	AccentForeground *string `type:"string"`

	// The color that applies to error messages.
	Danger *string `type:"string"`

	// The foreground color that applies to any text or other elements that appear
	// over the error color.
	DangerForeground *string `type:"string"`

	// The color that applies to the names of fields that are identified as dimensions.
	Dimension *string `type:"string"`

	// The foreground color that applies to any text or other elements that appear
	// over the dimension color.
	DimensionForeground *string `type:"string"`

	// The color that applies to the names of fields that are identified as measures.
	Measure *string `type:"string"`

	// The foreground color that applies to any text or other elements that appear
	// over the measure color.
	MeasureForeground *string `type:"string"`

	// The background color that applies to visuals and other high emphasis UI.
	PrimaryBackground *string `type:"string"`

	// The color of text and other foreground elements that appear over the primary
	// background regions, such as grid lines, borders, table banding, icons, and
	// so on.
	PrimaryForeground *string `type:"string"`

	// The background color that applies to the sheet background and sheet controls.
	SecondaryBackground *string `type:"string"`

	// The foreground color that applies to any sheet title, sheet control text,
	// or UI that appears over the secondary background.
	SecondaryForeground *string `type:"string"`

	// The color that applies to success messages, for example the check mark for
	// a successful download.
	Success *string `type:"string"`

	// The foreground color that applies to any text or other elements that appear
	// over the success color.
	SuccessForeground *string `type:"string"`

	// This color that applies to warning and informational messages.
	Warning *string `type:"string"`

	// The foreground color that applies to any text or other elements that appear
	// over the warning color.
	WarningForeground *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UIColorPalette) 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 UIColorPalette) GoString() string {
	return s.String()
}

// SetAccent sets the Accent field's value.
func (s *UIColorPalette) SetAccent(v string) *UIColorPalette {
	s.Accent = &v
	return s
}

// SetAccentForeground sets the AccentForeground field's value.
func (s *UIColorPalette) SetAccentForeground(v string) *UIColorPalette {
	s.AccentForeground = &v
	return s
}

// SetDanger sets the Danger field's value.
func (s *UIColorPalette) SetDanger(v string) *UIColorPalette {
	s.Danger = &v
	return s
}

// SetDangerForeground sets the DangerForeground field's value.
func (s *UIColorPalette) SetDangerForeground(v string) *UIColorPalette {
	s.DangerForeground = &v
	return s
}

// SetDimension sets the Dimension field's value.
func (s *UIColorPalette) SetDimension(v string) *UIColorPalette {
	s.Dimension = &v
	return s
}

// SetDimensionForeground sets the DimensionForeground field's value.
func (s *UIColorPalette) SetDimensionForeground(v string) *UIColorPalette {
	s.DimensionForeground = &v
	return s
}

// SetMeasure sets the Measure field's value.
func (s *UIColorPalette) SetMeasure(v string) *UIColorPalette {
	s.Measure = &v
	return s
}

// SetMeasureForeground sets the MeasureForeground field's value.
func (s *UIColorPalette) SetMeasureForeground(v string) *UIColorPalette {
	s.MeasureForeground = &v
	return s
}

// SetPrimaryBackground sets the PrimaryBackground field's value.
func (s *UIColorPalette) SetPrimaryBackground(v string) *UIColorPalette {
	s.PrimaryBackground = &v
	return s
}

// SetPrimaryForeground sets the PrimaryForeground field's value.
func (s *UIColorPalette) SetPrimaryForeground(v string) *UIColorPalette {
	s.PrimaryForeground = &v
	return s
}

// SetSecondaryBackground sets the SecondaryBackground field's value.
func (s *UIColorPalette) SetSecondaryBackground(v string) *UIColorPalette {
	s.SecondaryBackground = &v
	return s
}

// SetSecondaryForeground sets the SecondaryForeground field's value.
func (s *UIColorPalette) SetSecondaryForeground(v string) *UIColorPalette {
	s.SecondaryForeground = &v
	return s
}

// SetSuccess sets the Success field's value.
func (s *UIColorPalette) SetSuccess(v string) *UIColorPalette {
	s.Success = &v
	return s
}

// SetSuccessForeground sets the SuccessForeground field's value.
func (s *UIColorPalette) SetSuccessForeground(v string) *UIColorPalette {
	s.SuccessForeground = &v
	return s
}

// SetWarning sets the Warning field's value.
func (s *UIColorPalette) SetWarning(v string) *UIColorPalette {
	s.Warning = &v
	return s
}

// SetWarningForeground sets the WarningForeground field's value.
func (s *UIColorPalette) SetWarningForeground(v string) *UIColorPalette {
	s.WarningForeground = &v
	return s
}

// The unaggregated field for a table.
type UnaggregatedField struct {
	_ struct{} `type:"structure"`

	// The column that is used in the UnaggregatedField.
	//
	// Column is a required field
	Column *ColumnIdentifier `type:"structure" required:"true"`

	// The custom field ID.
	//
	// FieldId is a required field
	FieldId *string `min:"1" type:"string" required:"true"`

	// The format configuration of the field.
	FormatConfiguration *FormatConfiguration `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 UnaggregatedField) 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 UnaggregatedField) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UnaggregatedField) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UnaggregatedField"}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.FieldId == nil {
		invalidParams.Add(request.NewErrParamRequired("FieldId"))
	}
	if s.FieldId != nil && len(*s.FieldId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FieldId", 1))
	}
	if s.Column != nil {
		if err := s.Column.Validate(); err != nil {
			invalidParams.AddNested("Column", err.(request.ErrInvalidParams))
		}
	}
	if s.FormatConfiguration != nil {
		if err := s.FormatConfiguration.Validate(); err != nil {
			invalidParams.AddNested("FormatConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumn sets the Column field's value.
func (s *UnaggregatedField) SetColumn(v *ColumnIdentifier) *UnaggregatedField {
	s.Column = v
	return s
}

// SetFieldId sets the FieldId field's value.
func (s *UnaggregatedField) SetFieldId(v string) *UnaggregatedField {
	s.FieldId = &v
	return s
}

// SetFormatConfiguration sets the FormatConfiguration field's value.
func (s *UnaggregatedField) SetFormatConfiguration(v *FormatConfiguration) *UnaggregatedField {
	s.FormatConfiguration = v
	return s
}

// The unique values computation configuration.
type UniqueValuesComputation struct {
	_ struct{} `type:"structure"`

	// The category field that is used in a computation.
	Category *DimensionField `type:"structure"`

	// The ID for a computation.
	//
	// ComputationId is a required field
	ComputationId *string `min:"1" type:"string" required:"true"`

	// The name of a computation.
	Name *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UniqueValuesComputation) 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 UniqueValuesComputation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UniqueValuesComputation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UniqueValuesComputation"}
	if s.ComputationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ComputationId"))
	}
	if s.ComputationId != nil && len(*s.ComputationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ComputationId", 1))
	}
	if s.Category != nil {
		if err := s.Category.Validate(); err != nil {
			invalidParams.AddNested("Category", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategory sets the Category field's value.
func (s *UniqueValuesComputation) SetCategory(v *DimensionField) *UniqueValuesComputation {
	s.Category = v
	return s
}

// SetComputationId sets the ComputationId field's value.
func (s *UniqueValuesComputation) SetComputationId(v string) *UniqueValuesComputation {
	s.ComputationId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UniqueValuesComputation) SetName(v string) *UniqueValuesComputation {
	s.Name = &v
	return s
}

// This error indicates that you are calling an embedding operation in Amazon
// QuickSight without the required pricing plan on your Amazon Web Services
// account. Before you can use embedding for anonymous users, a QuickSight administrator
// needs to add capacity pricing to Amazon QuickSight. You can do this on the
// Manage Amazon QuickSight page.
//
// After capacity pricing is added, you can use the GetDashboardEmbedUrl (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GetDashboardEmbedUrl.html)
// API operation with the --identity-type ANONYMOUS option.
type UnsupportedPricingPlanException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnsupportedPricingPlanException) 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 UnsupportedPricingPlanException) GoString() string {
	return s.String()
}

func newErrorUnsupportedPricingPlanException(v protocol.ResponseMetadata) error {
	return &UnsupportedPricingPlanException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *UnsupportedPricingPlanException) Code() string {
	return "UnsupportedPricingPlanException"
}

// Message returns the exception's message.
func (s *UnsupportedPricingPlanException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *UnsupportedPricingPlanException) OrigErr() error {
	return nil
}

func (s *UnsupportedPricingPlanException) 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 *UnsupportedPricingPlanException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *UnsupportedPricingPlanException) RequestID() string {
	return s.RespMetadata.RequestID
}

// This error indicates that you are calling an operation on an Amazon QuickSight
// subscription where the edition doesn't include support for that operation.
// Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition.
// Not every operation and capability is available in every edition.
type UnsupportedUserEditionException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnsupportedUserEditionException) 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 UnsupportedUserEditionException) GoString() string {
	return s.String()
}

func newErrorUnsupportedUserEditionException(v protocol.ResponseMetadata) error {
	return &UnsupportedUserEditionException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *UnsupportedUserEditionException) Code() string {
	return "UnsupportedUserEditionException"
}

// Message returns the exception's message.
func (s *UnsupportedUserEditionException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *UnsupportedUserEditionException) OrigErr() error {
	return nil
}

func (s *UnsupportedUserEditionException) 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 *UnsupportedUserEditionException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *UnsupportedUserEditionException) RequestID() string {
	return s.RespMetadata.RequestID
}

// A transform operation that removes tags associated with a column.
type UntagColumnOperation struct {
	_ struct{} `type:"structure"`

	// The column that this operation acts on.
	//
	// ColumnName is a required field
	ColumnName *string `min:"1" type:"string" required:"true"`

	// The column tags to remove from this column.
	//
	// TagNames is a required field
	TagNames []*string `type:"list" required:"true" enum:"ColumnTagName"`
}

// 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 UntagColumnOperation) 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 UntagColumnOperation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UntagColumnOperation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UntagColumnOperation"}
	if s.ColumnName == nil {
		invalidParams.Add(request.NewErrParamRequired("ColumnName"))
	}
	if s.ColumnName != nil && len(*s.ColumnName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ColumnName", 1))
	}
	if s.TagNames == nil {
		invalidParams.Add(request.NewErrParamRequired("TagNames"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumnName sets the ColumnName field's value.
func (s *UntagColumnOperation) SetColumnName(v string) *UntagColumnOperation {
	s.ColumnName = &v
	return s
}

// SetTagNames sets the TagNames field's value.
func (s *UntagColumnOperation) SetTagNames(v []*string) *UntagColumnOperation {
	s.TagNames = v
	return s
}

type UntagResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the resource that you want to untag.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"ResourceArn" type:"string" required:"true"`

	// The keys of the key-value pairs for the resource tag or tags assigned to
	// the resource.
	//
	// TagKeys is a required field
	TagKeys []*string `location:"querystring" locationName:"keys" min:"1" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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 s.TagKeys != nil && len(s.TagKeys) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TagKeys", 1))
	}

	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"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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()
}

// SetRequestId sets the RequestId field's value.
func (s *UntagResourceOutput) SetRequestId(v string) *UntagResourceOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UntagResourceOutput) SetStatus(v int64) *UntagResourceOutput {
	s.Status = &v
	return s
}

type UpdateAccountCustomizationInput struct {
	_ struct{} `type:"structure"`

	// The Amazon QuickSight customizations you're updating in the current Amazon
	// Web Services Region.
	//
	// AccountCustomization is a required field
	AccountCustomization *AccountCustomization `type:"structure" required:"true"`

	// The ID for the Amazon Web Services account that you want to update Amazon
	// QuickSight customizations for.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The namespace that you want to update Amazon QuickSight customizations for.
	Namespace *string `location:"querystring" locationName:"namespace" 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 UpdateAccountCustomizationInput) 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 UpdateAccountCustomizationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAccountCustomizationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAccountCustomizationInput"}
	if s.AccountCustomization == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountCustomization"))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccountCustomization sets the AccountCustomization field's value.
func (s *UpdateAccountCustomizationInput) SetAccountCustomization(v *AccountCustomization) *UpdateAccountCustomizationInput {
	s.AccountCustomization = v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateAccountCustomizationInput) SetAwsAccountId(v string) *UpdateAccountCustomizationInput {
	s.AwsAccountId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *UpdateAccountCustomizationInput) SetNamespace(v string) *UpdateAccountCustomizationInput {
	s.Namespace = &v
	return s
}

type UpdateAccountCustomizationOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon QuickSight customizations you're updating in the current Amazon
	// Web Services Region.
	AccountCustomization *AccountCustomization `type:"structure"`

	// The Amazon Resource Name (ARN) for the updated customization for this Amazon
	// Web Services account.
	Arn *string `type:"string"`

	// The ID for the Amazon Web Services account that you want to update Amazon
	// QuickSight customizations for.
	AwsAccountId *string `min:"12" type:"string"`

	// The namespace associated with the customization that you're updating.
	Namespace *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 UpdateAccountCustomizationOutput) 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 UpdateAccountCustomizationOutput) GoString() string {
	return s.String()
}

// SetAccountCustomization sets the AccountCustomization field's value.
func (s *UpdateAccountCustomizationOutput) SetAccountCustomization(v *AccountCustomization) *UpdateAccountCustomizationOutput {
	s.AccountCustomization = v
	return s
}

// SetArn sets the Arn field's value.
func (s *UpdateAccountCustomizationOutput) SetArn(v string) *UpdateAccountCustomizationOutput {
	s.Arn = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateAccountCustomizationOutput) SetAwsAccountId(v string) *UpdateAccountCustomizationOutput {
	s.AwsAccountId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *UpdateAccountCustomizationOutput) SetNamespace(v string) *UpdateAccountCustomizationOutput {
	s.Namespace = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateAccountCustomizationOutput) SetRequestId(v string) *UpdateAccountCustomizationOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateAccountCustomizationOutput) SetStatus(v int64) *UpdateAccountCustomizationOutput {
	s.Status = &v
	return s
}

type UpdateAccountSettingsInput struct {
	_ struct{} `type:"structure"`

	// The ID for the Amazon Web Services account that contains the Amazon QuickSight
	// settings that you want to list.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The default namespace for this Amazon Web Services account. Currently, the
	// default is default. IAM users that register for the first time with Amazon
	// QuickSight provide an email address that becomes associated with the default
	// namespace.
	//
	// DefaultNamespace is a required field
	DefaultNamespace *string `type:"string" required:"true"`

	// The email address that you want Amazon QuickSight to send notifications to
	// regarding your Amazon Web Services account or Amazon QuickSight subscription.
	NotificationEmail *string `type:"string"`

	// A boolean value that determines whether or not an Amazon QuickSight account
	// can be deleted. A True value doesn't allow the account to be deleted and
	// results in an error message if a user tries to make a DeleteAccountSubscription
	// request. A False value will allow the account to be deleted.
	TerminationProtectionEnabled *bool `type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAccountSettingsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAccountSettingsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAccountSettingsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAccountSettingsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DefaultNamespace == nil {
		invalidParams.Add(request.NewErrParamRequired("DefaultNamespace"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateAccountSettingsInput) SetAwsAccountId(v string) *UpdateAccountSettingsInput {
	s.AwsAccountId = &v
	return s
}

// SetDefaultNamespace sets the DefaultNamespace field's value.
func (s *UpdateAccountSettingsInput) SetDefaultNamespace(v string) *UpdateAccountSettingsInput {
	s.DefaultNamespace = &v
	return s
}

// SetNotificationEmail sets the NotificationEmail field's value.
func (s *UpdateAccountSettingsInput) SetNotificationEmail(v string) *UpdateAccountSettingsInput {
	s.NotificationEmail = &v
	return s
}

// SetTerminationProtectionEnabled sets the TerminationProtectionEnabled field's value.
func (s *UpdateAccountSettingsInput) SetTerminationProtectionEnabled(v bool) *UpdateAccountSettingsInput {
	s.TerminationProtectionEnabled = &v
	return s
}

type UpdateAccountSettingsOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAccountSettingsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateAccountSettingsOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateAccountSettingsOutput) SetRequestId(v string) *UpdateAccountSettingsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateAccountSettingsOutput) SetStatus(v int64) *UpdateAccountSettingsOutput {
	s.Status = &v
	return s
}

type UpdateAnalysisInput struct {
	_ struct{} `type:"structure"`

	// The ID for the analysis that you're updating. This ID displays in the URL
	// of the analysis.
	//
	// AnalysisId is a required field
	AnalysisId *string `location:"uri" locationName:"AnalysisId" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account that contains the analysis that
	// you're updating.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The definition of an analysis.
	//
	// A definition is the data model of all features in a Dashboard, Template,
	// or Analysis.
	Definition *AnalysisDefinition `type:"structure"`

	// A descriptive name for the analysis that you're updating. This name displays
	// for the analysis in the Amazon QuickSight console.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The parameter names and override values that you want to use. An analysis
	// can have any parameter type, and some parameters might accept multiple values.
	Parameters *Parameters `type:"structure"`

	// A source entity to use for the analysis that you're updating. This metadata
	// structure contains details that describe a source template and one or more
	// datasets.
	SourceEntity *AnalysisSourceEntity `type:"structure"`

	// The Amazon Resource Name (ARN) for the theme to apply to the analysis that
	// you're creating. To see the theme in the Amazon QuickSight console, make
	// sure that you have access to it.
	ThemeArn *string `type:"string"`

	// The option to relax the validation needed to update an analysis with definition
	// objects. This skips the validation step for specific errors.
	ValidationStrategy *ValidationStrategy `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 UpdateAnalysisInput) 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 UpdateAnalysisInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAnalysisInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAnalysisInput"}
	if s.AnalysisId == nil {
		invalidParams.Add(request.NewErrParamRequired("AnalysisId"))
	}
	if s.AnalysisId != nil && len(*s.AnalysisId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AnalysisId", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.Definition != nil {
		if err := s.Definition.Validate(); err != nil {
			invalidParams.AddNested("Definition", err.(request.ErrInvalidParams))
		}
	}
	if s.Parameters != nil {
		if err := s.Parameters.Validate(); err != nil {
			invalidParams.AddNested("Parameters", err.(request.ErrInvalidParams))
		}
	}
	if s.SourceEntity != nil {
		if err := s.SourceEntity.Validate(); err != nil {
			invalidParams.AddNested("SourceEntity", err.(request.ErrInvalidParams))
		}
	}
	if s.ValidationStrategy != nil {
		if err := s.ValidationStrategy.Validate(); err != nil {
			invalidParams.AddNested("ValidationStrategy", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAnalysisId sets the AnalysisId field's value.
func (s *UpdateAnalysisInput) SetAnalysisId(v string) *UpdateAnalysisInput {
	s.AnalysisId = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateAnalysisInput) SetAwsAccountId(v string) *UpdateAnalysisInput {
	s.AwsAccountId = &v
	return s
}

// SetDefinition sets the Definition field's value.
func (s *UpdateAnalysisInput) SetDefinition(v *AnalysisDefinition) *UpdateAnalysisInput {
	s.Definition = v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateAnalysisInput) SetName(v string) *UpdateAnalysisInput {
	s.Name = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *UpdateAnalysisInput) SetParameters(v *Parameters) *UpdateAnalysisInput {
	s.Parameters = v
	return s
}

// SetSourceEntity sets the SourceEntity field's value.
func (s *UpdateAnalysisInput) SetSourceEntity(v *AnalysisSourceEntity) *UpdateAnalysisInput {
	s.SourceEntity = v
	return s
}

// SetThemeArn sets the ThemeArn field's value.
func (s *UpdateAnalysisInput) SetThemeArn(v string) *UpdateAnalysisInput {
	s.ThemeArn = &v
	return s
}

// SetValidationStrategy sets the ValidationStrategy field's value.
func (s *UpdateAnalysisInput) SetValidationStrategy(v *ValidationStrategy) *UpdateAnalysisInput {
	s.ValidationStrategy = v
	return s
}

type UpdateAnalysisOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the analysis.
	AnalysisId *string `min:"1" type:"string"`

	// The ARN of the analysis that you're updating.
	Arn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The update status of the last update that was made to the analysis.
	UpdateStatus *string `type:"string" enum:"ResourceStatus"`
}

// 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 UpdateAnalysisOutput) 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 UpdateAnalysisOutput) GoString() string {
	return s.String()
}

// SetAnalysisId sets the AnalysisId field's value.
func (s *UpdateAnalysisOutput) SetAnalysisId(v string) *UpdateAnalysisOutput {
	s.AnalysisId = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *UpdateAnalysisOutput) SetArn(v string) *UpdateAnalysisOutput {
	s.Arn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateAnalysisOutput) SetRequestId(v string) *UpdateAnalysisOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateAnalysisOutput) SetStatus(v int64) *UpdateAnalysisOutput {
	s.Status = &v
	return s
}

// SetUpdateStatus sets the UpdateStatus field's value.
func (s *UpdateAnalysisOutput) SetUpdateStatus(v string) *UpdateAnalysisOutput {
	s.UpdateStatus = &v
	return s
}

type UpdateAnalysisPermissionsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the analysis whose permissions you're updating. The ID is part
	// of the analysis URL.
	//
	// AnalysisId is a required field
	AnalysisId *string `location:"uri" locationName:"AnalysisId" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account that contains the analysis whose
	// permissions you're updating. You must be using the Amazon Web Services account
	// that the analysis is in.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// A structure that describes the permissions to add and the principal to add
	// them to.
	GrantPermissions []*ResourcePermission `type:"list"`

	// A structure that describes the permissions to remove and the principal to
	// remove them from.
	RevokePermissions []*ResourcePermission `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 UpdateAnalysisPermissionsInput) 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 UpdateAnalysisPermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateAnalysisPermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateAnalysisPermissionsInput"}
	if s.AnalysisId == nil {
		invalidParams.Add(request.NewErrParamRequired("AnalysisId"))
	}
	if s.AnalysisId != nil && len(*s.AnalysisId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AnalysisId", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.GrantPermissions != nil {
		for i, v := range s.GrantPermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GrantPermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.RevokePermissions != nil {
		for i, v := range s.RevokePermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RevokePermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAnalysisId sets the AnalysisId field's value.
func (s *UpdateAnalysisPermissionsInput) SetAnalysisId(v string) *UpdateAnalysisPermissionsInput {
	s.AnalysisId = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateAnalysisPermissionsInput) SetAwsAccountId(v string) *UpdateAnalysisPermissionsInput {
	s.AwsAccountId = &v
	return s
}

// SetGrantPermissions sets the GrantPermissions field's value.
func (s *UpdateAnalysisPermissionsInput) SetGrantPermissions(v []*ResourcePermission) *UpdateAnalysisPermissionsInput {
	s.GrantPermissions = v
	return s
}

// SetRevokePermissions sets the RevokePermissions field's value.
func (s *UpdateAnalysisPermissionsInput) SetRevokePermissions(v []*ResourcePermission) *UpdateAnalysisPermissionsInput {
	s.RevokePermissions = v
	return s
}

type UpdateAnalysisPermissionsOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the analysis that you updated.
	AnalysisArn *string `type:"string"`

	// The ID of the analysis that you updated permissions for.
	AnalysisId *string `min:"1" type:"string"`

	// A structure that describes the principals and the resource-level permissions
	// on an analysis.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 UpdateAnalysisPermissionsOutput) 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 UpdateAnalysisPermissionsOutput) GoString() string {
	return s.String()
}

// SetAnalysisArn sets the AnalysisArn field's value.
func (s *UpdateAnalysisPermissionsOutput) SetAnalysisArn(v string) *UpdateAnalysisPermissionsOutput {
	s.AnalysisArn = &v
	return s
}

// SetAnalysisId sets the AnalysisId field's value.
func (s *UpdateAnalysisPermissionsOutput) SetAnalysisId(v string) *UpdateAnalysisPermissionsOutput {
	s.AnalysisId = &v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *UpdateAnalysisPermissionsOutput) SetPermissions(v []*ResourcePermission) *UpdateAnalysisPermissionsOutput {
	s.Permissions = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateAnalysisPermissionsOutput) SetRequestId(v string) *UpdateAnalysisPermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateAnalysisPermissionsOutput) SetStatus(v int64) *UpdateAnalysisPermissionsOutput {
	s.Status = &v
	return s
}

type UpdateDashboardInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the dashboard that
	// you're updating.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the dashboard.
	//
	// DashboardId is a required field
	DashboardId *string `location:"uri" locationName:"DashboardId" min:"1" type:"string" required:"true"`

	// Options for publishing the dashboard when you create it:
	//
	//    * AvailabilityStatus for AdHocFilteringOption - This status can be either
	//    ENABLED or DISABLED. When this is set to DISABLED, Amazon QuickSight disables
	//    the left filter pane on the published dashboard, which can be used for
	//    ad hoc (one-time) filtering. This option is ENABLED by default.
	//
	//    * AvailabilityStatus for ExportToCSVOption - This status can be either
	//    ENABLED or DISABLED. The visual option to export data to .CSV format isn't
	//    enabled when this is set to DISABLED. This option is ENABLED by default.
	//
	//    * VisibilityState for SheetControlsOption - This visibility state can
	//    be either COLLAPSED or EXPANDED. This option is COLLAPSED by default.
	DashboardPublishOptions *DashboardPublishOptions `type:"structure"`

	// The definition of a dashboard.
	//
	// A definition is the data model of all features in a Dashboard, Template,
	// or Analysis.
	Definition *DashboardVersionDefinition `type:"structure"`

	// The display name of the dashboard.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A structure that contains the parameters of the dashboard. These are parameter
	// overrides for a dashboard. A dashboard can have any type of parameters, and
	// some parameters might accept multiple values.
	Parameters *Parameters `type:"structure"`

	// The entity that you are using as a source when you update the dashboard.
	// In SourceEntity, you specify the type of object you're using as source. You
	// can only update a dashboard from a template, so you use a SourceTemplate
	// entity. If you need to update a dashboard from an analysis, first convert
	// the analysis to a template by using the CreateTemplate (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateTemplate.html)
	// API operation. For SourceTemplate, specify the Amazon Resource Name (ARN)
	// of the source template. The SourceTemplate ARN can contain any Amazon Web
	// Services account and any Amazon QuickSight-supported Amazon Web Services
	// Region.
	//
	// Use the DataSetReferences entity within SourceTemplate to list the replacement
	// datasets for the placeholders listed in the original. The schema in each
	// dataset must match its placeholder.
	SourceEntity *DashboardSourceEntity `type:"structure"`

	// The Amazon Resource Name (ARN) of the theme that is being used for this dashboard.
	// If you add a value for this field, it overrides the value that was originally
	// associated with the entity. The theme ARN must exist in the same Amazon Web
	// Services account where you create the dashboard.
	ThemeArn *string `type:"string"`

	// The option to relax the validation needed to update a dashboard with definition
	// objects. This skips the validation step for specific errors.
	ValidationStrategy *ValidationStrategy `type:"structure"`

	// A description for the first version of the dashboard being created.
	VersionDescription *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDashboardInput) 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 UpdateDashboardInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDashboardInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDashboardInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DashboardId == nil {
		invalidParams.Add(request.NewErrParamRequired("DashboardId"))
	}
	if s.DashboardId != nil && len(*s.DashboardId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DashboardId", 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 s.VersionDescription != nil && len(*s.VersionDescription) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VersionDescription", 1))
	}
	if s.Definition != nil {
		if err := s.Definition.Validate(); err != nil {
			invalidParams.AddNested("Definition", err.(request.ErrInvalidParams))
		}
	}
	if s.Parameters != nil {
		if err := s.Parameters.Validate(); err != nil {
			invalidParams.AddNested("Parameters", err.(request.ErrInvalidParams))
		}
	}
	if s.SourceEntity != nil {
		if err := s.SourceEntity.Validate(); err != nil {
			invalidParams.AddNested("SourceEntity", err.(request.ErrInvalidParams))
		}
	}
	if s.ValidationStrategy != nil {
		if err := s.ValidationStrategy.Validate(); err != nil {
			invalidParams.AddNested("ValidationStrategy", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateDashboardInput) SetAwsAccountId(v string) *UpdateDashboardInput {
	s.AwsAccountId = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *UpdateDashboardInput) SetDashboardId(v string) *UpdateDashboardInput {
	s.DashboardId = &v
	return s
}

// SetDashboardPublishOptions sets the DashboardPublishOptions field's value.
func (s *UpdateDashboardInput) SetDashboardPublishOptions(v *DashboardPublishOptions) *UpdateDashboardInput {
	s.DashboardPublishOptions = v
	return s
}

// SetDefinition sets the Definition field's value.
func (s *UpdateDashboardInput) SetDefinition(v *DashboardVersionDefinition) *UpdateDashboardInput {
	s.Definition = v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateDashboardInput) SetName(v string) *UpdateDashboardInput {
	s.Name = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *UpdateDashboardInput) SetParameters(v *Parameters) *UpdateDashboardInput {
	s.Parameters = v
	return s
}

// SetSourceEntity sets the SourceEntity field's value.
func (s *UpdateDashboardInput) SetSourceEntity(v *DashboardSourceEntity) *UpdateDashboardInput {
	s.SourceEntity = v
	return s
}

// SetThemeArn sets the ThemeArn field's value.
func (s *UpdateDashboardInput) SetThemeArn(v string) *UpdateDashboardInput {
	s.ThemeArn = &v
	return s
}

// SetValidationStrategy sets the ValidationStrategy field's value.
func (s *UpdateDashboardInput) SetValidationStrategy(v *ValidationStrategy) *UpdateDashboardInput {
	s.ValidationStrategy = v
	return s
}

// SetVersionDescription sets the VersionDescription field's value.
func (s *UpdateDashboardInput) SetVersionDescription(v string) *UpdateDashboardInput {
	s.VersionDescription = &v
	return s
}

type UpdateDashboardLinksInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the dashboard whose
	// links you want to update.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the dashboard.
	//
	// DashboardId is a required field
	DashboardId *string `location:"uri" locationName:"DashboardId" min:"1" type:"string" required:"true"`

	// list of analysis Amazon Resource Names (ARNs) to be linked to the dashboard.
	//
	// LinkEntities is a required field
	LinkEntities []*string `type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDashboardLinksInput) 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 UpdateDashboardLinksInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDashboardLinksInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDashboardLinksInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DashboardId == nil {
		invalidParams.Add(request.NewErrParamRequired("DashboardId"))
	}
	if s.DashboardId != nil && len(*s.DashboardId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DashboardId", 1))
	}
	if s.LinkEntities == nil {
		invalidParams.Add(request.NewErrParamRequired("LinkEntities"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateDashboardLinksInput) SetAwsAccountId(v string) *UpdateDashboardLinksInput {
	s.AwsAccountId = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *UpdateDashboardLinksInput) SetDashboardId(v string) *UpdateDashboardLinksInput {
	s.DashboardId = &v
	return s
}

// SetLinkEntities sets the LinkEntities field's value.
func (s *UpdateDashboardLinksInput) SetLinkEntities(v []*string) *UpdateDashboardLinksInput {
	s.LinkEntities = v
	return s
}

type UpdateDashboardLinksOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the dashboard.
	DashboardArn *string `type:"string"`

	// A list of analysis Amazon Resource Names (ARNs) to be linked to the dashboard.
	LinkEntities []*string `type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 UpdateDashboardLinksOutput) 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 UpdateDashboardLinksOutput) GoString() string {
	return s.String()
}

// SetDashboardArn sets the DashboardArn field's value.
func (s *UpdateDashboardLinksOutput) SetDashboardArn(v string) *UpdateDashboardLinksOutput {
	s.DashboardArn = &v
	return s
}

// SetLinkEntities sets the LinkEntities field's value.
func (s *UpdateDashboardLinksOutput) SetLinkEntities(v []*string) *UpdateDashboardLinksOutput {
	s.LinkEntities = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateDashboardLinksOutput) SetRequestId(v string) *UpdateDashboardLinksOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateDashboardLinksOutput) SetStatus(v int64) *UpdateDashboardLinksOutput {
	s.Status = &v
	return s
}

type UpdateDashboardOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	Arn *string `type:"string"`

	// The creation status of the request.
	CreationStatus *string `type:"string" enum:"ResourceStatus"`

	// The ID for the dashboard.
	DashboardId *string `min:"1" type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `type:"integer"`

	// The ARN of the dashboard, including the version number.
	VersionArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDashboardOutput) 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 UpdateDashboardOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UpdateDashboardOutput) SetArn(v string) *UpdateDashboardOutput {
	s.Arn = &v
	return s
}

// SetCreationStatus sets the CreationStatus field's value.
func (s *UpdateDashboardOutput) SetCreationStatus(v string) *UpdateDashboardOutput {
	s.CreationStatus = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *UpdateDashboardOutput) SetDashboardId(v string) *UpdateDashboardOutput {
	s.DashboardId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateDashboardOutput) SetRequestId(v string) *UpdateDashboardOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateDashboardOutput) SetStatus(v int64) *UpdateDashboardOutput {
	s.Status = &v
	return s
}

// SetVersionArn sets the VersionArn field's value.
func (s *UpdateDashboardOutput) SetVersionArn(v string) *UpdateDashboardOutput {
	s.VersionArn = &v
	return s
}

type UpdateDashboardPermissionsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the dashboard whose
	// permissions you're updating.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the dashboard.
	//
	// DashboardId is a required field
	DashboardId *string `location:"uri" locationName:"DashboardId" min:"1" type:"string" required:"true"`

	// Grants link permissions to all users in a defined namespace.
	GrantLinkPermissions []*ResourcePermission `type:"list"`

	// The permissions that you want to grant on this resource.
	GrantPermissions []*ResourcePermission `type:"list"`

	// Revokes link permissions from all users in a defined namespace.
	RevokeLinkPermissions []*ResourcePermission `type:"list"`

	// The permissions that you want to revoke from this resource.
	RevokePermissions []*ResourcePermission `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 UpdateDashboardPermissionsInput) 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 UpdateDashboardPermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDashboardPermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDashboardPermissionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DashboardId == nil {
		invalidParams.Add(request.NewErrParamRequired("DashboardId"))
	}
	if s.DashboardId != nil && len(*s.DashboardId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DashboardId", 1))
	}
	if s.GrantLinkPermissions != nil {
		for i, v := range s.GrantLinkPermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GrantLinkPermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.GrantPermissions != nil {
		for i, v := range s.GrantPermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GrantPermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.RevokeLinkPermissions != nil {
		for i, v := range s.RevokeLinkPermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RevokeLinkPermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.RevokePermissions != nil {
		for i, v := range s.RevokePermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RevokePermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateDashboardPermissionsInput) SetAwsAccountId(v string) *UpdateDashboardPermissionsInput {
	s.AwsAccountId = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *UpdateDashboardPermissionsInput) SetDashboardId(v string) *UpdateDashboardPermissionsInput {
	s.DashboardId = &v
	return s
}

// SetGrantLinkPermissions sets the GrantLinkPermissions field's value.
func (s *UpdateDashboardPermissionsInput) SetGrantLinkPermissions(v []*ResourcePermission) *UpdateDashboardPermissionsInput {
	s.GrantLinkPermissions = v
	return s
}

// SetGrantPermissions sets the GrantPermissions field's value.
func (s *UpdateDashboardPermissionsInput) SetGrantPermissions(v []*ResourcePermission) *UpdateDashboardPermissionsInput {
	s.GrantPermissions = v
	return s
}

// SetRevokeLinkPermissions sets the RevokeLinkPermissions field's value.
func (s *UpdateDashboardPermissionsInput) SetRevokeLinkPermissions(v []*ResourcePermission) *UpdateDashboardPermissionsInput {
	s.RevokeLinkPermissions = v
	return s
}

// SetRevokePermissions sets the RevokePermissions field's value.
func (s *UpdateDashboardPermissionsInput) SetRevokePermissions(v []*ResourcePermission) *UpdateDashboardPermissionsInput {
	s.RevokePermissions = v
	return s
}

type UpdateDashboardPermissionsOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the dashboard.
	DashboardArn *string `type:"string"`

	// The ID for the dashboard.
	DashboardId *string `min:"1" type:"string"`

	// Updates the permissions of a shared link to an Amazon QuickSight dashboard.
	LinkSharingConfiguration *LinkSharingConfiguration `type:"structure"`

	// Information about the permissions on the dashboard.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 UpdateDashboardPermissionsOutput) 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 UpdateDashboardPermissionsOutput) GoString() string {
	return s.String()
}

// SetDashboardArn sets the DashboardArn field's value.
func (s *UpdateDashboardPermissionsOutput) SetDashboardArn(v string) *UpdateDashboardPermissionsOutput {
	s.DashboardArn = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *UpdateDashboardPermissionsOutput) SetDashboardId(v string) *UpdateDashboardPermissionsOutput {
	s.DashboardId = &v
	return s
}

// SetLinkSharingConfiguration sets the LinkSharingConfiguration field's value.
func (s *UpdateDashboardPermissionsOutput) SetLinkSharingConfiguration(v *LinkSharingConfiguration) *UpdateDashboardPermissionsOutput {
	s.LinkSharingConfiguration = v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *UpdateDashboardPermissionsOutput) SetPermissions(v []*ResourcePermission) *UpdateDashboardPermissionsOutput {
	s.Permissions = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateDashboardPermissionsOutput) SetRequestId(v string) *UpdateDashboardPermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateDashboardPermissionsOutput) SetStatus(v int64) *UpdateDashboardPermissionsOutput {
	s.Status = &v
	return s
}

type UpdateDashboardPublishedVersionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon Web Services account that contains the dashboard that
	// you're updating.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the dashboard.
	//
	// DashboardId is a required field
	DashboardId *string `location:"uri" locationName:"DashboardId" min:"1" type:"string" required:"true"`

	// The version number of the dashboard.
	//
	// VersionNumber is a required field
	VersionNumber *int64 `location:"uri" locationName:"VersionNumber" min:"1" type:"long" 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 UpdateDashboardPublishedVersionInput) 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 UpdateDashboardPublishedVersionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDashboardPublishedVersionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDashboardPublishedVersionInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DashboardId == nil {
		invalidParams.Add(request.NewErrParamRequired("DashboardId"))
	}
	if s.DashboardId != nil && len(*s.DashboardId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DashboardId", 1))
	}
	if s.VersionNumber == nil {
		invalidParams.Add(request.NewErrParamRequired("VersionNumber"))
	}
	if s.VersionNumber != nil && *s.VersionNumber < 1 {
		invalidParams.Add(request.NewErrParamMinValue("VersionNumber", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateDashboardPublishedVersionInput) SetAwsAccountId(v string) *UpdateDashboardPublishedVersionInput {
	s.AwsAccountId = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *UpdateDashboardPublishedVersionInput) SetDashboardId(v string) *UpdateDashboardPublishedVersionInput {
	s.DashboardId = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *UpdateDashboardPublishedVersionInput) SetVersionNumber(v int64) *UpdateDashboardPublishedVersionInput {
	s.VersionNumber = &v
	return s
}

type UpdateDashboardPublishedVersionOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the dashboard.
	DashboardArn *string `type:"string"`

	// The ID for the dashboard.
	DashboardId *string `min:"1" type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 UpdateDashboardPublishedVersionOutput) 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 UpdateDashboardPublishedVersionOutput) GoString() string {
	return s.String()
}

// SetDashboardArn sets the DashboardArn field's value.
func (s *UpdateDashboardPublishedVersionOutput) SetDashboardArn(v string) *UpdateDashboardPublishedVersionOutput {
	s.DashboardArn = &v
	return s
}

// SetDashboardId sets the DashboardId field's value.
func (s *UpdateDashboardPublishedVersionOutput) SetDashboardId(v string) *UpdateDashboardPublishedVersionOutput {
	s.DashboardId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateDashboardPublishedVersionOutput) SetRequestId(v string) *UpdateDashboardPublishedVersionOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateDashboardPublishedVersionOutput) SetStatus(v int64) *UpdateDashboardPublishedVersionOutput {
	s.Status = &v
	return s
}

type UpdateDataSetInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// Groupings of columns that work together in certain Amazon QuickSight features.
	// Currently, only geospatial hierarchy is supported.
	ColumnGroups []*ColumnGroup `min:"1" type:"list"`

	// A set of one or more definitions of a ColumnLevelPermissionRule (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnLevelPermissionRule.html) .
	ColumnLevelPermissionRules []*ColumnLevelPermissionRule `min:"1" type:"list"`

	// The ID for the dataset that you want to update. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" type:"string" required:"true"`

	// The usage configuration to apply to child datasets that reference this dataset
	// as a source.
	DataSetUsageConfiguration *DataSetUsageConfiguration `type:"structure"`

	// The parameter declarations of the dataset.
	DatasetParameters []*DatasetParameter `min:"1" type:"list"`

	// The folder that contains fields and nested subfolders for your dataset.
	FieldFolders map[string]*FieldFolder `type:"map"`

	// Indicates whether you want to import the data into SPICE.
	//
	// ImportMode is a required field
	ImportMode *string `type:"string" required:"true" enum:"DataSetImportMode"`

	// Configures the combination and transformation of the data from the physical
	// tables.
	LogicalTableMap map[string]*LogicalTable `min:"1" type:"map"`

	// The display name for the dataset.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// Declares the physical tables that are available in the underlying data sources.
	//
	// PhysicalTableMap is a required field
	PhysicalTableMap map[string]*PhysicalTable `type:"map" required:"true"`

	// The row-level security configuration for the data you want to create.
	RowLevelPermissionDataSet *RowLevelPermissionDataSet `type:"structure"`

	// The configuration of tags on a dataset to set row-level security. Row-level
	// security tags are currently supported for anonymous embedding only.
	RowLevelPermissionTagConfiguration *RowLevelPermissionTagConfiguration `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 UpdateDataSetInput) 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 UpdateDataSetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDataSetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDataSetInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.ColumnGroups != nil && len(s.ColumnGroups) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ColumnGroups", 1))
	}
	if s.ColumnLevelPermissionRules != nil && len(s.ColumnLevelPermissionRules) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ColumnLevelPermissionRules", 1))
	}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}
	if s.DatasetParameters != nil && len(s.DatasetParameters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatasetParameters", 1))
	}
	if s.ImportMode == nil {
		invalidParams.Add(request.NewErrParamRequired("ImportMode"))
	}
	if s.LogicalTableMap != nil && len(s.LogicalTableMap) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("LogicalTableMap", 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 s.PhysicalTableMap == nil {
		invalidParams.Add(request.NewErrParamRequired("PhysicalTableMap"))
	}
	if s.ColumnGroups != nil {
		for i, v := range s.ColumnGroups {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnGroups", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ColumnLevelPermissionRules != nil {
		for i, v := range s.ColumnLevelPermissionRules {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnLevelPermissionRules", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.DatasetParameters != nil {
		for i, v := range s.DatasetParameters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DatasetParameters", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.LogicalTableMap != nil {
		for i, v := range s.LogicalTableMap {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LogicalTableMap", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.PhysicalTableMap != nil {
		for i, v := range s.PhysicalTableMap {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PhysicalTableMap", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.RowLevelPermissionDataSet != nil {
		if err := s.RowLevelPermissionDataSet.Validate(); err != nil {
			invalidParams.AddNested("RowLevelPermissionDataSet", err.(request.ErrInvalidParams))
		}
	}
	if s.RowLevelPermissionTagConfiguration != nil {
		if err := s.RowLevelPermissionTagConfiguration.Validate(); err != nil {
			invalidParams.AddNested("RowLevelPermissionTagConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateDataSetInput) SetAwsAccountId(v string) *UpdateDataSetInput {
	s.AwsAccountId = &v
	return s
}

// SetColumnGroups sets the ColumnGroups field's value.
func (s *UpdateDataSetInput) SetColumnGroups(v []*ColumnGroup) *UpdateDataSetInput {
	s.ColumnGroups = v
	return s
}

// SetColumnLevelPermissionRules sets the ColumnLevelPermissionRules field's value.
func (s *UpdateDataSetInput) SetColumnLevelPermissionRules(v []*ColumnLevelPermissionRule) *UpdateDataSetInput {
	s.ColumnLevelPermissionRules = v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *UpdateDataSetInput) SetDataSetId(v string) *UpdateDataSetInput {
	s.DataSetId = &v
	return s
}

// SetDataSetUsageConfiguration sets the DataSetUsageConfiguration field's value.
func (s *UpdateDataSetInput) SetDataSetUsageConfiguration(v *DataSetUsageConfiguration) *UpdateDataSetInput {
	s.DataSetUsageConfiguration = v
	return s
}

// SetDatasetParameters sets the DatasetParameters field's value.
func (s *UpdateDataSetInput) SetDatasetParameters(v []*DatasetParameter) *UpdateDataSetInput {
	s.DatasetParameters = v
	return s
}

// SetFieldFolders sets the FieldFolders field's value.
func (s *UpdateDataSetInput) SetFieldFolders(v map[string]*FieldFolder) *UpdateDataSetInput {
	s.FieldFolders = v
	return s
}

// SetImportMode sets the ImportMode field's value.
func (s *UpdateDataSetInput) SetImportMode(v string) *UpdateDataSetInput {
	s.ImportMode = &v
	return s
}

// SetLogicalTableMap sets the LogicalTableMap field's value.
func (s *UpdateDataSetInput) SetLogicalTableMap(v map[string]*LogicalTable) *UpdateDataSetInput {
	s.LogicalTableMap = v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateDataSetInput) SetName(v string) *UpdateDataSetInput {
	s.Name = &v
	return s
}

// SetPhysicalTableMap sets the PhysicalTableMap field's value.
func (s *UpdateDataSetInput) SetPhysicalTableMap(v map[string]*PhysicalTable) *UpdateDataSetInput {
	s.PhysicalTableMap = v
	return s
}

// SetRowLevelPermissionDataSet sets the RowLevelPermissionDataSet field's value.
func (s *UpdateDataSetInput) SetRowLevelPermissionDataSet(v *RowLevelPermissionDataSet) *UpdateDataSetInput {
	s.RowLevelPermissionDataSet = v
	return s
}

// SetRowLevelPermissionTagConfiguration sets the RowLevelPermissionTagConfiguration field's value.
func (s *UpdateDataSetInput) SetRowLevelPermissionTagConfiguration(v *RowLevelPermissionTagConfiguration) *UpdateDataSetInput {
	s.RowLevelPermissionTagConfiguration = v
	return s
}

type UpdateDataSetOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the dataset.
	Arn *string `type:"string"`

	// The ID for the dataset that you want to create. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	DataSetId *string `type:"string"`

	// The ARN for the ingestion, which is triggered as a result of dataset creation
	// if the import mode is SPICE.
	IngestionArn *string `type:"string"`

	// The ID of the ingestion, which is triggered as a result of dataset creation
	// if the import mode is SPICE.
	IngestionId *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 UpdateDataSetOutput) 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 UpdateDataSetOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UpdateDataSetOutput) SetArn(v string) *UpdateDataSetOutput {
	s.Arn = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *UpdateDataSetOutput) SetDataSetId(v string) *UpdateDataSetOutput {
	s.DataSetId = &v
	return s
}

// SetIngestionArn sets the IngestionArn field's value.
func (s *UpdateDataSetOutput) SetIngestionArn(v string) *UpdateDataSetOutput {
	s.IngestionArn = &v
	return s
}

// SetIngestionId sets the IngestionId field's value.
func (s *UpdateDataSetOutput) SetIngestionId(v string) *UpdateDataSetOutput {
	s.IngestionId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateDataSetOutput) SetRequestId(v string) *UpdateDataSetOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateDataSetOutput) SetStatus(v int64) *UpdateDataSetOutput {
	s.Status = &v
	return s
}

type UpdateDataSetPermissionsInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the dataset whose permissions you want to update. This ID is unique
	// per Amazon Web Services Region for each Amazon Web Services account.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" type:"string" required:"true"`

	// The resource permissions that you want to grant to the dataset.
	GrantPermissions []*ResourcePermission `min:"1" type:"list"`

	// The resource permissions that you want to revoke from the dataset.
	RevokePermissions []*ResourcePermission `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDataSetPermissionsInput) 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 UpdateDataSetPermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDataSetPermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDataSetPermissionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}
	if s.GrantPermissions != nil && len(s.GrantPermissions) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GrantPermissions", 1))
	}
	if s.RevokePermissions != nil && len(s.RevokePermissions) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RevokePermissions", 1))
	}
	if s.GrantPermissions != nil {
		for i, v := range s.GrantPermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GrantPermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.RevokePermissions != nil {
		for i, v := range s.RevokePermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RevokePermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateDataSetPermissionsInput) SetAwsAccountId(v string) *UpdateDataSetPermissionsInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *UpdateDataSetPermissionsInput) SetDataSetId(v string) *UpdateDataSetPermissionsInput {
	s.DataSetId = &v
	return s
}

// SetGrantPermissions sets the GrantPermissions field's value.
func (s *UpdateDataSetPermissionsInput) SetGrantPermissions(v []*ResourcePermission) *UpdateDataSetPermissionsInput {
	s.GrantPermissions = v
	return s
}

// SetRevokePermissions sets the RevokePermissions field's value.
func (s *UpdateDataSetPermissionsInput) SetRevokePermissions(v []*ResourcePermission) *UpdateDataSetPermissionsInput {
	s.RevokePermissions = v
	return s
}

type UpdateDataSetPermissionsOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the dataset.
	DataSetArn *string `type:"string"`

	// The ID for the dataset whose permissions you want to update. This ID is unique
	// per Amazon Web Services Region for each Amazon Web Services account.
	DataSetId *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 UpdateDataSetPermissionsOutput) 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 UpdateDataSetPermissionsOutput) GoString() string {
	return s.String()
}

// SetDataSetArn sets the DataSetArn field's value.
func (s *UpdateDataSetPermissionsOutput) SetDataSetArn(v string) *UpdateDataSetPermissionsOutput {
	s.DataSetArn = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *UpdateDataSetPermissionsOutput) SetDataSetId(v string) *UpdateDataSetPermissionsOutput {
	s.DataSetId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateDataSetPermissionsOutput) SetRequestId(v string) *UpdateDataSetPermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateDataSetPermissionsOutput) SetStatus(v int64) *UpdateDataSetPermissionsOutput {
	s.Status = &v
	return s
}

type UpdateDataSourceInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The credentials that Amazon QuickSight that uses to connect to your underlying
	// source. Currently, only credentials based on user name and password are supported.
	//
	// Credentials is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateDataSourceInput's
	// String and GoString methods.
	Credentials *DataSourceCredentials `type:"structure" sensitive:"true"`

	// The ID of the data source. This ID is unique per Amazon Web Services Region
	// for each Amazon Web Services account.
	//
	// DataSourceId is a required field
	DataSourceId *string `location:"uri" locationName:"DataSourceId" type:"string" required:"true"`

	// The parameters that Amazon QuickSight uses to connect to your underlying
	// source.
	DataSourceParameters *DataSourceParameters `type:"structure"`

	// A display name for the data source.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// Secure Socket Layer (SSL) properties that apply when Amazon QuickSight connects
	// to your underlying source.
	SslProperties *SslProperties `type:"structure"`

	// Use this parameter only when you want Amazon QuickSight to use a VPC connection
	// when connecting to your underlying source.
	VpcConnectionProperties *VpcConnectionProperties `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 UpdateDataSourceInput) 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 UpdateDataSourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDataSourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDataSourceInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSourceId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSourceId"))
	}
	if s.DataSourceId != nil && len(*s.DataSourceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSourceId", 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 s.Credentials != nil {
		if err := s.Credentials.Validate(); err != nil {
			invalidParams.AddNested("Credentials", err.(request.ErrInvalidParams))
		}
	}
	if s.DataSourceParameters != nil {
		if err := s.DataSourceParameters.Validate(); err != nil {
			invalidParams.AddNested("DataSourceParameters", err.(request.ErrInvalidParams))
		}
	}
	if s.VpcConnectionProperties != nil {
		if err := s.VpcConnectionProperties.Validate(); err != nil {
			invalidParams.AddNested("VpcConnectionProperties", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateDataSourceInput) SetAwsAccountId(v string) *UpdateDataSourceInput {
	s.AwsAccountId = &v
	return s
}

// SetCredentials sets the Credentials field's value.
func (s *UpdateDataSourceInput) SetCredentials(v *DataSourceCredentials) *UpdateDataSourceInput {
	s.Credentials = v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *UpdateDataSourceInput) SetDataSourceId(v string) *UpdateDataSourceInput {
	s.DataSourceId = &v
	return s
}

// SetDataSourceParameters sets the DataSourceParameters field's value.
func (s *UpdateDataSourceInput) SetDataSourceParameters(v *DataSourceParameters) *UpdateDataSourceInput {
	s.DataSourceParameters = v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateDataSourceInput) SetName(v string) *UpdateDataSourceInput {
	s.Name = &v
	return s
}

// SetSslProperties sets the SslProperties field's value.
func (s *UpdateDataSourceInput) SetSslProperties(v *SslProperties) *UpdateDataSourceInput {
	s.SslProperties = v
	return s
}

// SetVpcConnectionProperties sets the VpcConnectionProperties field's value.
func (s *UpdateDataSourceInput) SetVpcConnectionProperties(v *VpcConnectionProperties) *UpdateDataSourceInput {
	s.VpcConnectionProperties = v
	return s
}

type UpdateDataSourceOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the data source.
	Arn *string `type:"string"`

	// The ID of the data source. This ID is unique per Amazon Web Services Region
	// for each Amazon Web Services account.
	DataSourceId *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The update status of the data source's last update.
	UpdateStatus *string `type:"string" enum:"ResourceStatus"`
}

// 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 UpdateDataSourceOutput) 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 UpdateDataSourceOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UpdateDataSourceOutput) SetArn(v string) *UpdateDataSourceOutput {
	s.Arn = &v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *UpdateDataSourceOutput) SetDataSourceId(v string) *UpdateDataSourceOutput {
	s.DataSourceId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateDataSourceOutput) SetRequestId(v string) *UpdateDataSourceOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateDataSourceOutput) SetStatus(v int64) *UpdateDataSourceOutput {
	s.Status = &v
	return s
}

// SetUpdateStatus sets the UpdateStatus field's value.
func (s *UpdateDataSourceOutput) SetUpdateStatus(v string) *UpdateDataSourceOutput {
	s.UpdateStatus = &v
	return s
}

type UpdateDataSourcePermissionsInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the data source. This ID is unique per Amazon Web Services Region
	// for each Amazon Web Services account.
	//
	// DataSourceId is a required field
	DataSourceId *string `location:"uri" locationName:"DataSourceId" type:"string" required:"true"`

	// A list of resource permissions that you want to grant on the data source.
	GrantPermissions []*ResourcePermission `min:"1" type:"list"`

	// A list of resource permissions that you want to revoke on the data source.
	RevokePermissions []*ResourcePermission `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDataSourcePermissionsInput) 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 UpdateDataSourcePermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDataSourcePermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDataSourcePermissionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSourceId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSourceId"))
	}
	if s.DataSourceId != nil && len(*s.DataSourceId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSourceId", 1))
	}
	if s.GrantPermissions != nil && len(s.GrantPermissions) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GrantPermissions", 1))
	}
	if s.RevokePermissions != nil && len(s.RevokePermissions) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RevokePermissions", 1))
	}
	if s.GrantPermissions != nil {
		for i, v := range s.GrantPermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GrantPermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.RevokePermissions != nil {
		for i, v := range s.RevokePermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RevokePermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateDataSourcePermissionsInput) SetAwsAccountId(v string) *UpdateDataSourcePermissionsInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *UpdateDataSourcePermissionsInput) SetDataSourceId(v string) *UpdateDataSourcePermissionsInput {
	s.DataSourceId = &v
	return s
}

// SetGrantPermissions sets the GrantPermissions field's value.
func (s *UpdateDataSourcePermissionsInput) SetGrantPermissions(v []*ResourcePermission) *UpdateDataSourcePermissionsInput {
	s.GrantPermissions = v
	return s
}

// SetRevokePermissions sets the RevokePermissions field's value.
func (s *UpdateDataSourcePermissionsInput) SetRevokePermissions(v []*ResourcePermission) *UpdateDataSourcePermissionsInput {
	s.RevokePermissions = v
	return s
}

type UpdateDataSourcePermissionsOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the data source.
	DataSourceArn *string `type:"string"`

	// The ID of the data source. This ID is unique per Amazon Web Services Region
	// for each Amazon Web Services account.
	DataSourceId *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 UpdateDataSourcePermissionsOutput) 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 UpdateDataSourcePermissionsOutput) GoString() string {
	return s.String()
}

// SetDataSourceArn sets the DataSourceArn field's value.
func (s *UpdateDataSourcePermissionsOutput) SetDataSourceArn(v string) *UpdateDataSourcePermissionsOutput {
	s.DataSourceArn = &v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *UpdateDataSourcePermissionsOutput) SetDataSourceId(v string) *UpdateDataSourcePermissionsOutput {
	s.DataSourceId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateDataSourcePermissionsOutput) SetRequestId(v string) *UpdateDataSourcePermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateDataSourcePermissionsOutput) SetStatus(v int64) *UpdateDataSourcePermissionsOutput {
	s.Status = &v
	return s
}

type UpdateFolderInput struct {
	_ struct{} `type:"structure"`

	// The ID for the Amazon Web Services account that contains the folder to update.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the folder.
	//
	// FolderId is a required field
	FolderId *string `location:"uri" locationName:"FolderId" min:"1" type:"string" required:"true"`

	// The name of the folder.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateFolderInput) 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 UpdateFolderInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateFolderInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateFolderInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.FolderId == nil {
		invalidParams.Add(request.NewErrParamRequired("FolderId"))
	}
	if s.FolderId != nil && len(*s.FolderId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FolderId", 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
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateFolderInput) SetAwsAccountId(v string) *UpdateFolderInput {
	s.AwsAccountId = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *UpdateFolderInput) SetFolderId(v string) *UpdateFolderInput {
	s.FolderId = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateFolderInput) SetName(v string) *UpdateFolderInput {
	s.Name = &v
	return s
}

type UpdateFolderOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the folder.
	Arn *string `type:"string"`

	// The ID of the folder.
	FolderId *string `min:"1" type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 UpdateFolderOutput) 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 UpdateFolderOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UpdateFolderOutput) SetArn(v string) *UpdateFolderOutput {
	s.Arn = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *UpdateFolderOutput) SetFolderId(v string) *UpdateFolderOutput {
	s.FolderId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateFolderOutput) SetRequestId(v string) *UpdateFolderOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateFolderOutput) SetStatus(v int64) *UpdateFolderOutput {
	s.Status = &v
	return s
}

type UpdateFolderPermissionsInput struct {
	_ struct{} `type:"structure"`

	// The ID for the Amazon Web Services account that contains the folder to update.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the folder.
	//
	// FolderId is a required field
	FolderId *string `location:"uri" locationName:"FolderId" min:"1" type:"string" required:"true"`

	// The permissions that you want to grant on a resource. Namespace ARNs are
	// not supported Principal values for folder permissions.
	GrantPermissions []*ResourcePermission `min:"1" type:"list"`

	// The permissions that you want to revoke from a resource. Namespace ARNs are
	// not supported Principal values for folder permissions.
	RevokePermissions []*ResourcePermission `min:"1" type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateFolderPermissionsInput) 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 UpdateFolderPermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateFolderPermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateFolderPermissionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.FolderId == nil {
		invalidParams.Add(request.NewErrParamRequired("FolderId"))
	}
	if s.FolderId != nil && len(*s.FolderId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FolderId", 1))
	}
	if s.GrantPermissions != nil && len(s.GrantPermissions) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GrantPermissions", 1))
	}
	if s.RevokePermissions != nil && len(s.RevokePermissions) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RevokePermissions", 1))
	}
	if s.GrantPermissions != nil {
		for i, v := range s.GrantPermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GrantPermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.RevokePermissions != nil {
		for i, v := range s.RevokePermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RevokePermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateFolderPermissionsInput) SetAwsAccountId(v string) *UpdateFolderPermissionsInput {
	s.AwsAccountId = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *UpdateFolderPermissionsInput) SetFolderId(v string) *UpdateFolderPermissionsInput {
	s.FolderId = &v
	return s
}

// SetGrantPermissions sets the GrantPermissions field's value.
func (s *UpdateFolderPermissionsInput) SetGrantPermissions(v []*ResourcePermission) *UpdateFolderPermissionsInput {
	s.GrantPermissions = v
	return s
}

// SetRevokePermissions sets the RevokePermissions field's value.
func (s *UpdateFolderPermissionsInput) SetRevokePermissions(v []*ResourcePermission) *UpdateFolderPermissionsInput {
	s.RevokePermissions = v
	return s
}

type UpdateFolderPermissionsOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the folder.
	Arn *string `type:"string"`

	// The ID of the folder.
	FolderId *string `min:"1" type:"string"`

	// Information about the permissions for the folder.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `type:"integer"`
}

// 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 UpdateFolderPermissionsOutput) 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 UpdateFolderPermissionsOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UpdateFolderPermissionsOutput) SetArn(v string) *UpdateFolderPermissionsOutput {
	s.Arn = &v
	return s
}

// SetFolderId sets the FolderId field's value.
func (s *UpdateFolderPermissionsOutput) SetFolderId(v string) *UpdateFolderPermissionsOutput {
	s.FolderId = &v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *UpdateFolderPermissionsOutput) SetPermissions(v []*ResourcePermission) *UpdateFolderPermissionsOutput {
	s.Permissions = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateFolderPermissionsOutput) SetRequestId(v string) *UpdateFolderPermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateFolderPermissionsOutput) SetStatus(v int64) *UpdateFolderPermissionsOutput {
	s.Status = &v
	return s
}

type UpdateGroupInput struct {
	_ struct{} `type:"structure"`

	// The ID for the Amazon Web Services account that the group is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The description for the group that you want to update.
	Description *string `min:"1" type:"string"`

	// The name of the group that you want to update.
	//
	// GroupName is a required field
	GroupName *string `location:"uri" locationName:"GroupName" min:"1" type:"string" required:"true"`

	// The namespace of the group that you want to update.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" 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 UpdateGroupInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGroupInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateGroupInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateGroupInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 1))
	}
	if s.GroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("GroupName"))
	}
	if s.GroupName != nil && len(*s.GroupName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GroupName", 1))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateGroupInput) SetAwsAccountId(v string) *UpdateGroupInput {
	s.AwsAccountId = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateGroupInput) SetDescription(v string) *UpdateGroupInput {
	s.Description = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *UpdateGroupInput) SetGroupName(v string) *UpdateGroupInput {
	s.GroupName = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *UpdateGroupInput) SetNamespace(v string) *UpdateGroupInput {
	s.Namespace = &v
	return s
}

type UpdateGroupOutput struct {
	_ struct{} `type:"structure"`

	// The name of the group.
	Group *Group `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGroupOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGroupOutput) GoString() string {
	return s.String()
}

// SetGroup sets the Group field's value.
func (s *UpdateGroupOutput) SetGroup(v *Group) *UpdateGroupOutput {
	s.Group = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateGroupOutput) SetRequestId(v string) *UpdateGroupOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateGroupOutput) SetStatus(v int64) *UpdateGroupOutput {
	s.Status = &v
	return s
}

type UpdateIAMPolicyAssignmentInput struct {
	_ struct{} `type:"structure"`

	// The name of the assignment, also called a rule. The name must be unique within
	// the Amazon Web Services account.
	//
	// AssignmentName is a required field
	AssignmentName *string `location:"uri" locationName:"AssignmentName" min:"1" type:"string" required:"true"`

	// The status of the assignment. Possible values are as follows:
	//
	//    * ENABLED - Anything specified in this assignment is used when creating
	//    the data source.
	//
	//    * DISABLED - This assignment isn't used when creating the data source.
	//
	//    * DRAFT - This assignment is an unfinished draft and isn't used when creating
	//    the data source.
	AssignmentStatus *string `type:"string" enum:"AssignmentStatus"`

	// The ID of the Amazon Web Services account that contains the IAM policy assignment.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The Amazon QuickSight users, groups, or both that you want to assign the
	// policy to.
	Identities map[string][]*string `type:"map"`

	// The namespace of the assignment.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// The ARN for the IAM policy to apply to the Amazon QuickSight users and groups
	// specified in this assignment.
	PolicyArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateIAMPolicyAssignmentInput) 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 UpdateIAMPolicyAssignmentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateIAMPolicyAssignmentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateIAMPolicyAssignmentInput"}
	if s.AssignmentName == nil {
		invalidParams.Add(request.NewErrParamRequired("AssignmentName"))
	}
	if s.AssignmentName != nil && len(*s.AssignmentName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssignmentName", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssignmentName sets the AssignmentName field's value.
func (s *UpdateIAMPolicyAssignmentInput) SetAssignmentName(v string) *UpdateIAMPolicyAssignmentInput {
	s.AssignmentName = &v
	return s
}

// SetAssignmentStatus sets the AssignmentStatus field's value.
func (s *UpdateIAMPolicyAssignmentInput) SetAssignmentStatus(v string) *UpdateIAMPolicyAssignmentInput {
	s.AssignmentStatus = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateIAMPolicyAssignmentInput) SetAwsAccountId(v string) *UpdateIAMPolicyAssignmentInput {
	s.AwsAccountId = &v
	return s
}

// SetIdentities sets the Identities field's value.
func (s *UpdateIAMPolicyAssignmentInput) SetIdentities(v map[string][]*string) *UpdateIAMPolicyAssignmentInput {
	s.Identities = v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *UpdateIAMPolicyAssignmentInput) SetNamespace(v string) *UpdateIAMPolicyAssignmentInput {
	s.Namespace = &v
	return s
}

// SetPolicyArn sets the PolicyArn field's value.
func (s *UpdateIAMPolicyAssignmentInput) SetPolicyArn(v string) *UpdateIAMPolicyAssignmentInput {
	s.PolicyArn = &v
	return s
}

type UpdateIAMPolicyAssignmentOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the assignment.
	AssignmentId *string `type:"string"`

	// The name of the assignment or rule.
	AssignmentName *string `min:"1" type:"string"`

	// The status of the assignment. Possible values are as follows:
	//
	//    * ENABLED - Anything specified in this assignment is used when creating
	//    the data source.
	//
	//    * DISABLED - This assignment isn't used when creating the data source.
	//
	//    * DRAFT - This assignment is an unfinished draft and isn't used when creating
	//    the data source.
	AssignmentStatus *string `type:"string" enum:"AssignmentStatus"`

	// The Amazon QuickSight users, groups, or both that the IAM policy is assigned
	// to.
	Identities map[string][]*string `type:"map"`

	// The ARN for the IAM policy applied to the Amazon QuickSight users and groups
	// specified in this assignment.
	PolicyArn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 UpdateIAMPolicyAssignmentOutput) 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 UpdateIAMPolicyAssignmentOutput) GoString() string {
	return s.String()
}

// SetAssignmentId sets the AssignmentId field's value.
func (s *UpdateIAMPolicyAssignmentOutput) SetAssignmentId(v string) *UpdateIAMPolicyAssignmentOutput {
	s.AssignmentId = &v
	return s
}

// SetAssignmentName sets the AssignmentName field's value.
func (s *UpdateIAMPolicyAssignmentOutput) SetAssignmentName(v string) *UpdateIAMPolicyAssignmentOutput {
	s.AssignmentName = &v
	return s
}

// SetAssignmentStatus sets the AssignmentStatus field's value.
func (s *UpdateIAMPolicyAssignmentOutput) SetAssignmentStatus(v string) *UpdateIAMPolicyAssignmentOutput {
	s.AssignmentStatus = &v
	return s
}

// SetIdentities sets the Identities field's value.
func (s *UpdateIAMPolicyAssignmentOutput) SetIdentities(v map[string][]*string) *UpdateIAMPolicyAssignmentOutput {
	s.Identities = v
	return s
}

// SetPolicyArn sets the PolicyArn field's value.
func (s *UpdateIAMPolicyAssignmentOutput) SetPolicyArn(v string) *UpdateIAMPolicyAssignmentOutput {
	s.PolicyArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateIAMPolicyAssignmentOutput) SetRequestId(v string) *UpdateIAMPolicyAssignmentOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateIAMPolicyAssignmentOutput) SetStatus(v int64) *UpdateIAMPolicyAssignmentOutput {
	s.Status = &v
	return s
}

type UpdateIdentityPropagationConfigInput struct {
	_ struct{} `type:"structure"`

	// Specifies a list of application ARNs that represent the authorized targets
	// for a service.
	AuthorizedTargets []*string `type:"list"`

	// The ID of the Amazon Web Services account that contains the identity propagation
	// configuration that you want to update.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The name of the Amazon Web Services service that contains the authorized
	// targets that you want to add or update.
	//
	// Service is a required field
	Service *string `location:"uri" locationName:"Service" type:"string" required:"true" enum:"ServiceType"`
}

// 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 UpdateIdentityPropagationConfigInput) 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 UpdateIdentityPropagationConfigInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateIdentityPropagationConfigInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateIdentityPropagationConfigInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Service == nil {
		invalidParams.Add(request.NewErrParamRequired("Service"))
	}
	if s.Service != nil && len(*s.Service) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Service", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAuthorizedTargets sets the AuthorizedTargets field's value.
func (s *UpdateIdentityPropagationConfigInput) SetAuthorizedTargets(v []*string) *UpdateIdentityPropagationConfigInput {
	s.AuthorizedTargets = v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateIdentityPropagationConfigInput) SetAwsAccountId(v string) *UpdateIdentityPropagationConfigInput {
	s.AwsAccountId = &v
	return s
}

// SetService sets the Service field's value.
func (s *UpdateIdentityPropagationConfigInput) SetService(v string) *UpdateIdentityPropagationConfigInput {
	s.Service = &v
	return s
}

type UpdateIdentityPropagationConfigOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 UpdateIdentityPropagationConfigOutput) 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 UpdateIdentityPropagationConfigOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateIdentityPropagationConfigOutput) SetRequestId(v string) *UpdateIdentityPropagationConfigOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateIdentityPropagationConfigOutput) SetStatus(v int64) *UpdateIdentityPropagationConfigOutput {
	s.Status = &v
	return s
}

type UpdateIpRestrictionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the IP rules.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// A value that specifies whether IP rules are turned on.
	Enabled *bool `type:"boolean"`

	// A map that describes the updated IP rules with CIDR ranges and descriptions.
	IpRestrictionRuleMap map[string]*string `type:"map"`

	// A map of allowed VPC endpoint IDs and their corresponding rule descriptions.
	VpcEndpointIdRestrictionRuleMap map[string]*string `type:"map"`

	// A map of VPC IDs and their corresponding rules. When you configure this parameter,
	// traffic from all VPC endpoints that are present in the specified VPC is allowed.
	VpcIdRestrictionRuleMap map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateIpRestrictionInput) 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 UpdateIpRestrictionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateIpRestrictionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateIpRestrictionInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateIpRestrictionInput) SetAwsAccountId(v string) *UpdateIpRestrictionInput {
	s.AwsAccountId = &v
	return s
}

// SetEnabled sets the Enabled field's value.
func (s *UpdateIpRestrictionInput) SetEnabled(v bool) *UpdateIpRestrictionInput {
	s.Enabled = &v
	return s
}

// SetIpRestrictionRuleMap sets the IpRestrictionRuleMap field's value.
func (s *UpdateIpRestrictionInput) SetIpRestrictionRuleMap(v map[string]*string) *UpdateIpRestrictionInput {
	s.IpRestrictionRuleMap = v
	return s
}

// SetVpcEndpointIdRestrictionRuleMap sets the VpcEndpointIdRestrictionRuleMap field's value.
func (s *UpdateIpRestrictionInput) SetVpcEndpointIdRestrictionRuleMap(v map[string]*string) *UpdateIpRestrictionInput {
	s.VpcEndpointIdRestrictionRuleMap = v
	return s
}

// SetVpcIdRestrictionRuleMap sets the VpcIdRestrictionRuleMap field's value.
func (s *UpdateIpRestrictionInput) SetVpcIdRestrictionRuleMap(v map[string]*string) *UpdateIpRestrictionInput {
	s.VpcIdRestrictionRuleMap = v
	return s
}

type UpdateIpRestrictionOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the IP rules.
	AwsAccountId *string `min:"12" type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 UpdateIpRestrictionOutput) 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 UpdateIpRestrictionOutput) GoString() string {
	return s.String()
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateIpRestrictionOutput) SetAwsAccountId(v string) *UpdateIpRestrictionOutput {
	s.AwsAccountId = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateIpRestrictionOutput) SetRequestId(v string) *UpdateIpRestrictionOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateIpRestrictionOutput) SetStatus(v int64) *UpdateIpRestrictionOutput {
	s.Status = &v
	return s
}

type UpdateKeyRegistrationInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the customer managed
	// key registration that you want to update.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// A list of RegisteredCustomerManagedKey objects to be updated to the Amazon
	// QuickSight account.
	//
	// KeyRegistration is a required field
	KeyRegistration []*RegisteredCustomerManagedKey `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 UpdateKeyRegistrationInput) 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 UpdateKeyRegistrationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateKeyRegistrationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateKeyRegistrationInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.KeyRegistration == nil {
		invalidParams.Add(request.NewErrParamRequired("KeyRegistration"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateKeyRegistrationInput) SetAwsAccountId(v string) *UpdateKeyRegistrationInput {
	s.AwsAccountId = &v
	return s
}

// SetKeyRegistration sets the KeyRegistration field's value.
func (s *UpdateKeyRegistrationInput) SetKeyRegistration(v []*RegisteredCustomerManagedKey) *UpdateKeyRegistrationInput {
	s.KeyRegistration = v
	return s
}

type UpdateKeyRegistrationOutput struct {
	_ struct{} `type:"structure"`

	// A list of all customer managed key registrations that failed to update.
	FailedKeyRegistration []*FailedKeyRegistrationEntry `type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// A list of all customer managed key registrations that were successfully updated.
	SuccessfulKeyRegistration []*SuccessfulKeyRegistrationEntry `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 UpdateKeyRegistrationOutput) 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 UpdateKeyRegistrationOutput) GoString() string {
	return s.String()
}

// SetFailedKeyRegistration sets the FailedKeyRegistration field's value.
func (s *UpdateKeyRegistrationOutput) SetFailedKeyRegistration(v []*FailedKeyRegistrationEntry) *UpdateKeyRegistrationOutput {
	s.FailedKeyRegistration = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateKeyRegistrationOutput) SetRequestId(v string) *UpdateKeyRegistrationOutput {
	s.RequestId = &v
	return s
}

// SetSuccessfulKeyRegistration sets the SuccessfulKeyRegistration field's value.
func (s *UpdateKeyRegistrationOutput) SetSuccessfulKeyRegistration(v []*SuccessfulKeyRegistrationEntry) *UpdateKeyRegistrationOutput {
	s.SuccessfulKeyRegistration = v
	return s
}

type UpdatePublicSharingSettingsInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID associated with your Amazon QuickSight
	// subscription.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// A Boolean value that indicates whether public sharing is turned on for an
	// Amazon QuickSight account.
	PublicSharingEnabled *bool `type:"boolean"`
}

// 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 UpdatePublicSharingSettingsInput) 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 UpdatePublicSharingSettingsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdatePublicSharingSettingsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdatePublicSharingSettingsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdatePublicSharingSettingsInput) SetAwsAccountId(v string) *UpdatePublicSharingSettingsInput {
	s.AwsAccountId = &v
	return s
}

// SetPublicSharingEnabled sets the PublicSharingEnabled field's value.
func (s *UpdatePublicSharingSettingsInput) SetPublicSharingEnabled(v bool) *UpdatePublicSharingSettingsInput {
	s.PublicSharingEnabled = &v
	return s
}

type UpdatePublicSharingSettingsOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 UpdatePublicSharingSettingsOutput) 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 UpdatePublicSharingSettingsOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *UpdatePublicSharingSettingsOutput) SetRequestId(v string) *UpdatePublicSharingSettingsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdatePublicSharingSettingsOutput) SetStatus(v int64) *UpdatePublicSharingSettingsOutput {
	s.Status = &v
	return s
}

type UpdateRefreshScheduleInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dataset.
	//
	// DataSetId is a required field
	DataSetId *string `location:"uri" locationName:"DataSetId" type:"string" required:"true"`

	// The refresh schedule.
	//
	// Schedule is a required field
	Schedule *RefreshSchedule `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 UpdateRefreshScheduleInput) 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 UpdateRefreshScheduleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateRefreshScheduleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateRefreshScheduleInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DataSetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSetId"))
	}
	if s.DataSetId != nil && len(*s.DataSetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSetId", 1))
	}
	if s.Schedule == nil {
		invalidParams.Add(request.NewErrParamRequired("Schedule"))
	}
	if s.Schedule != nil {
		if err := s.Schedule.Validate(); err != nil {
			invalidParams.AddNested("Schedule", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateRefreshScheduleInput) SetAwsAccountId(v string) *UpdateRefreshScheduleInput {
	s.AwsAccountId = &v
	return s
}

// SetDataSetId sets the DataSetId field's value.
func (s *UpdateRefreshScheduleInput) SetDataSetId(v string) *UpdateRefreshScheduleInput {
	s.DataSetId = &v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *UpdateRefreshScheduleInput) SetSchedule(v *RefreshSchedule) *UpdateRefreshScheduleInput {
	s.Schedule = v
	return s
}

type UpdateRefreshScheduleOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the refresh schedule.
	Arn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The ID of the refresh schedule.
	ScheduleId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 UpdateRefreshScheduleOutput) 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 UpdateRefreshScheduleOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UpdateRefreshScheduleOutput) SetArn(v string) *UpdateRefreshScheduleOutput {
	s.Arn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateRefreshScheduleOutput) SetRequestId(v string) *UpdateRefreshScheduleOutput {
	s.RequestId = &v
	return s
}

// SetScheduleId sets the ScheduleId field's value.
func (s *UpdateRefreshScheduleOutput) SetScheduleId(v string) *UpdateRefreshScheduleOutput {
	s.ScheduleId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateRefreshScheduleOutput) SetStatus(v int64) *UpdateRefreshScheduleOutput {
	s.Status = &v
	return s
}

type UpdateRoleCustomPermissionInput struct {
	_ struct{} `type:"structure"`

	// The ID for the Amazon Web Services account that you want to create a group
	// in. The Amazon Web Services account ID that you provide must be the same
	// Amazon Web Services account that contains your Amazon QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The name of the custom permission that you want to update the role with.
	//
	// CustomPermissionsName is a required field
	CustomPermissionsName *string `min:"1" type:"string" required:"true"`

	// The namespace that contains the role that you want to update.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// The name of role tht you want to update.
	//
	// Role is a required field
	Role *string `location:"uri" locationName:"Role" type:"string" required:"true" enum:"Role"`
}

// 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 UpdateRoleCustomPermissionInput) 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 UpdateRoleCustomPermissionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateRoleCustomPermissionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateRoleCustomPermissionInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.CustomPermissionsName == nil {
		invalidParams.Add(request.NewErrParamRequired("CustomPermissionsName"))
	}
	if s.CustomPermissionsName != nil && len(*s.CustomPermissionsName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CustomPermissionsName", 1))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}
	if s.Role == nil {
		invalidParams.Add(request.NewErrParamRequired("Role"))
	}
	if s.Role != nil && len(*s.Role) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Role", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateRoleCustomPermissionInput) SetAwsAccountId(v string) *UpdateRoleCustomPermissionInput {
	s.AwsAccountId = &v
	return s
}

// SetCustomPermissionsName sets the CustomPermissionsName field's value.
func (s *UpdateRoleCustomPermissionInput) SetCustomPermissionsName(v string) *UpdateRoleCustomPermissionInput {
	s.CustomPermissionsName = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *UpdateRoleCustomPermissionInput) SetNamespace(v string) *UpdateRoleCustomPermissionInput {
	s.Namespace = &v
	return s
}

// SetRole sets the Role field's value.
func (s *UpdateRoleCustomPermissionInput) SetRole(v string) *UpdateRoleCustomPermissionInput {
	s.Role = &v
	return s
}

type UpdateRoleCustomPermissionOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `type:"integer"`
}

// 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 UpdateRoleCustomPermissionOutput) 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 UpdateRoleCustomPermissionOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateRoleCustomPermissionOutput) SetRequestId(v string) *UpdateRoleCustomPermissionOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateRoleCustomPermissionOutput) SetStatus(v int64) *UpdateRoleCustomPermissionOutput {
	s.Status = &v
	return s
}

type UpdateSPICECapacityConfigurationInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the SPICE configuration
	// that you want to update.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// Determines how SPICE capacity can be purchased. The following options are
	// available.
	//
	//    * MANUAL: SPICE capacity can only be purchased manually.
	//
	//    * AUTO_PURCHASE: Extra SPICE capacity is automatically purchased on your
	//    behalf as needed. SPICE capacity can also be purchased manually with this
	//    option.
	//
	// PurchaseMode is a required field
	PurchaseMode *string `type:"string" required:"true" enum:"PurchaseMode"`
}

// 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 UpdateSPICECapacityConfigurationInput) 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 UpdateSPICECapacityConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateSPICECapacityConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateSPICECapacityConfigurationInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.PurchaseMode == nil {
		invalidParams.Add(request.NewErrParamRequired("PurchaseMode"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateSPICECapacityConfigurationInput) SetAwsAccountId(v string) *UpdateSPICECapacityConfigurationInput {
	s.AwsAccountId = &v
	return s
}

// SetPurchaseMode sets the PurchaseMode field's value.
func (s *UpdateSPICECapacityConfigurationInput) SetPurchaseMode(v string) *UpdateSPICECapacityConfigurationInput {
	s.PurchaseMode = &v
	return s
}

type UpdateSPICECapacityConfigurationOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`
}

// 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 UpdateSPICECapacityConfigurationOutput) 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 UpdateSPICECapacityConfigurationOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateSPICECapacityConfigurationOutput) SetRequestId(v string) *UpdateSPICECapacityConfigurationOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateSPICECapacityConfigurationOutput) SetStatus(v int64) *UpdateSPICECapacityConfigurationOutput {
	s.Status = &v
	return s
}

type UpdateTemplateAliasInput struct {
	_ struct{} `type:"structure"`

	// The alias of the template that you want to update. If you name a specific
	// alias, you update the version that the alias points to. You can specify the
	// latest version of the template by providing the keyword $LATEST in the AliasName
	// parameter. The keyword $PUBLISHED doesn't apply to templates.
	//
	// AliasName is a required field
	AliasName *string `location:"uri" locationName:"AliasName" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account that contains the template alias
	// that you're updating.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the template.
	//
	// TemplateId is a required field
	TemplateId *string `location:"uri" locationName:"TemplateId" min:"1" type:"string" required:"true"`

	// The version number of the template.
	//
	// TemplateVersionNumber is a required field
	TemplateVersionNumber *int64 `min:"1" type:"long" 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 UpdateTemplateAliasInput) 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 UpdateTemplateAliasInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateTemplateAliasInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateTemplateAliasInput"}
	if s.AliasName == nil {
		invalidParams.Add(request.NewErrParamRequired("AliasName"))
	}
	if s.AliasName != nil && len(*s.AliasName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AliasName", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.TemplateId == nil {
		invalidParams.Add(request.NewErrParamRequired("TemplateId"))
	}
	if s.TemplateId != nil && len(*s.TemplateId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TemplateId", 1))
	}
	if s.TemplateVersionNumber == nil {
		invalidParams.Add(request.NewErrParamRequired("TemplateVersionNumber"))
	}
	if s.TemplateVersionNumber != nil && *s.TemplateVersionNumber < 1 {
		invalidParams.Add(request.NewErrParamMinValue("TemplateVersionNumber", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAliasName sets the AliasName field's value.
func (s *UpdateTemplateAliasInput) SetAliasName(v string) *UpdateTemplateAliasInput {
	s.AliasName = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateTemplateAliasInput) SetAwsAccountId(v string) *UpdateTemplateAliasInput {
	s.AwsAccountId = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *UpdateTemplateAliasInput) SetTemplateId(v string) *UpdateTemplateAliasInput {
	s.TemplateId = &v
	return s
}

// SetTemplateVersionNumber sets the TemplateVersionNumber field's value.
func (s *UpdateTemplateAliasInput) SetTemplateVersionNumber(v int64) *UpdateTemplateAliasInput {
	s.TemplateVersionNumber = &v
	return s
}

type UpdateTemplateAliasOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The template alias.
	TemplateAlias *TemplateAlias `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 UpdateTemplateAliasOutput) 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 UpdateTemplateAliasOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateTemplateAliasOutput) SetRequestId(v string) *UpdateTemplateAliasOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateTemplateAliasOutput) SetStatus(v int64) *UpdateTemplateAliasOutput {
	s.Status = &v
	return s
}

// SetTemplateAlias sets the TemplateAlias field's value.
func (s *UpdateTemplateAliasOutput) SetTemplateAlias(v *TemplateAlias) *UpdateTemplateAliasOutput {
	s.TemplateAlias = v
	return s
}

type UpdateTemplateInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the template that
	// you're updating.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The definition of a template.
	//
	// A definition is the data model of all features in a Dashboard, Template,
	// or Analysis.
	Definition *TemplateVersionDefinition `type:"structure"`

	// The name for the template.
	Name *string `min:"1" type:"string"`

	// The entity that you are using as a source when you update the template. In
	// SourceEntity, you specify the type of object you're using as source: SourceTemplate
	// for a template or SourceAnalysis for an analysis. Both of these require an
	// Amazon Resource Name (ARN). For SourceTemplate, specify the ARN of the source
	// template. For SourceAnalysis, specify the ARN of the source analysis. The
	// SourceTemplate ARN can contain any Amazon Web Services account and any Amazon
	// QuickSight-supported Amazon Web Services Region;.
	//
	// Use the DataSetReferences entity within SourceTemplate or SourceAnalysis
	// to list the replacement datasets for the placeholders listed in the original.
	// The schema in each dataset must match its placeholder.
	SourceEntity *TemplateSourceEntity `type:"structure"`

	// The ID for the template.
	//
	// TemplateId is a required field
	TemplateId *string `location:"uri" locationName:"TemplateId" min:"1" type:"string" required:"true"`

	// The option to relax the validation needed to update a template with definition
	// objects. This skips the validation step for specific errors.
	ValidationStrategy *ValidationStrategy `type:"structure"`

	// A description of the current template version that is being updated. Every
	// time you call UpdateTemplate, you create a new version of the template. Each
	// version of the template maintains a description of the version in the VersionDescription
	// field.
	VersionDescription *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTemplateInput) 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 UpdateTemplateInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateTemplateInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateTemplateInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.TemplateId == nil {
		invalidParams.Add(request.NewErrParamRequired("TemplateId"))
	}
	if s.TemplateId != nil && len(*s.TemplateId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TemplateId", 1))
	}
	if s.VersionDescription != nil && len(*s.VersionDescription) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VersionDescription", 1))
	}
	if s.Definition != nil {
		if err := s.Definition.Validate(); err != nil {
			invalidParams.AddNested("Definition", err.(request.ErrInvalidParams))
		}
	}
	if s.SourceEntity != nil {
		if err := s.SourceEntity.Validate(); err != nil {
			invalidParams.AddNested("SourceEntity", err.(request.ErrInvalidParams))
		}
	}
	if s.ValidationStrategy != nil {
		if err := s.ValidationStrategy.Validate(); err != nil {
			invalidParams.AddNested("ValidationStrategy", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateTemplateInput) SetAwsAccountId(v string) *UpdateTemplateInput {
	s.AwsAccountId = &v
	return s
}

// SetDefinition sets the Definition field's value.
func (s *UpdateTemplateInput) SetDefinition(v *TemplateVersionDefinition) *UpdateTemplateInput {
	s.Definition = v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateTemplateInput) SetName(v string) *UpdateTemplateInput {
	s.Name = &v
	return s
}

// SetSourceEntity sets the SourceEntity field's value.
func (s *UpdateTemplateInput) SetSourceEntity(v *TemplateSourceEntity) *UpdateTemplateInput {
	s.SourceEntity = v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *UpdateTemplateInput) SetTemplateId(v string) *UpdateTemplateInput {
	s.TemplateId = &v
	return s
}

// SetValidationStrategy sets the ValidationStrategy field's value.
func (s *UpdateTemplateInput) SetValidationStrategy(v *ValidationStrategy) *UpdateTemplateInput {
	s.ValidationStrategy = v
	return s
}

// SetVersionDescription sets the VersionDescription field's value.
func (s *UpdateTemplateInput) SetVersionDescription(v string) *UpdateTemplateInput {
	s.VersionDescription = &v
	return s
}

type UpdateTemplateOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the template.
	Arn *string `type:"string"`

	// The creation status of the template.
	CreationStatus *string `type:"string" enum:"ResourceStatus"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The ID for the template.
	TemplateId *string `min:"1" type:"string"`

	// The ARN for the template, including the version information of the first
	// version.
	VersionArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTemplateOutput) 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 UpdateTemplateOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UpdateTemplateOutput) SetArn(v string) *UpdateTemplateOutput {
	s.Arn = &v
	return s
}

// SetCreationStatus sets the CreationStatus field's value.
func (s *UpdateTemplateOutput) SetCreationStatus(v string) *UpdateTemplateOutput {
	s.CreationStatus = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateTemplateOutput) SetRequestId(v string) *UpdateTemplateOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateTemplateOutput) SetStatus(v int64) *UpdateTemplateOutput {
	s.Status = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *UpdateTemplateOutput) SetTemplateId(v string) *UpdateTemplateOutput {
	s.TemplateId = &v
	return s
}

// SetVersionArn sets the VersionArn field's value.
func (s *UpdateTemplateOutput) SetVersionArn(v string) *UpdateTemplateOutput {
	s.VersionArn = &v
	return s
}

type UpdateTemplatePermissionsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the template.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// A list of resource permissions to be granted on the template.
	GrantPermissions []*ResourcePermission `type:"list"`

	// A list of resource permissions to be revoked from the template.
	RevokePermissions []*ResourcePermission `type:"list"`

	// The ID for the template.
	//
	// TemplateId is a required field
	TemplateId *string `location:"uri" locationName:"TemplateId" 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 UpdateTemplatePermissionsInput) 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 UpdateTemplatePermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateTemplatePermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateTemplatePermissionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.TemplateId == nil {
		invalidParams.Add(request.NewErrParamRequired("TemplateId"))
	}
	if s.TemplateId != nil && len(*s.TemplateId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TemplateId", 1))
	}
	if s.GrantPermissions != nil {
		for i, v := range s.GrantPermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GrantPermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.RevokePermissions != nil {
		for i, v := range s.RevokePermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RevokePermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateTemplatePermissionsInput) SetAwsAccountId(v string) *UpdateTemplatePermissionsInput {
	s.AwsAccountId = &v
	return s
}

// SetGrantPermissions sets the GrantPermissions field's value.
func (s *UpdateTemplatePermissionsInput) SetGrantPermissions(v []*ResourcePermission) *UpdateTemplatePermissionsInput {
	s.GrantPermissions = v
	return s
}

// SetRevokePermissions sets the RevokePermissions field's value.
func (s *UpdateTemplatePermissionsInput) SetRevokePermissions(v []*ResourcePermission) *UpdateTemplatePermissionsInput {
	s.RevokePermissions = v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *UpdateTemplatePermissionsInput) SetTemplateId(v string) *UpdateTemplatePermissionsInput {
	s.TemplateId = &v
	return s
}

type UpdateTemplatePermissionsOutput struct {
	_ struct{} `type:"structure"`

	// A list of resource permissions to be set on the template.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The Amazon Resource Name (ARN) of the template.
	TemplateArn *string `type:"string"`

	// The ID for the template.
	TemplateId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTemplatePermissionsOutput) 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 UpdateTemplatePermissionsOutput) GoString() string {
	return s.String()
}

// SetPermissions sets the Permissions field's value.
func (s *UpdateTemplatePermissionsOutput) SetPermissions(v []*ResourcePermission) *UpdateTemplatePermissionsOutput {
	s.Permissions = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateTemplatePermissionsOutput) SetRequestId(v string) *UpdateTemplatePermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateTemplatePermissionsOutput) SetStatus(v int64) *UpdateTemplatePermissionsOutput {
	s.Status = &v
	return s
}

// SetTemplateArn sets the TemplateArn field's value.
func (s *UpdateTemplatePermissionsOutput) SetTemplateArn(v string) *UpdateTemplatePermissionsOutput {
	s.TemplateArn = &v
	return s
}

// SetTemplateId sets the TemplateId field's value.
func (s *UpdateTemplatePermissionsOutput) SetTemplateId(v string) *UpdateTemplatePermissionsOutput {
	s.TemplateId = &v
	return s
}

type UpdateThemeAliasInput struct {
	_ struct{} `type:"structure"`

	// The name of the theme alias that you want to update.
	//
	// AliasName is a required field
	AliasName *string `location:"uri" locationName:"AliasName" min:"1" type:"string" required:"true"`

	// The ID of the Amazon Web Services account that contains the theme alias that
	// you're updating.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID for the theme.
	//
	// ThemeId is a required field
	ThemeId *string `location:"uri" locationName:"ThemeId" min:"1" type:"string" required:"true"`

	// The version number of the theme that the alias should reference.
	//
	// ThemeVersionNumber is a required field
	ThemeVersionNumber *int64 `min:"1" type:"long" 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 UpdateThemeAliasInput) 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 UpdateThemeAliasInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateThemeAliasInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateThemeAliasInput"}
	if s.AliasName == nil {
		invalidParams.Add(request.NewErrParamRequired("AliasName"))
	}
	if s.AliasName != nil && len(*s.AliasName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AliasName", 1))
	}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.ThemeId == nil {
		invalidParams.Add(request.NewErrParamRequired("ThemeId"))
	}
	if s.ThemeId != nil && len(*s.ThemeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ThemeId", 1))
	}
	if s.ThemeVersionNumber == nil {
		invalidParams.Add(request.NewErrParamRequired("ThemeVersionNumber"))
	}
	if s.ThemeVersionNumber != nil && *s.ThemeVersionNumber < 1 {
		invalidParams.Add(request.NewErrParamMinValue("ThemeVersionNumber", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAliasName sets the AliasName field's value.
func (s *UpdateThemeAliasInput) SetAliasName(v string) *UpdateThemeAliasInput {
	s.AliasName = &v
	return s
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateThemeAliasInput) SetAwsAccountId(v string) *UpdateThemeAliasInput {
	s.AwsAccountId = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *UpdateThemeAliasInput) SetThemeId(v string) *UpdateThemeAliasInput {
	s.ThemeId = &v
	return s
}

// SetThemeVersionNumber sets the ThemeVersionNumber field's value.
func (s *UpdateThemeAliasInput) SetThemeVersionNumber(v int64) *UpdateThemeAliasInput {
	s.ThemeVersionNumber = &v
	return s
}

type UpdateThemeAliasOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// Information about the theme alias.
	ThemeAlias *ThemeAlias `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 UpdateThemeAliasOutput) 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 UpdateThemeAliasOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateThemeAliasOutput) SetRequestId(v string) *UpdateThemeAliasOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateThemeAliasOutput) SetStatus(v int64) *UpdateThemeAliasOutput {
	s.Status = &v
	return s
}

// SetThemeAlias sets the ThemeAlias field's value.
func (s *UpdateThemeAliasOutput) SetThemeAlias(v *ThemeAlias) *UpdateThemeAliasOutput {
	s.ThemeAlias = v
	return s
}

type UpdateThemeInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the theme that you're
	// updating.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The theme ID, defined by Amazon QuickSight, that a custom theme inherits
	// from. All themes initially inherit from a default Amazon QuickSight theme.
	//
	// BaseThemeId is a required field
	BaseThemeId *string `min:"1" type:"string" required:"true"`

	// The theme configuration, which contains the theme display properties.
	Configuration *ThemeConfiguration `type:"structure"`

	// The name for the theme.
	Name *string `min:"1" type:"string"`

	// The ID for the theme.
	//
	// ThemeId is a required field
	ThemeId *string `location:"uri" locationName:"ThemeId" min:"1" type:"string" required:"true"`

	// A description of the theme version that you're updating Every time that you
	// call UpdateTheme, you create a new version of the theme. Each version of
	// the theme maintains a description of the version in VersionDescription.
	VersionDescription *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateThemeInput) 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 UpdateThemeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateThemeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateThemeInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.BaseThemeId == nil {
		invalidParams.Add(request.NewErrParamRequired("BaseThemeId"))
	}
	if s.BaseThemeId != nil && len(*s.BaseThemeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("BaseThemeId", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.ThemeId == nil {
		invalidParams.Add(request.NewErrParamRequired("ThemeId"))
	}
	if s.ThemeId != nil && len(*s.ThemeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ThemeId", 1))
	}
	if s.VersionDescription != nil && len(*s.VersionDescription) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VersionDescription", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateThemeInput) SetAwsAccountId(v string) *UpdateThemeInput {
	s.AwsAccountId = &v
	return s
}

// SetBaseThemeId sets the BaseThemeId field's value.
func (s *UpdateThemeInput) SetBaseThemeId(v string) *UpdateThemeInput {
	s.BaseThemeId = &v
	return s
}

// SetConfiguration sets the Configuration field's value.
func (s *UpdateThemeInput) SetConfiguration(v *ThemeConfiguration) *UpdateThemeInput {
	s.Configuration = v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateThemeInput) SetName(v string) *UpdateThemeInput {
	s.Name = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *UpdateThemeInput) SetThemeId(v string) *UpdateThemeInput {
	s.ThemeId = &v
	return s
}

// SetVersionDescription sets the VersionDescription field's value.
func (s *UpdateThemeInput) SetVersionDescription(v string) *UpdateThemeInput {
	s.VersionDescription = &v
	return s
}

type UpdateThemeOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the theme.
	Arn *string `type:"string"`

	// The creation status of the theme.
	CreationStatus *string `type:"string" enum:"ResourceStatus"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The ID for the theme.
	ThemeId *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) for the new version of the theme.
	VersionArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateThemeOutput) 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 UpdateThemeOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UpdateThemeOutput) SetArn(v string) *UpdateThemeOutput {
	s.Arn = &v
	return s
}

// SetCreationStatus sets the CreationStatus field's value.
func (s *UpdateThemeOutput) SetCreationStatus(v string) *UpdateThemeOutput {
	s.CreationStatus = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateThemeOutput) SetRequestId(v string) *UpdateThemeOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateThemeOutput) SetStatus(v int64) *UpdateThemeOutput {
	s.Status = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *UpdateThemeOutput) SetThemeId(v string) *UpdateThemeOutput {
	s.ThemeId = &v
	return s
}

// SetVersionArn sets the VersionArn field's value.
func (s *UpdateThemeOutput) SetVersionArn(v string) *UpdateThemeOutput {
	s.VersionArn = &v
	return s
}

type UpdateThemePermissionsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the theme.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// A list of resource permissions to be granted for the theme.
	GrantPermissions []*ResourcePermission `type:"list"`

	// A list of resource permissions to be revoked from the theme.
	RevokePermissions []*ResourcePermission `type:"list"`

	// The ID for the theme.
	//
	// ThemeId is a required field
	ThemeId *string `location:"uri" locationName:"ThemeId" 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 UpdateThemePermissionsInput) 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 UpdateThemePermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateThemePermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateThemePermissionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.ThemeId == nil {
		invalidParams.Add(request.NewErrParamRequired("ThemeId"))
	}
	if s.ThemeId != nil && len(*s.ThemeId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ThemeId", 1))
	}
	if s.GrantPermissions != nil {
		for i, v := range s.GrantPermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GrantPermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.RevokePermissions != nil {
		for i, v := range s.RevokePermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RevokePermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateThemePermissionsInput) SetAwsAccountId(v string) *UpdateThemePermissionsInput {
	s.AwsAccountId = &v
	return s
}

// SetGrantPermissions sets the GrantPermissions field's value.
func (s *UpdateThemePermissionsInput) SetGrantPermissions(v []*ResourcePermission) *UpdateThemePermissionsInput {
	s.GrantPermissions = v
	return s
}

// SetRevokePermissions sets the RevokePermissions field's value.
func (s *UpdateThemePermissionsInput) SetRevokePermissions(v []*ResourcePermission) *UpdateThemePermissionsInput {
	s.RevokePermissions = v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *UpdateThemePermissionsInput) SetThemeId(v string) *UpdateThemePermissionsInput {
	s.ThemeId = &v
	return s
}

type UpdateThemePermissionsOutput struct {
	_ struct{} `type:"structure"`

	// The resulting list of resource permissions for the theme.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The Amazon Resource Name (ARN) of the theme.
	ThemeArn *string `type:"string"`

	// The ID for the theme.
	ThemeId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateThemePermissionsOutput) 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 UpdateThemePermissionsOutput) GoString() string {
	return s.String()
}

// SetPermissions sets the Permissions field's value.
func (s *UpdateThemePermissionsOutput) SetPermissions(v []*ResourcePermission) *UpdateThemePermissionsOutput {
	s.Permissions = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateThemePermissionsOutput) SetRequestId(v string) *UpdateThemePermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateThemePermissionsOutput) SetStatus(v int64) *UpdateThemePermissionsOutput {
	s.Status = &v
	return s
}

// SetThemeArn sets the ThemeArn field's value.
func (s *UpdateThemePermissionsOutput) SetThemeArn(v string) *UpdateThemePermissionsOutput {
	s.ThemeArn = &v
	return s
}

// SetThemeId sets the ThemeId field's value.
func (s *UpdateThemePermissionsOutput) SetThemeId(v string) *UpdateThemePermissionsOutput {
	s.ThemeId = &v
	return s
}

type UpdateTopicInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the topic that you
	// want to update.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The definition of the topic that you want to update.
	//
	// Topic is a required field
	Topic *TopicDetails `type:"structure" required:"true"`

	// The ID of the topic that you want to modify. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	//
	// TopicId is a required field
	TopicId *string `location:"uri" locationName:"TopicId" 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 UpdateTopicInput) 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 UpdateTopicInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateTopicInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateTopicInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Topic == nil {
		invalidParams.Add(request.NewErrParamRequired("Topic"))
	}
	if s.TopicId == nil {
		invalidParams.Add(request.NewErrParamRequired("TopicId"))
	}
	if s.TopicId != nil && len(*s.TopicId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TopicId", 1))
	}
	if s.Topic != nil {
		if err := s.Topic.Validate(); err != nil {
			invalidParams.AddNested("Topic", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateTopicInput) SetAwsAccountId(v string) *UpdateTopicInput {
	s.AwsAccountId = &v
	return s
}

// SetTopic sets the Topic field's value.
func (s *UpdateTopicInput) SetTopic(v *TopicDetails) *UpdateTopicInput {
	s.Topic = v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *UpdateTopicInput) SetTopicId(v string) *UpdateTopicInput {
	s.TopicId = &v
	return s
}

type UpdateTopicOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the topic.
	Arn *string `type:"string"`

	// The Amazon Resource Name (ARN) of the topic refresh.
	RefreshArn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The ID of the topic that you want to modify. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	TopicId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTopicOutput) 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 UpdateTopicOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UpdateTopicOutput) SetArn(v string) *UpdateTopicOutput {
	s.Arn = &v
	return s
}

// SetRefreshArn sets the RefreshArn field's value.
func (s *UpdateTopicOutput) SetRefreshArn(v string) *UpdateTopicOutput {
	s.RefreshArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateTopicOutput) SetRequestId(v string) *UpdateTopicOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateTopicOutput) SetStatus(v int64) *UpdateTopicOutput {
	s.Status = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *UpdateTopicOutput) SetTopicId(v string) *UpdateTopicOutput {
	s.TopicId = &v
	return s
}

type UpdateTopicPermissionsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the topic that you
	// want to update the permissions for.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The resource permissions that you want to grant to the topic.
	GrantPermissions []*ResourcePermission `type:"list"`

	// The resource permissions that you want to revoke from the topic.
	RevokePermissions []*ResourcePermission `type:"list"`

	// The ID of the topic that you want to modify. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	//
	// TopicId is a required field
	TopicId *string `location:"uri" locationName:"TopicId" 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 UpdateTopicPermissionsInput) 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 UpdateTopicPermissionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateTopicPermissionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateTopicPermissionsInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.TopicId == nil {
		invalidParams.Add(request.NewErrParamRequired("TopicId"))
	}
	if s.TopicId != nil && len(*s.TopicId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TopicId", 1))
	}
	if s.GrantPermissions != nil {
		for i, v := range s.GrantPermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GrantPermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.RevokePermissions != nil {
		for i, v := range s.RevokePermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RevokePermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateTopicPermissionsInput) SetAwsAccountId(v string) *UpdateTopicPermissionsInput {
	s.AwsAccountId = &v
	return s
}

// SetGrantPermissions sets the GrantPermissions field's value.
func (s *UpdateTopicPermissionsInput) SetGrantPermissions(v []*ResourcePermission) *UpdateTopicPermissionsInput {
	s.GrantPermissions = v
	return s
}

// SetRevokePermissions sets the RevokePermissions field's value.
func (s *UpdateTopicPermissionsInput) SetRevokePermissions(v []*ResourcePermission) *UpdateTopicPermissionsInput {
	s.RevokePermissions = v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *UpdateTopicPermissionsInput) SetTopicId(v string) *UpdateTopicPermissionsInput {
	s.TopicId = &v
	return s
}

type UpdateTopicPermissionsOutput struct {
	_ struct{} `type:"structure"`

	// A list of resource permissions on the topic.
	Permissions []*ResourcePermission `min:"1" type:"list"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The Amazon Resource Name (ARN) of the topic.
	TopicArn *string `type:"string"`

	// The ID of the topic that you want to modify. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	TopicId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTopicPermissionsOutput) 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 UpdateTopicPermissionsOutput) GoString() string {
	return s.String()
}

// SetPermissions sets the Permissions field's value.
func (s *UpdateTopicPermissionsOutput) SetPermissions(v []*ResourcePermission) *UpdateTopicPermissionsOutput {
	s.Permissions = v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateTopicPermissionsOutput) SetRequestId(v string) *UpdateTopicPermissionsOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateTopicPermissionsOutput) SetStatus(v int64) *UpdateTopicPermissionsOutput {
	s.Status = &v
	return s
}

// SetTopicArn sets the TopicArn field's value.
func (s *UpdateTopicPermissionsOutput) SetTopicArn(v string) *UpdateTopicPermissionsOutput {
	s.TopicArn = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *UpdateTopicPermissionsOutput) SetTopicId(v string) *UpdateTopicPermissionsOutput {
	s.TopicId = &v
	return s
}

type UpdateTopicRefreshScheduleInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account that contains the topic whose refresh
	// schedule you want to update.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The ID of the dataset.
	//
	// DatasetId is a required field
	DatasetId *string `location:"uri" locationName:"DatasetId" type:"string" required:"true"`

	// The definition of a refresh schedule.
	//
	// RefreshSchedule is a required field
	RefreshSchedule *TopicRefreshSchedule `type:"structure" required:"true"`

	// The ID of the topic that you want to modify. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	//
	// TopicId is a required field
	TopicId *string `location:"uri" locationName:"TopicId" 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 UpdateTopicRefreshScheduleInput) 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 UpdateTopicRefreshScheduleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateTopicRefreshScheduleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateTopicRefreshScheduleInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.DatasetId == nil {
		invalidParams.Add(request.NewErrParamRequired("DatasetId"))
	}
	if s.DatasetId != nil && len(*s.DatasetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatasetId", 1))
	}
	if s.RefreshSchedule == nil {
		invalidParams.Add(request.NewErrParamRequired("RefreshSchedule"))
	}
	if s.TopicId == nil {
		invalidParams.Add(request.NewErrParamRequired("TopicId"))
	}
	if s.TopicId != nil && len(*s.TopicId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TopicId", 1))
	}
	if s.RefreshSchedule != nil {
		if err := s.RefreshSchedule.Validate(); err != nil {
			invalidParams.AddNested("RefreshSchedule", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateTopicRefreshScheduleInput) SetAwsAccountId(v string) *UpdateTopicRefreshScheduleInput {
	s.AwsAccountId = &v
	return s
}

// SetDatasetId sets the DatasetId field's value.
func (s *UpdateTopicRefreshScheduleInput) SetDatasetId(v string) *UpdateTopicRefreshScheduleInput {
	s.DatasetId = &v
	return s
}

// SetRefreshSchedule sets the RefreshSchedule field's value.
func (s *UpdateTopicRefreshScheduleInput) SetRefreshSchedule(v *TopicRefreshSchedule) *UpdateTopicRefreshScheduleInput {
	s.RefreshSchedule = v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *UpdateTopicRefreshScheduleInput) SetTopicId(v string) *UpdateTopicRefreshScheduleInput {
	s.TopicId = &v
	return s
}

type UpdateTopicRefreshScheduleOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the dataset.
	DatasetArn *string `type:"string"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The Amazon Resource Name (ARN) of the topic.
	TopicArn *string `type:"string"`

	// The ID of the topic that you want to modify. This ID is unique per Amazon
	// Web Services Region for each Amazon Web Services account.
	TopicId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTopicRefreshScheduleOutput) 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 UpdateTopicRefreshScheduleOutput) GoString() string {
	return s.String()
}

// SetDatasetArn sets the DatasetArn field's value.
func (s *UpdateTopicRefreshScheduleOutput) SetDatasetArn(v string) *UpdateTopicRefreshScheduleOutput {
	s.DatasetArn = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateTopicRefreshScheduleOutput) SetRequestId(v string) *UpdateTopicRefreshScheduleOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateTopicRefreshScheduleOutput) SetStatus(v int64) *UpdateTopicRefreshScheduleOutput {
	s.Status = &v
	return s
}

// SetTopicArn sets the TopicArn field's value.
func (s *UpdateTopicRefreshScheduleOutput) SetTopicArn(v string) *UpdateTopicRefreshScheduleOutput {
	s.TopicArn = &v
	return s
}

// SetTopicId sets the TopicId field's value.
func (s *UpdateTopicRefreshScheduleOutput) SetTopicId(v string) *UpdateTopicRefreshScheduleOutput {
	s.TopicId = &v
	return s
}

type UpdateUserInput struct {
	_ struct{} `type:"structure"`

	// The ID for the Amazon Web Services account that the user is in. Currently,
	// you use the ID for the Amazon Web Services account that contains your Amazon
	// QuickSight account.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// The URL of the custom OpenID Connect (OIDC) provider that provides identity
	// to let a user federate into Amazon QuickSight with an associated Identity
	// and Access Management(IAM) role. This parameter should only be used when
	// ExternalLoginFederationProviderType parameter is set to CUSTOM_OIDC.
	CustomFederationProviderUrl *string `type:"string"`

	// (Enterprise edition only) The name of the custom permissions profile that
	// you want to assign to this user. Customized permissions allows you to control
	// a user's access by restricting access the following operations:
	//
	//    * Create and update data sources
	//
	//    * Create and update datasets
	//
	//    * Create and update email reports
	//
	//    * Subscribe to email reports
	//
	// A set of custom permissions includes any combination of these restrictions.
	// Currently, you need to create the profile names for custom permission sets
	// by using the Amazon QuickSight console. Then, you use the RegisterUser API
	// operation to assign the named set of permissions to a Amazon QuickSight user.
	//
	// Amazon QuickSight custom permissions are applied through IAM policies. Therefore,
	// they override the permissions typically granted by assigning Amazon QuickSight
	// users to one of the default security cohorts in Amazon QuickSight (admin,
	// author, reader).
	//
	// This feature is available only to Amazon QuickSight Enterprise edition subscriptions.
	CustomPermissionsName *string `min:"1" type:"string"`

	// The email address of the user that you want to update.
	//
	// Email is a required field
	Email *string `type:"string" required:"true"`

	// The type of supported external login provider that provides identity to let
	// a user federate into Amazon QuickSight with an associated Identity and Access
	// Management(IAM) role. The type of supported external login provider can be
	// one of the following.
	//
	//    * COGNITO: Amazon Cognito. The provider URL is cognito-identity.amazonaws.com.
	//    When choosing the COGNITO provider type, don’t use the "CustomFederationProviderUrl"
	//    parameter which is only needed when the external provider is custom.
	//
	//    * CUSTOM_OIDC: Custom OpenID Connect (OIDC) provider. When choosing CUSTOM_OIDC
	//    type, use the CustomFederationProviderUrl parameter to provide the custom
	//    OIDC provider URL.
	//
	//    * NONE: This clears all the previously saved external login information
	//    for a user. Use the DescribeUser (https://docs.aws.amazon.com/quicksight/latest/APIReference/API_DescribeUser.html)
	//    API operation to check the external login information.
	ExternalLoginFederationProviderType *string `type:"string"`

	// The identity ID for a user in the external login provider.
	ExternalLoginId *string `type:"string"`

	// The namespace. Currently, you should set this to default.
	//
	// Namespace is a required field
	Namespace *string `location:"uri" locationName:"Namespace" type:"string" required:"true"`

	// The Amazon QuickSight role of the user. The role can be one of the following
	// default security cohorts:
	//
	//    * READER: A user who has read-only access to dashboards.
	//
	//    * AUTHOR: A user who can create data sources, datasets, analyses, and
	//    dashboards.
	//
	//    * ADMIN: A user who is an author, who can also manage Amazon QuickSight
	//    settings.
	//
	//    * READER_PRO: Reader Pro adds Generative BI capabilities to the Reader
	//    role. Reader Pros have access to Amazon Q in Amazon QuickSight, can build
	//    stories with Amazon Q, and can generate executive summaries from dashboards.
	//
	//    * AUTHOR_PRO: Author Pro adds Generative BI capabilities to the Author
	//    role. Author Pros can author dashboards with natural language with Amazon
	//    Q, build stories with Amazon Q, create Topics for Q&A, and generate executive
	//    summaries from dashboards.
	//
	//    * ADMIN_PRO: Admin Pros are Author Pros who can also manage Amazon QuickSight
	//    administrative settings. Admin Pro users are billed at Author Pro pricing.
	//
	// The name of the Amazon QuickSight role is invisible to the user except for
	// the console screens dealing with permissions.
	//
	// Role is a required field
	Role *string `type:"string" required:"true" enum:"UserRole"`

	// A flag that you use to indicate that you want to remove all custom permissions
	// from this user. Using this parameter resets the user to the state it was
	// in before a custom permissions profile was applied. This parameter defaults
	// to NULL and it doesn't accept any other value.
	UnapplyCustomPermissions *bool `type:"boolean"`

	// The Amazon QuickSight user name that you want to update.
	//
	// UserName is a required field
	UserName *string `location:"uri" locationName:"UserName" 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 UpdateUserInput) 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 UpdateUserInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateUserInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateUserInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.CustomPermissionsName != nil && len(*s.CustomPermissionsName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CustomPermissionsName", 1))
	}
	if s.Email == nil {
		invalidParams.Add(request.NewErrParamRequired("Email"))
	}
	if s.Namespace == nil {
		invalidParams.Add(request.NewErrParamRequired("Namespace"))
	}
	if s.Namespace != nil && len(*s.Namespace) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Namespace", 1))
	}
	if s.Role == nil {
		invalidParams.Add(request.NewErrParamRequired("Role"))
	}
	if s.UserName == nil {
		invalidParams.Add(request.NewErrParamRequired("UserName"))
	}
	if s.UserName != nil && len(*s.UserName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateUserInput) SetAwsAccountId(v string) *UpdateUserInput {
	s.AwsAccountId = &v
	return s
}

// SetCustomFederationProviderUrl sets the CustomFederationProviderUrl field's value.
func (s *UpdateUserInput) SetCustomFederationProviderUrl(v string) *UpdateUserInput {
	s.CustomFederationProviderUrl = &v
	return s
}

// SetCustomPermissionsName sets the CustomPermissionsName field's value.
func (s *UpdateUserInput) SetCustomPermissionsName(v string) *UpdateUserInput {
	s.CustomPermissionsName = &v
	return s
}

// SetEmail sets the Email field's value.
func (s *UpdateUserInput) SetEmail(v string) *UpdateUserInput {
	s.Email = &v
	return s
}

// SetExternalLoginFederationProviderType sets the ExternalLoginFederationProviderType field's value.
func (s *UpdateUserInput) SetExternalLoginFederationProviderType(v string) *UpdateUserInput {
	s.ExternalLoginFederationProviderType = &v
	return s
}

// SetExternalLoginId sets the ExternalLoginId field's value.
func (s *UpdateUserInput) SetExternalLoginId(v string) *UpdateUserInput {
	s.ExternalLoginId = &v
	return s
}

// SetNamespace sets the Namespace field's value.
func (s *UpdateUserInput) SetNamespace(v string) *UpdateUserInput {
	s.Namespace = &v
	return s
}

// SetRole sets the Role field's value.
func (s *UpdateUserInput) SetRole(v string) *UpdateUserInput {
	s.Role = &v
	return s
}

// SetUnapplyCustomPermissions sets the UnapplyCustomPermissions field's value.
func (s *UpdateUserInput) SetUnapplyCustomPermissions(v bool) *UpdateUserInput {
	s.UnapplyCustomPermissions = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *UpdateUserInput) SetUserName(v string) *UpdateUserInput {
	s.UserName = &v
	return s
}

type UpdateUserOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The Amazon QuickSight user.
	User *User `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 UpdateUserOutput) 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 UpdateUserOutput) GoString() string {
	return s.String()
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateUserOutput) SetRequestId(v string) *UpdateUserOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateUserOutput) SetStatus(v int64) *UpdateUserOutput {
	s.Status = &v
	return s
}

// SetUser sets the User field's value.
func (s *UpdateUserOutput) SetUser(v *User) *UpdateUserOutput {
	s.User = v
	return s
}

type UpdateVPCConnectionInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the account that contains the VPC connection
	// that you want to update.
	//
	// AwsAccountId is a required field
	AwsAccountId *string `location:"uri" locationName:"AwsAccountId" min:"12" type:"string" required:"true"`

	// A list of IP addresses of DNS resolver endpoints for the VPC connection.
	DnsResolvers []*string `type:"list"`

	// The display name for the VPC connection.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// An IAM role associated with the VPC connection.
	//
	// RoleArn is a required field
	RoleArn *string `min:"20" type:"string" required:"true"`

	// A list of security group IDs for the VPC connection.
	//
	// SecurityGroupIds is a required field
	SecurityGroupIds []*string `min:"1" type:"list" required:"true"`

	// A list of subnet IDs for the VPC connection.
	//
	// SubnetIds is a required field
	SubnetIds []*string `min:"2" type:"list" required:"true"`

	// The ID of the VPC connection that you're updating. This ID is a unique identifier
	// for each Amazon Web Services Region in an Amazon Web Services account.
	//
	// VPCConnectionId is a required field
	VPCConnectionId *string `location:"uri" locationName:"VPCConnectionId" 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 UpdateVPCConnectionInput) 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 UpdateVPCConnectionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateVPCConnectionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateVPCConnectionInput"}
	if s.AwsAccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AwsAccountId"))
	}
	if s.AwsAccountId != nil && len(*s.AwsAccountId) < 12 {
		invalidParams.Add(request.NewErrParamMinLen("AwsAccountId", 12))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.RoleArn == nil {
		invalidParams.Add(request.NewErrParamRequired("RoleArn"))
	}
	if s.RoleArn != nil && len(*s.RoleArn) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("RoleArn", 20))
	}
	if s.SecurityGroupIds == nil {
		invalidParams.Add(request.NewErrParamRequired("SecurityGroupIds"))
	}
	if s.SecurityGroupIds != nil && len(s.SecurityGroupIds) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecurityGroupIds", 1))
	}
	if s.SubnetIds == nil {
		invalidParams.Add(request.NewErrParamRequired("SubnetIds"))
	}
	if s.SubnetIds != nil && len(s.SubnetIds) < 2 {
		invalidParams.Add(request.NewErrParamMinLen("SubnetIds", 2))
	}
	if s.VPCConnectionId == nil {
		invalidParams.Add(request.NewErrParamRequired("VPCConnectionId"))
	}
	if s.VPCConnectionId != nil && len(*s.VPCConnectionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VPCConnectionId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateVPCConnectionInput) SetAwsAccountId(v string) *UpdateVPCConnectionInput {
	s.AwsAccountId = &v
	return s
}

// SetDnsResolvers sets the DnsResolvers field's value.
func (s *UpdateVPCConnectionInput) SetDnsResolvers(v []*string) *UpdateVPCConnectionInput {
	s.DnsResolvers = v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateVPCConnectionInput) SetName(v string) *UpdateVPCConnectionInput {
	s.Name = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *UpdateVPCConnectionInput) SetRoleArn(v string) *UpdateVPCConnectionInput {
	s.RoleArn = &v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *UpdateVPCConnectionInput) SetSecurityGroupIds(v []*string) *UpdateVPCConnectionInput {
	s.SecurityGroupIds = v
	return s
}

// SetSubnetIds sets the SubnetIds field's value.
func (s *UpdateVPCConnectionInput) SetSubnetIds(v []*string) *UpdateVPCConnectionInput {
	s.SubnetIds = v
	return s
}

// SetVPCConnectionId sets the VPCConnectionId field's value.
func (s *UpdateVPCConnectionInput) SetVPCConnectionId(v string) *UpdateVPCConnectionInput {
	s.VPCConnectionId = &v
	return s
}

type UpdateVPCConnectionOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the VPC connection.
	Arn *string `type:"string"`

	// The availability status of the VPC connection.
	AvailabilityStatus *string `type:"string" enum:"VPCConnectionAvailabilityStatus"`

	// The Amazon Web Services request ID for this operation.
	RequestId *string `type:"string"`

	// The HTTP status of the request.
	Status *int64 `location:"statusCode" type:"integer"`

	// The update status of the VPC connection's last update.
	UpdateStatus *string `type:"string" enum:"VPCConnectionResourceStatus"`

	// The ID of the VPC connection that you are updating. This ID is a unique identifier
	// for each Amazon Web Services Region in anAmazon Web Services account.
	VPCConnectionId *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateVPCConnectionOutput) 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 UpdateVPCConnectionOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *UpdateVPCConnectionOutput) SetArn(v string) *UpdateVPCConnectionOutput {
	s.Arn = &v
	return s
}

// SetAvailabilityStatus sets the AvailabilityStatus field's value.
func (s *UpdateVPCConnectionOutput) SetAvailabilityStatus(v string) *UpdateVPCConnectionOutput {
	s.AvailabilityStatus = &v
	return s
}

// SetRequestId sets the RequestId field's value.
func (s *UpdateVPCConnectionOutput) SetRequestId(v string) *UpdateVPCConnectionOutput {
	s.RequestId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateVPCConnectionOutput) SetStatus(v int64) *UpdateVPCConnectionOutput {
	s.Status = &v
	return s
}

// SetUpdateStatus sets the UpdateStatus field's value.
func (s *UpdateVPCConnectionOutput) SetUpdateStatus(v string) *UpdateVPCConnectionOutput {
	s.UpdateStatus = &v
	return s
}

// SetVPCConnectionId sets the VPCConnectionId field's value.
func (s *UpdateVPCConnectionOutput) SetVPCConnectionId(v string) *UpdateVPCConnectionOutput {
	s.VPCConnectionId = &v
	return s
}

// Information about the format for a source file or files.
type UploadSettings struct {
	_ struct{} `type:"structure"`

	// Whether the file has a header row, or the files each have a header row.
	ContainsHeader *bool `type:"boolean"`

	// The delimiter between values in the file.
	Delimiter *string `min:"1" type:"string"`

	// File format.
	Format *string `type:"string" enum:"FileFormat"`

	// A row number to start reading data from.
	StartFromRow *int64 `min:"1" type:"integer"`

	// Text qualifier.
	TextQualifier *string `type:"string" enum:"TextQualifier"`
}

// 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 UploadSettings) 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 UploadSettings) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UploadSettings) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UploadSettings"}
	if s.Delimiter != nil && len(*s.Delimiter) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Delimiter", 1))
	}
	if s.StartFromRow != nil && *s.StartFromRow < 1 {
		invalidParams.Add(request.NewErrParamMinValue("StartFromRow", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContainsHeader sets the ContainsHeader field's value.
func (s *UploadSettings) SetContainsHeader(v bool) *UploadSettings {
	s.ContainsHeader = &v
	return s
}

// SetDelimiter sets the Delimiter field's value.
func (s *UploadSettings) SetDelimiter(v string) *UploadSettings {
	s.Delimiter = &v
	return s
}

// SetFormat sets the Format field's value.
func (s *UploadSettings) SetFormat(v string) *UploadSettings {
	s.Format = &v
	return s
}

// SetStartFromRow sets the StartFromRow field's value.
func (s *UploadSettings) SetStartFromRow(v int64) *UploadSettings {
	s.StartFromRow = &v
	return s
}

// SetTextQualifier sets the TextQualifier field's value.
func (s *UploadSettings) SetTextQualifier(v string) *UploadSettings {
	s.TextQualifier = &v
	return s
}

// A registered user of Amazon QuickSight.
type User struct {
	_ struct{} `type:"structure"`

	// The active status of user. When you create an Amazon QuickSight user that's
	// not an IAM user or an Active Directory user, that user is inactive until
	// they sign in and provide a password.
	Active *bool `type:"boolean"`

	// The Amazon Resource Name (ARN) for the user.
	Arn *string `type:"string"`

	// The custom permissions profile associated with this user.
	CustomPermissionsName *string `min:"1" type:"string"`

	// The user's email address.
	Email *string `type:"string"`

	// The type of supported external login provider that provides identity to let
	// the user federate into Amazon QuickSight with an associated IAM role. The
	// type can be one of the following.
	//
	//    * COGNITO: Amazon Cognito. The provider URL is cognito-identity.amazonaws.com.
	//
	//    * CUSTOM_OIDC: Custom OpenID Connect (OIDC) provider.
	ExternalLoginFederationProviderType *string `type:"string"`

	// The URL of the external login provider.
	ExternalLoginFederationProviderUrl *string `type:"string"`

	// The identity ID for the user in the external login provider.
	ExternalLoginId *string `type:"string"`

	// The type of identity authentication used by the user.
	IdentityType *string `type:"string" enum:"IdentityType"`

	// The principal ID of the user.
	PrincipalId *string `type:"string"`

	// The Amazon QuickSight role for the user. The user role can be one of the
	// following:.
	//
	//    * READER: A user who has read-only access to dashboards.
	//
	//    * AUTHOR: A user who can create data sources, datasets, analyses, and
	//    dashboards.
	//
	//    * ADMIN: A user who is an author, who can also manage Amazon Amazon QuickSight
	//    settings.
	//
	//    * READER_PRO: Reader Pro adds Generative BI capabilities to the Reader
	//    role. Reader Pros have access to Amazon Q in Amazon QuickSight, can build
	//    stories with Amazon Q, and can generate executive summaries from dashboards.
	//
	//    * AUTHOR_PRO: Author Pro adds Generative BI capabilities to the Author
	//    role. Author Pros can author dashboards with natural language with Amazon
	//    Q, build stories with Amazon Q, create Topics for Q&A, and generate executive
	//    summaries from dashboards.
	//
	//    * ADMIN_PRO: Admin Pros are Author Pros who can also manage Amazon QuickSight
	//    administrative settings. Admin Pro users are billed at Author Pro pricing.
	//
	//    * RESTRICTED_READER: This role isn't currently available for use.
	//
	//    * RESTRICTED_AUTHOR: This role isn't currently available for use.
	Role *string `type:"string" enum:"UserRole"`

	// The user's user name. This value is required if you are registering a user
	// that will be managed in Amazon QuickSight. In the output, the value for UserName
	// is N/A when the value for IdentityType is IAM and the corresponding IAM user
	// is deleted.
	UserName *string `min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s User) 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 User) GoString() string {
	return s.String()
}

// SetActive sets the Active field's value.
func (s *User) SetActive(v bool) *User {
	s.Active = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *User) SetArn(v string) *User {
	s.Arn = &v
	return s
}

// SetCustomPermissionsName sets the CustomPermissionsName field's value.
func (s *User) SetCustomPermissionsName(v string) *User {
	s.CustomPermissionsName = &v
	return s
}

// SetEmail sets the Email field's value.
func (s *User) SetEmail(v string) *User {
	s.Email = &v
	return s
}

// SetExternalLoginFederationProviderType sets the ExternalLoginFederationProviderType field's value.
func (s *User) SetExternalLoginFederationProviderType(v string) *User {
	s.ExternalLoginFederationProviderType = &v
	return s
}

// SetExternalLoginFederationProviderUrl sets the ExternalLoginFederationProviderUrl field's value.
func (s *User) SetExternalLoginFederationProviderUrl(v string) *User {
	s.ExternalLoginFederationProviderUrl = &v
	return s
}

// SetExternalLoginId sets the ExternalLoginId field's value.
func (s *User) SetExternalLoginId(v string) *User {
	s.ExternalLoginId = &v
	return s
}

// SetIdentityType sets the IdentityType field's value.
func (s *User) SetIdentityType(v string) *User {
	s.IdentityType = &v
	return s
}

// SetPrincipalId sets the PrincipalId field's value.
func (s *User) SetPrincipalId(v string) *User {
	s.PrincipalId = &v
	return s
}

// SetRole sets the Role field's value.
func (s *User) SetRole(v string) *User {
	s.Role = &v
	return s
}

// SetUserName sets the UserName field's value.
func (s *User) SetUserName(v string) *User {
	s.UserName = &v
	return s
}

// The user with the provided name isn't found. This error can happen in any
// operation that requires finding a user based on a provided user name, such
// as DeleteUser, DescribeUser, and so on.
type UserNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`

	// The Amazon Web Services request ID for this request.
	RequestId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserNotFoundException) 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 UserNotFoundException) GoString() string {
	return s.String()
}

func newErrorUserNotFoundException(v protocol.ResponseMetadata) error {
	return &UserNotFoundException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *UserNotFoundException) Code() string {
	return "QuickSightUserNotFoundException"
}

// Message returns the exception's message.
func (s *UserNotFoundException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *UserNotFoundException) OrigErr() error {
	return nil
}

func (s *UserNotFoundException) 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 *UserNotFoundException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *UserNotFoundException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The structure of a VPC connection.
type VPCConnection struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the VPC connection.
	Arn *string `type:"string"`

	// The availability status of the VPC connection.
	AvailabilityStatus *string `type:"string" enum:"VPCConnectionAvailabilityStatus"`

	// The time that the VPC connection was created.
	CreatedTime *time.Time `type:"timestamp"`

	// A list of IP addresses of DNS resolver endpoints for the VPC connection.
	DnsResolvers []*string `type:"list"`

	// The time that the VPC connection was last updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// The display name for the VPC connection.
	Name *string `min:"1" type:"string"`

	// A list of network interfaces.
	NetworkInterfaces []*NetworkInterface `type:"list"`

	// The ARN of the IAM role associated with the VPC connection.
	RoleArn *string `type:"string"`

	// The Amazon EC2 security group IDs associated with the VPC connection.
	SecurityGroupIds []*string `min:"1" type:"list"`

	// The status of the VPC connection.
	Status *string `type:"string" enum:"VPCConnectionResourceStatus"`

	// The ID of the VPC connection that you're creating. This ID is a unique identifier
	// for each Amazon Web Services Region in an Amazon Web Services account.
	VPCConnectionId *string `min:"1" type:"string"`

	// The Amazon EC2 VPC ID associated with the VPC connection.
	VPCId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VPCConnection) 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 VPCConnection) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *VPCConnection) SetArn(v string) *VPCConnection {
	s.Arn = &v
	return s
}

// SetAvailabilityStatus sets the AvailabilityStatus field's value.
func (s *VPCConnection) SetAvailabilityStatus(v string) *VPCConnection {
	s.AvailabilityStatus = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *VPCConnection) SetCreatedTime(v time.Time) *VPCConnection {
	s.CreatedTime = &v
	return s
}

// SetDnsResolvers sets the DnsResolvers field's value.
func (s *VPCConnection) SetDnsResolvers(v []*string) *VPCConnection {
	s.DnsResolvers = v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *VPCConnection) SetLastUpdatedTime(v time.Time) *VPCConnection {
	s.LastUpdatedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *VPCConnection) SetName(v string) *VPCConnection {
	s.Name = &v
	return s
}

// SetNetworkInterfaces sets the NetworkInterfaces field's value.
func (s *VPCConnection) SetNetworkInterfaces(v []*NetworkInterface) *VPCConnection {
	s.NetworkInterfaces = v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *VPCConnection) SetRoleArn(v string) *VPCConnection {
	s.RoleArn = &v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *VPCConnection) SetSecurityGroupIds(v []*string) *VPCConnection {
	s.SecurityGroupIds = v
	return s
}

// SetStatus sets the Status field's value.
func (s *VPCConnection) SetStatus(v string) *VPCConnection {
	s.Status = &v
	return s
}

// SetVPCConnectionId sets the VPCConnectionId field's value.
func (s *VPCConnection) SetVPCConnectionId(v string) *VPCConnection {
	s.VPCConnectionId = &v
	return s
}

// SetVPCId sets the VPCId field's value.
func (s *VPCConnection) SetVPCId(v string) *VPCConnection {
	s.VPCId = &v
	return s
}

// The summary metadata that describes a VPC connection.
type VPCConnectionSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the VPC connection.
	Arn *string `type:"string"`

	// The availability status of the VPC connection.
	AvailabilityStatus *string `type:"string" enum:"VPCConnectionAvailabilityStatus"`

	// The time that the VPC connection was created.
	CreatedTime *time.Time `type:"timestamp"`

	// A list of IP addresses of DNS resolver endpoints for the VPC connection.
	DnsResolvers []*string `type:"list"`

	// The time that the VPC connection was last updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// The display name for the VPC connection.
	Name *string `min:"1" type:"string"`

	// A list of network interfaces.
	NetworkInterfaces []*NetworkInterface `type:"list"`

	// The ARN of the IAM role associated with the VPC connection.
	RoleArn *string `type:"string"`

	// The Amazon EC2 security group IDs associated with the VPC connection.
	SecurityGroupIds []*string `min:"1" type:"list"`

	// The status of the VPC connection.
	Status *string `type:"string" enum:"VPCConnectionResourceStatus"`

	// The ID of the VPC connection that you're creating. This ID is a unique identifier
	// for each Amazon Web Services Region in an Amazon Web Services account.
	VPCConnectionId *string `min:"1" type:"string"`

	// The Amazon EC2 VPC ID associated with the VPC connection.
	VPCId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VPCConnectionSummary) 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 VPCConnectionSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *VPCConnectionSummary) SetArn(v string) *VPCConnectionSummary {
	s.Arn = &v
	return s
}

// SetAvailabilityStatus sets the AvailabilityStatus field's value.
func (s *VPCConnectionSummary) SetAvailabilityStatus(v string) *VPCConnectionSummary {
	s.AvailabilityStatus = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *VPCConnectionSummary) SetCreatedTime(v time.Time) *VPCConnectionSummary {
	s.CreatedTime = &v
	return s
}

// SetDnsResolvers sets the DnsResolvers field's value.
func (s *VPCConnectionSummary) SetDnsResolvers(v []*string) *VPCConnectionSummary {
	s.DnsResolvers = v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *VPCConnectionSummary) SetLastUpdatedTime(v time.Time) *VPCConnectionSummary {
	s.LastUpdatedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *VPCConnectionSummary) SetName(v string) *VPCConnectionSummary {
	s.Name = &v
	return s
}

// SetNetworkInterfaces sets the NetworkInterfaces field's value.
func (s *VPCConnectionSummary) SetNetworkInterfaces(v []*NetworkInterface) *VPCConnectionSummary {
	s.NetworkInterfaces = v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *VPCConnectionSummary) SetRoleArn(v string) *VPCConnectionSummary {
	s.RoleArn = &v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *VPCConnectionSummary) SetSecurityGroupIds(v []*string) *VPCConnectionSummary {
	s.SecurityGroupIds = v
	return s
}

// SetStatus sets the Status field's value.
func (s *VPCConnectionSummary) SetStatus(v string) *VPCConnectionSummary {
	s.Status = &v
	return s
}

// SetVPCConnectionId sets the VPCConnectionId field's value.
func (s *VPCConnectionSummary) SetVPCConnectionId(v string) *VPCConnectionSummary {
	s.VPCConnectionId = &v
	return s
}

// SetVPCId sets the VPCId field's value.
func (s *VPCConnectionSummary) SetVPCId(v string) *VPCConnectionSummary {
	s.VPCId = &v
	return s
}

// The option to relax the validation that is required to create and update
// analyses, dashboards, and templates with definition objects. When you set
// this value to LENIENT, validation is skipped for specific errors.
type ValidationStrategy struct {
	_ struct{} `type:"structure"`

	// The mode of validation for the asset to be created or updated. When you set
	// this value to STRICT, strict validation for every error is enforced. When
	// you set this value to LENIENT, validation is skipped for specific UI errors.
	//
	// Mode is a required field
	Mode *string `type:"string" required:"true" enum:"ValidationStrategyMode"`
}

// 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 ValidationStrategy) 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 ValidationStrategy) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ValidationStrategy) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ValidationStrategy"}
	if s.Mode == nil {
		invalidParams.Add(request.NewErrParamRequired("Mode"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMode sets the Mode field's value.
func (s *ValidationStrategy) SetMode(v string) *ValidationStrategy {
	s.Mode = &v
	return s
}

// The range options for the data zoom scroll bar.
type VisibleRangeOptions struct {
	_ struct{} `type:"structure"`

	// The percent range in the visible range.
	PercentRange *PercentVisibleRange `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 VisibleRangeOptions) 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 VisibleRangeOptions) GoString() string {
	return s.String()
}

// SetPercentRange sets the PercentRange field's value.
func (s *VisibleRangeOptions) SetPercentRange(v *PercentVisibleRange) *VisibleRangeOptions {
	s.PercentRange = v
	return s
}

// A visual displayed on a sheet in an analysis, dashboard, or template.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type Visual struct {
	_ struct{} `type:"structure"`

	// A bar chart.
	//
	// For more information, see Using bar charts (https://docs.aws.amazon.com/quicksight/latest/user/bar-charts.html)
	// in the Amazon QuickSight User Guide.
	BarChartVisual *BarChartVisual `type:"structure"`

	// A box plot.
	//
	// For more information, see Using box plots (https://docs.aws.amazon.com/quicksight/latest/user/box-plots.html)
	// in the Amazon QuickSight User Guide.
	BoxPlotVisual *BoxPlotVisual `type:"structure"`

	// A combo chart.
	//
	// For more information, see Using combo charts (https://docs.aws.amazon.com/quicksight/latest/user/combo-charts.html)
	// in the Amazon QuickSight User Guide.
	ComboChartVisual *ComboChartVisual `type:"structure"`

	// A visual that contains custom content.
	//
	// For more information, see Using custom visual content (https://docs.aws.amazon.com/quicksight/latest/user/custom-visual-content.html)
	// in the Amazon QuickSight User Guide.
	CustomContentVisual *CustomContentVisual `type:"structure"`

	// An empty visual.
	EmptyVisual *EmptyVisual `type:"structure"`

	// A filled map.
	//
	// For more information, see Creating filled maps (https://docs.aws.amazon.com/quicksight/latest/user/filled-maps.html)
	// in the Amazon QuickSight User Guide.
	FilledMapVisual *FilledMapVisual `type:"structure"`

	// A funnel chart.
	//
	// For more information, see Using funnel charts (https://docs.aws.amazon.com/quicksight/latest/user/funnel-visual-content.html)
	// in the Amazon QuickSight User Guide.
	FunnelChartVisual *FunnelChartVisual `type:"structure"`

	// A gauge chart.
	//
	// For more information, see Using gauge charts (https://docs.aws.amazon.com/quicksight/latest/user/gauge-chart.html)
	// in the Amazon QuickSight User Guide.
	GaugeChartVisual *GaugeChartVisual `type:"structure"`

	// A geospatial map or a points on map visual.
	//
	// For more information, see Creating point maps (https://docs.aws.amazon.com/quicksight/latest/user/point-maps.html)
	// in the Amazon QuickSight User Guide.
	GeospatialMapVisual *GeospatialMapVisual `type:"structure"`

	// A heat map.
	//
	// For more information, see Using heat maps (https://docs.aws.amazon.com/quicksight/latest/user/heat-map.html)
	// in the Amazon QuickSight User Guide.
	HeatMapVisual *HeatMapVisual `type:"structure"`

	// A histogram.
	//
	// For more information, see Using histograms (https://docs.aws.amazon.com/quicksight/latest/user/histogram-charts.html)
	// in the Amazon QuickSight User Guide.
	HistogramVisual *HistogramVisual `type:"structure"`

	// An insight visual.
	//
	// For more information, see Working with insights (https://docs.aws.amazon.com/quicksight/latest/user/computational-insights.html)
	// in the Amazon QuickSight User Guide.
	InsightVisual *InsightVisual `type:"structure"`

	// A key performance indicator (KPI).
	//
	// For more information, see Using KPIs (https://docs.aws.amazon.com/quicksight/latest/user/kpi.html)
	// in the Amazon QuickSight User Guide.
	KPIVisual *KPIVisual `type:"structure"`

	// A line chart.
	//
	// For more information, see Using line charts (https://docs.aws.amazon.com/quicksight/latest/user/line-charts.html)
	// in the Amazon QuickSight User Guide.
	LineChartVisual *LineChartVisual `type:"structure"`

	// A pie or donut chart.
	//
	// For more information, see Using pie charts (https://docs.aws.amazon.com/quicksight/latest/user/pie-chart.html)
	// in the Amazon QuickSight User Guide.
	PieChartVisual *PieChartVisual `type:"structure"`

	// A pivot table.
	//
	// For more information, see Using pivot tables (https://docs.aws.amazon.com/quicksight/latest/user/pivot-table.html)
	// in the Amazon QuickSight User Guide.
	PivotTableVisual *PivotTableVisual `type:"structure"`

	// A radar chart visual.
	//
	// For more information, see Using radar charts (https://docs.aws.amazon.com/quicksight/latest/user/radar-chart.html)
	// in the Amazon QuickSight User Guide.
	RadarChartVisual *RadarChartVisual `type:"structure"`

	// A sankey diagram.
	//
	// For more information, see Using Sankey diagrams (https://docs.aws.amazon.com/quicksight/latest/user/sankey-diagram.html)
	// in the Amazon QuickSight User Guide.
	SankeyDiagramVisual *SankeyDiagramVisual `type:"structure"`

	// A scatter plot.
	//
	// For more information, see Using scatter plots (https://docs.aws.amazon.com/quicksight/latest/user/scatter-plot.html)
	// in the Amazon QuickSight User Guide.
	ScatterPlotVisual *ScatterPlotVisual `type:"structure"`

	// A table visual.
	//
	// For more information, see Using tables as visuals (https://docs.aws.amazon.com/quicksight/latest/user/tabular.html)
	// in the Amazon QuickSight User Guide.
	TableVisual *TableVisual `type:"structure"`

	// A tree map.
	//
	// For more information, see Using tree maps (https://docs.aws.amazon.com/quicksight/latest/user/tree-map.html)
	// in the Amazon QuickSight User Guide.
	TreeMapVisual *TreeMapVisual `type:"structure"`

	// A waterfall chart.
	//
	// For more information, see Using waterfall charts (https://docs.aws.amazon.com/quicksight/latest/user/waterfall-chart.html)
	// in the Amazon QuickSight User Guide.
	WaterfallVisual *WaterfallVisual `type:"structure"`

	// A word cloud.
	//
	// For more information, see Using word clouds (https://docs.aws.amazon.com/quicksight/latest/user/word-cloud.html)
	// in the Amazon QuickSight User Guide.
	WordCloudVisual *WordCloudVisual `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 Visual) 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 Visual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Visual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Visual"}
	if s.BarChartVisual != nil {
		if err := s.BarChartVisual.Validate(); err != nil {
			invalidParams.AddNested("BarChartVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.BoxPlotVisual != nil {
		if err := s.BoxPlotVisual.Validate(); err != nil {
			invalidParams.AddNested("BoxPlotVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.ComboChartVisual != nil {
		if err := s.ComboChartVisual.Validate(); err != nil {
			invalidParams.AddNested("ComboChartVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.CustomContentVisual != nil {
		if err := s.CustomContentVisual.Validate(); err != nil {
			invalidParams.AddNested("CustomContentVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.EmptyVisual != nil {
		if err := s.EmptyVisual.Validate(); err != nil {
			invalidParams.AddNested("EmptyVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.FilledMapVisual != nil {
		if err := s.FilledMapVisual.Validate(); err != nil {
			invalidParams.AddNested("FilledMapVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.FunnelChartVisual != nil {
		if err := s.FunnelChartVisual.Validate(); err != nil {
			invalidParams.AddNested("FunnelChartVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.GaugeChartVisual != nil {
		if err := s.GaugeChartVisual.Validate(); err != nil {
			invalidParams.AddNested("GaugeChartVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.GeospatialMapVisual != nil {
		if err := s.GeospatialMapVisual.Validate(); err != nil {
			invalidParams.AddNested("GeospatialMapVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.HeatMapVisual != nil {
		if err := s.HeatMapVisual.Validate(); err != nil {
			invalidParams.AddNested("HeatMapVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.HistogramVisual != nil {
		if err := s.HistogramVisual.Validate(); err != nil {
			invalidParams.AddNested("HistogramVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.InsightVisual != nil {
		if err := s.InsightVisual.Validate(); err != nil {
			invalidParams.AddNested("InsightVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.KPIVisual != nil {
		if err := s.KPIVisual.Validate(); err != nil {
			invalidParams.AddNested("KPIVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.LineChartVisual != nil {
		if err := s.LineChartVisual.Validate(); err != nil {
			invalidParams.AddNested("LineChartVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.PieChartVisual != nil {
		if err := s.PieChartVisual.Validate(); err != nil {
			invalidParams.AddNested("PieChartVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.PivotTableVisual != nil {
		if err := s.PivotTableVisual.Validate(); err != nil {
			invalidParams.AddNested("PivotTableVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.RadarChartVisual != nil {
		if err := s.RadarChartVisual.Validate(); err != nil {
			invalidParams.AddNested("RadarChartVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.SankeyDiagramVisual != nil {
		if err := s.SankeyDiagramVisual.Validate(); err != nil {
			invalidParams.AddNested("SankeyDiagramVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.ScatterPlotVisual != nil {
		if err := s.ScatterPlotVisual.Validate(); err != nil {
			invalidParams.AddNested("ScatterPlotVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.TableVisual != nil {
		if err := s.TableVisual.Validate(); err != nil {
			invalidParams.AddNested("TableVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.TreeMapVisual != nil {
		if err := s.TreeMapVisual.Validate(); err != nil {
			invalidParams.AddNested("TreeMapVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.WaterfallVisual != nil {
		if err := s.WaterfallVisual.Validate(); err != nil {
			invalidParams.AddNested("WaterfallVisual", err.(request.ErrInvalidParams))
		}
	}
	if s.WordCloudVisual != nil {
		if err := s.WordCloudVisual.Validate(); err != nil {
			invalidParams.AddNested("WordCloudVisual", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBarChartVisual sets the BarChartVisual field's value.
func (s *Visual) SetBarChartVisual(v *BarChartVisual) *Visual {
	s.BarChartVisual = v
	return s
}

// SetBoxPlotVisual sets the BoxPlotVisual field's value.
func (s *Visual) SetBoxPlotVisual(v *BoxPlotVisual) *Visual {
	s.BoxPlotVisual = v
	return s
}

// SetComboChartVisual sets the ComboChartVisual field's value.
func (s *Visual) SetComboChartVisual(v *ComboChartVisual) *Visual {
	s.ComboChartVisual = v
	return s
}

// SetCustomContentVisual sets the CustomContentVisual field's value.
func (s *Visual) SetCustomContentVisual(v *CustomContentVisual) *Visual {
	s.CustomContentVisual = v
	return s
}

// SetEmptyVisual sets the EmptyVisual field's value.
func (s *Visual) SetEmptyVisual(v *EmptyVisual) *Visual {
	s.EmptyVisual = v
	return s
}

// SetFilledMapVisual sets the FilledMapVisual field's value.
func (s *Visual) SetFilledMapVisual(v *FilledMapVisual) *Visual {
	s.FilledMapVisual = v
	return s
}

// SetFunnelChartVisual sets the FunnelChartVisual field's value.
func (s *Visual) SetFunnelChartVisual(v *FunnelChartVisual) *Visual {
	s.FunnelChartVisual = v
	return s
}

// SetGaugeChartVisual sets the GaugeChartVisual field's value.
func (s *Visual) SetGaugeChartVisual(v *GaugeChartVisual) *Visual {
	s.GaugeChartVisual = v
	return s
}

// SetGeospatialMapVisual sets the GeospatialMapVisual field's value.
func (s *Visual) SetGeospatialMapVisual(v *GeospatialMapVisual) *Visual {
	s.GeospatialMapVisual = v
	return s
}

// SetHeatMapVisual sets the HeatMapVisual field's value.
func (s *Visual) SetHeatMapVisual(v *HeatMapVisual) *Visual {
	s.HeatMapVisual = v
	return s
}

// SetHistogramVisual sets the HistogramVisual field's value.
func (s *Visual) SetHistogramVisual(v *HistogramVisual) *Visual {
	s.HistogramVisual = v
	return s
}

// SetInsightVisual sets the InsightVisual field's value.
func (s *Visual) SetInsightVisual(v *InsightVisual) *Visual {
	s.InsightVisual = v
	return s
}

// SetKPIVisual sets the KPIVisual field's value.
func (s *Visual) SetKPIVisual(v *KPIVisual) *Visual {
	s.KPIVisual = v
	return s
}

// SetLineChartVisual sets the LineChartVisual field's value.
func (s *Visual) SetLineChartVisual(v *LineChartVisual) *Visual {
	s.LineChartVisual = v
	return s
}

// SetPieChartVisual sets the PieChartVisual field's value.
func (s *Visual) SetPieChartVisual(v *PieChartVisual) *Visual {
	s.PieChartVisual = v
	return s
}

// SetPivotTableVisual sets the PivotTableVisual field's value.
func (s *Visual) SetPivotTableVisual(v *PivotTableVisual) *Visual {
	s.PivotTableVisual = v
	return s
}

// SetRadarChartVisual sets the RadarChartVisual field's value.
func (s *Visual) SetRadarChartVisual(v *RadarChartVisual) *Visual {
	s.RadarChartVisual = v
	return s
}

// SetSankeyDiagramVisual sets the SankeyDiagramVisual field's value.
func (s *Visual) SetSankeyDiagramVisual(v *SankeyDiagramVisual) *Visual {
	s.SankeyDiagramVisual = v
	return s
}

// SetScatterPlotVisual sets the ScatterPlotVisual field's value.
func (s *Visual) SetScatterPlotVisual(v *ScatterPlotVisual) *Visual {
	s.ScatterPlotVisual = v
	return s
}

// SetTableVisual sets the TableVisual field's value.
func (s *Visual) SetTableVisual(v *TableVisual) *Visual {
	s.TableVisual = v
	return s
}

// SetTreeMapVisual sets the TreeMapVisual field's value.
func (s *Visual) SetTreeMapVisual(v *TreeMapVisual) *Visual {
	s.TreeMapVisual = v
	return s
}

// SetWaterfallVisual sets the WaterfallVisual field's value.
func (s *Visual) SetWaterfallVisual(v *WaterfallVisual) *Visual {
	s.WaterfallVisual = v
	return s
}

// SetWordCloudVisual sets the WordCloudVisual field's value.
func (s *Visual) SetWordCloudVisual(v *WordCloudVisual) *Visual {
	s.WordCloudVisual = v
	return s
}

// The axis sort options for a visual.
type VisualAxisSortOption struct {
	_ struct{} `type:"structure"`

	// The availaiblity status of a visual's axis sort options.
	AvailabilityStatus *string `type:"string" enum:"DashboardBehavior"`
}

// 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 VisualAxisSortOption) 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 VisualAxisSortOption) GoString() string {
	return s.String()
}

// SetAvailabilityStatus sets the AvailabilityStatus field's value.
func (s *VisualAxisSortOption) SetAvailabilityStatus(v string) *VisualAxisSortOption {
	s.AvailabilityStatus = &v
	return s
}

// A custom action defined on a visual.
type VisualCustomAction struct {
	_ struct{} `type:"structure"`

	// A list of VisualCustomActionOperations.
	//
	// This is a union type structure. For this structure to be valid, only one
	// of the attributes can be defined.
	//
	// ActionOperations is a required field
	ActionOperations []*VisualCustomActionOperation `min:"1" type:"list" required:"true"`

	// The ID of the VisualCustomAction.
	//
	// CustomActionId is a required field
	CustomActionId *string `min:"1" type:"string" required:"true"`

	// The name of the VisualCustomAction.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The status of the VisualCustomAction.
	Status *string `type:"string" enum:"WidgetStatus"`

	// The trigger of the VisualCustomAction.
	//
	// Valid values are defined as follows:
	//
	//    * DATA_POINT_CLICK: Initiates a custom action by a left pointer click
	//    on a data point.
	//
	//    * DATA_POINT_MENU: Initiates a custom action by right pointer click from
	//    the menu.
	//
	// Trigger is a required field
	Trigger *string `type:"string" required:"true" enum:"VisualCustomActionTrigger"`
}

// 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 VisualCustomAction) 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 VisualCustomAction) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *VisualCustomAction) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "VisualCustomAction"}
	if s.ActionOperations == nil {
		invalidParams.Add(request.NewErrParamRequired("ActionOperations"))
	}
	if s.ActionOperations != nil && len(s.ActionOperations) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ActionOperations", 1))
	}
	if s.CustomActionId == nil {
		invalidParams.Add(request.NewErrParamRequired("CustomActionId"))
	}
	if s.CustomActionId != nil && len(*s.CustomActionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CustomActionId", 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 s.Trigger == nil {
		invalidParams.Add(request.NewErrParamRequired("Trigger"))
	}
	if s.ActionOperations != nil {
		for i, v := range s.ActionOperations {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ActionOperations", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActionOperations sets the ActionOperations field's value.
func (s *VisualCustomAction) SetActionOperations(v []*VisualCustomActionOperation) *VisualCustomAction {
	s.ActionOperations = v
	return s
}

// SetCustomActionId sets the CustomActionId field's value.
func (s *VisualCustomAction) SetCustomActionId(v string) *VisualCustomAction {
	s.CustomActionId = &v
	return s
}

// SetName sets the Name field's value.
func (s *VisualCustomAction) SetName(v string) *VisualCustomAction {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *VisualCustomAction) SetStatus(v string) *VisualCustomAction {
	s.Status = &v
	return s
}

// SetTrigger sets the Trigger field's value.
func (s *VisualCustomAction) SetTrigger(v string) *VisualCustomAction {
	s.Trigger = &v
	return s
}

// The operation that is defined by the custom action.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type VisualCustomActionOperation struct {
	_ struct{} `type:"structure"`

	// The filter operation that filters data included in a visual or in an entire
	// sheet.
	FilterOperation *CustomActionFilterOperation `type:"structure"`

	// The navigation operation that navigates between different sheets in the same
	// analysis.
	NavigationOperation *CustomActionNavigationOperation `type:"structure"`

	// The set parameter operation that sets parameters in custom action.
	SetParametersOperation *CustomActionSetParametersOperation `type:"structure"`

	// The URL operation that opens a link to another webpage.
	URLOperation *CustomActionURLOperation `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 VisualCustomActionOperation) 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 VisualCustomActionOperation) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *VisualCustomActionOperation) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "VisualCustomActionOperation"}
	if s.FilterOperation != nil {
		if err := s.FilterOperation.Validate(); err != nil {
			invalidParams.AddNested("FilterOperation", err.(request.ErrInvalidParams))
		}
	}
	if s.NavigationOperation != nil {
		if err := s.NavigationOperation.Validate(); err != nil {
			invalidParams.AddNested("NavigationOperation", err.(request.ErrInvalidParams))
		}
	}
	if s.SetParametersOperation != nil {
		if err := s.SetParametersOperation.Validate(); err != nil {
			invalidParams.AddNested("SetParametersOperation", err.(request.ErrInvalidParams))
		}
	}
	if s.URLOperation != nil {
		if err := s.URLOperation.Validate(); err != nil {
			invalidParams.AddNested("URLOperation", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilterOperation sets the FilterOperation field's value.
func (s *VisualCustomActionOperation) SetFilterOperation(v *CustomActionFilterOperation) *VisualCustomActionOperation {
	s.FilterOperation = v
	return s
}

// SetNavigationOperation sets the NavigationOperation field's value.
func (s *VisualCustomActionOperation) SetNavigationOperation(v *CustomActionNavigationOperation) *VisualCustomActionOperation {
	s.NavigationOperation = v
	return s
}

// SetSetParametersOperation sets the SetParametersOperation field's value.
func (s *VisualCustomActionOperation) SetSetParametersOperation(v *CustomActionSetParametersOperation) *VisualCustomActionOperation {
	s.SetParametersOperation = v
	return s
}

// SetURLOperation sets the URLOperation field's value.
func (s *VisualCustomActionOperation) SetURLOperation(v *CustomActionURLOperation) *VisualCustomActionOperation {
	s.URLOperation = v
	return s
}

// The general visual interactions setup for visual publish options
type VisualInteractionOptions struct {
	_ struct{} `type:"structure"`

	// The context menu options for a visual.
	ContextMenuOption *ContextMenuOption `type:"structure"`

	// The on-visual menu options for a visual.
	VisualMenuOption *VisualMenuOption `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 VisualInteractionOptions) 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 VisualInteractionOptions) GoString() string {
	return s.String()
}

// SetContextMenuOption sets the ContextMenuOption field's value.
func (s *VisualInteractionOptions) SetContextMenuOption(v *ContextMenuOption) *VisualInteractionOptions {
	s.ContextMenuOption = v
	return s
}

// SetVisualMenuOption sets the VisualMenuOption field's value.
func (s *VisualInteractionOptions) SetVisualMenuOption(v *VisualMenuOption) *VisualInteractionOptions {
	s.VisualMenuOption = v
	return s
}

// The menu options for a visual.
type VisualMenuOption struct {
	_ struct{} `type:"structure"`

	// The availaiblity status of a visual's menu options.
	AvailabilityStatus *string `type:"string" enum:"DashboardBehavior"`
}

// 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 VisualMenuOption) 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 VisualMenuOption) GoString() string {
	return s.String()
}

// SetAvailabilityStatus sets the AvailabilityStatus field's value.
func (s *VisualMenuOption) SetAvailabilityStatus(v string) *VisualMenuOption {
	s.AvailabilityStatus = &v
	return s
}

// The definition for a VisualOptions.
type VisualOptions struct {
	_ struct{} `type:"structure"`

	// The type for a VisualOptions.
	Type *string `locationName:"type" 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 VisualOptions) 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 VisualOptions) GoString() string {
	return s.String()
}

// SetType sets the Type field's value.
func (s *VisualOptions) SetType(v string) *VisualOptions {
	s.Type = &v
	return s
}

// The visual display options for the visual palette.
type VisualPalette struct {
	_ struct{} `type:"structure"`

	// The chart color options for the visual palette.
	ChartColor *string `type:"string"`

	// The color map options for the visual palette.
	ColorMap []*DataPathColor `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 VisualPalette) 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 VisualPalette) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *VisualPalette) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "VisualPalette"}
	if s.ColorMap != nil {
		for i, v := range s.ColorMap {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColorMap", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetChartColor sets the ChartColor field's value.
func (s *VisualPalette) SetChartColor(v string) *VisualPalette {
	s.ChartColor = &v
	return s
}

// SetColorMap sets the ColorMap field's value.
func (s *VisualPalette) SetColorMap(v []*DataPathColor) *VisualPalette {
	s.ColorMap = v
	return s
}

// The subtitle label options for a visual.
type VisualSubtitleLabelOptions struct {
	_ struct{} `type:"structure"`

	// The long text format of the subtitle label, such as plain text or rich text.
	FormatText *LongFormatText `type:"structure"`

	// The visibility of the subtitle label.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 VisualSubtitleLabelOptions) 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 VisualSubtitleLabelOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *VisualSubtitleLabelOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "VisualSubtitleLabelOptions"}
	if s.FormatText != nil {
		if err := s.FormatText.Validate(); err != nil {
			invalidParams.AddNested("FormatText", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFormatText sets the FormatText field's value.
func (s *VisualSubtitleLabelOptions) SetFormatText(v *LongFormatText) *VisualSubtitleLabelOptions {
	s.FormatText = v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *VisualSubtitleLabelOptions) SetVisibility(v string) *VisualSubtitleLabelOptions {
	s.Visibility = &v
	return s
}

// The title label options for a visual.
type VisualTitleLabelOptions struct {
	_ struct{} `type:"structure"`

	// The short text format of the title label, such as plain text or rich text.
	FormatText *ShortFormatText `type:"structure"`

	// The visibility of the title label.
	Visibility *string `type:"string" enum:"Visibility"`
}

// 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 VisualTitleLabelOptions) 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 VisualTitleLabelOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *VisualTitleLabelOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "VisualTitleLabelOptions"}
	if s.FormatText != nil {
		if err := s.FormatText.Validate(); err != nil {
			invalidParams.AddNested("FormatText", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFormatText sets the FormatText field's value.
func (s *VisualTitleLabelOptions) SetFormatText(v *ShortFormatText) *VisualTitleLabelOptions {
	s.FormatText = v
	return s
}

// SetVisibility sets the Visibility field's value.
func (s *VisualTitleLabelOptions) SetVisibility(v string) *VisualTitleLabelOptions {
	s.Visibility = &v
	return s
}

// VPC connection properties.
type VpcConnectionProperties struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) for the VPC connection.
	//
	// VpcConnectionArn is a required field
	VpcConnectionArn *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VpcConnectionProperties) 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 VpcConnectionProperties) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *VpcConnectionProperties) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "VpcConnectionProperties"}
	if s.VpcConnectionArn == nil {
		invalidParams.Add(request.NewErrParamRequired("VpcConnectionArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetVpcConnectionArn sets the VpcConnectionArn field's value.
func (s *VpcConnectionProperties) SetVpcConnectionArn(v string) *VpcConnectionProperties {
	s.VpcConnectionArn = &v
	return s
}

// The field well configuration of a waterfall visual.
type WaterfallChartAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The breakdown field wells of a waterfall visual.
	Breakdowns []*DimensionField `type:"list"`

	// The category field wells of a waterfall visual.
	Categories []*DimensionField `type:"list"`

	// The value field wells of a waterfall visual.
	Values []*MeasureField `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 WaterfallChartAggregatedFieldWells) 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 WaterfallChartAggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WaterfallChartAggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WaterfallChartAggregatedFieldWells"}
	if s.Breakdowns != nil {
		for i, v := range s.Breakdowns {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Breakdowns", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Categories != nil {
		for i, v := range s.Categories {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Categories", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Values != nil {
		for i, v := range s.Values {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Values", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBreakdowns sets the Breakdowns field's value.
func (s *WaterfallChartAggregatedFieldWells) SetBreakdowns(v []*DimensionField) *WaterfallChartAggregatedFieldWells {
	s.Breakdowns = v
	return s
}

// SetCategories sets the Categories field's value.
func (s *WaterfallChartAggregatedFieldWells) SetCategories(v []*DimensionField) *WaterfallChartAggregatedFieldWells {
	s.Categories = v
	return s
}

// SetValues sets the Values field's value.
func (s *WaterfallChartAggregatedFieldWells) SetValues(v []*MeasureField) *WaterfallChartAggregatedFieldWells {
	s.Values = v
	return s
}

// The color configuration of a waterfall visual.
type WaterfallChartColorConfiguration struct {
	_ struct{} `type:"structure"`

	// The color configuration for individual groups within a waterfall visual.
	GroupColorConfiguration *WaterfallChartGroupColorConfiguration `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 WaterfallChartColorConfiguration) 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 WaterfallChartColorConfiguration) GoString() string {
	return s.String()
}

// SetGroupColorConfiguration sets the GroupColorConfiguration field's value.
func (s *WaterfallChartColorConfiguration) SetGroupColorConfiguration(v *WaterfallChartGroupColorConfiguration) *WaterfallChartColorConfiguration {
	s.GroupColorConfiguration = v
	return s
}

// The configuration for a waterfall visual.
type WaterfallChartConfiguration struct {
	_ struct{} `type:"structure"`

	// The options that determine the presentation of the category axis.
	CategoryAxisDisplayOptions *AxisDisplayOptions `type:"structure"`

	// The options that determine the presentation of the category axis label.
	CategoryAxisLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The color configuration of a waterfall visual.
	ColorConfiguration *WaterfallChartColorConfiguration `type:"structure"`

	// The data label configuration of a waterfall visual.
	DataLabels *DataLabelOptions `type:"structure"`

	// The field well configuration of a waterfall visual.
	FieldWells *WaterfallChartFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The legend configuration of a waterfall visual.
	Legend *LegendOptions `type:"structure"`

	// The options that determine the presentation of the y-axis.
	PrimaryYAxisDisplayOptions *AxisDisplayOptions `type:"structure"`

	// The options that determine the presentation of the y-axis label.
	PrimaryYAxisLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The sort configuration of a waterfall visual.
	SortConfiguration *WaterfallChartSortConfiguration `type:"structure"`

	// The visual palette configuration of a waterfall visual.
	VisualPalette *VisualPalette `type:"structure"`

	// The options that determine the presentation of a waterfall visual.
	WaterfallChartOptions *WaterfallChartOptions `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 WaterfallChartConfiguration) 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 WaterfallChartConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WaterfallChartConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WaterfallChartConfiguration"}
	if s.CategoryAxisLabelOptions != nil {
		if err := s.CategoryAxisLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("CategoryAxisLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.DataLabels != nil {
		if err := s.DataLabels.Validate(); err != nil {
			invalidParams.AddNested("DataLabels", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.PrimaryYAxisLabelOptions != nil {
		if err := s.PrimaryYAxisLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("PrimaryYAxisLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.SortConfiguration != nil {
		if err := s.SortConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SortConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.VisualPalette != nil {
		if err := s.VisualPalette.Validate(); err != nil {
			invalidParams.AddNested("VisualPalette", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategoryAxisDisplayOptions sets the CategoryAxisDisplayOptions field's value.
func (s *WaterfallChartConfiguration) SetCategoryAxisDisplayOptions(v *AxisDisplayOptions) *WaterfallChartConfiguration {
	s.CategoryAxisDisplayOptions = v
	return s
}

// SetCategoryAxisLabelOptions sets the CategoryAxisLabelOptions field's value.
func (s *WaterfallChartConfiguration) SetCategoryAxisLabelOptions(v *ChartAxisLabelOptions) *WaterfallChartConfiguration {
	s.CategoryAxisLabelOptions = v
	return s
}

// SetColorConfiguration sets the ColorConfiguration field's value.
func (s *WaterfallChartConfiguration) SetColorConfiguration(v *WaterfallChartColorConfiguration) *WaterfallChartConfiguration {
	s.ColorConfiguration = v
	return s
}

// SetDataLabels sets the DataLabels field's value.
func (s *WaterfallChartConfiguration) SetDataLabels(v *DataLabelOptions) *WaterfallChartConfiguration {
	s.DataLabels = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *WaterfallChartConfiguration) SetFieldWells(v *WaterfallChartFieldWells) *WaterfallChartConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *WaterfallChartConfiguration) SetInteractions(v *VisualInteractionOptions) *WaterfallChartConfiguration {
	s.Interactions = v
	return s
}

// SetLegend sets the Legend field's value.
func (s *WaterfallChartConfiguration) SetLegend(v *LegendOptions) *WaterfallChartConfiguration {
	s.Legend = v
	return s
}

// SetPrimaryYAxisDisplayOptions sets the PrimaryYAxisDisplayOptions field's value.
func (s *WaterfallChartConfiguration) SetPrimaryYAxisDisplayOptions(v *AxisDisplayOptions) *WaterfallChartConfiguration {
	s.PrimaryYAxisDisplayOptions = v
	return s
}

// SetPrimaryYAxisLabelOptions sets the PrimaryYAxisLabelOptions field's value.
func (s *WaterfallChartConfiguration) SetPrimaryYAxisLabelOptions(v *ChartAxisLabelOptions) *WaterfallChartConfiguration {
	s.PrimaryYAxisLabelOptions = v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *WaterfallChartConfiguration) SetSortConfiguration(v *WaterfallChartSortConfiguration) *WaterfallChartConfiguration {
	s.SortConfiguration = v
	return s
}

// SetVisualPalette sets the VisualPalette field's value.
func (s *WaterfallChartConfiguration) SetVisualPalette(v *VisualPalette) *WaterfallChartConfiguration {
	s.VisualPalette = v
	return s
}

// SetWaterfallChartOptions sets the WaterfallChartOptions field's value.
func (s *WaterfallChartConfiguration) SetWaterfallChartOptions(v *WaterfallChartOptions) *WaterfallChartConfiguration {
	s.WaterfallChartOptions = v
	return s
}

// The field well configuration of a waterfall visual.
type WaterfallChartFieldWells struct {
	_ struct{} `type:"structure"`

	// The field well configuration of a waterfall visual.
	WaterfallChartAggregatedFieldWells *WaterfallChartAggregatedFieldWells `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 WaterfallChartFieldWells) 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 WaterfallChartFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WaterfallChartFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WaterfallChartFieldWells"}
	if s.WaterfallChartAggregatedFieldWells != nil {
		if err := s.WaterfallChartAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("WaterfallChartAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetWaterfallChartAggregatedFieldWells sets the WaterfallChartAggregatedFieldWells field's value.
func (s *WaterfallChartFieldWells) SetWaterfallChartAggregatedFieldWells(v *WaterfallChartAggregatedFieldWells) *WaterfallChartFieldWells {
	s.WaterfallChartAggregatedFieldWells = v
	return s
}

// The color configuration for individual groups within a waterfall visual.
type WaterfallChartGroupColorConfiguration struct {
	_ struct{} `type:"structure"`

	// Defines the color for the negative bars of a waterfall chart.
	NegativeBarColor *string `type:"string"`

	// Defines the color for the positive bars of a waterfall chart.
	PositiveBarColor *string `type:"string"`

	// Defines the color for the total bars of a waterfall chart.
	TotalBarColor *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WaterfallChartGroupColorConfiguration) 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 WaterfallChartGroupColorConfiguration) GoString() string {
	return s.String()
}

// SetNegativeBarColor sets the NegativeBarColor field's value.
func (s *WaterfallChartGroupColorConfiguration) SetNegativeBarColor(v string) *WaterfallChartGroupColorConfiguration {
	s.NegativeBarColor = &v
	return s
}

// SetPositiveBarColor sets the PositiveBarColor field's value.
func (s *WaterfallChartGroupColorConfiguration) SetPositiveBarColor(v string) *WaterfallChartGroupColorConfiguration {
	s.PositiveBarColor = &v
	return s
}

// SetTotalBarColor sets the TotalBarColor field's value.
func (s *WaterfallChartGroupColorConfiguration) SetTotalBarColor(v string) *WaterfallChartGroupColorConfiguration {
	s.TotalBarColor = &v
	return s
}

// The options that determine the presentation of a waterfall visual.
type WaterfallChartOptions struct {
	_ struct{} `type:"structure"`

	// This option determines the total bar label of a waterfall visual.
	TotalBarLabel *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WaterfallChartOptions) 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 WaterfallChartOptions) GoString() string {
	return s.String()
}

// SetTotalBarLabel sets the TotalBarLabel field's value.
func (s *WaterfallChartOptions) SetTotalBarLabel(v string) *WaterfallChartOptions {
	s.TotalBarLabel = &v
	return s
}

// The sort configuration of a waterfall visual.
type WaterfallChartSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The limit on the number of bar groups that are displayed.
	BreakdownItemsLimit *ItemsLimitConfiguration `type:"structure"`

	// The sort configuration of the category fields.
	CategorySort []*FieldSortOptions `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 WaterfallChartSortConfiguration) 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 WaterfallChartSortConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WaterfallChartSortConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WaterfallChartSortConfiguration"}
	if s.CategorySort != nil {
		for i, v := range s.CategorySort {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CategorySort", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBreakdownItemsLimit sets the BreakdownItemsLimit field's value.
func (s *WaterfallChartSortConfiguration) SetBreakdownItemsLimit(v *ItemsLimitConfiguration) *WaterfallChartSortConfiguration {
	s.BreakdownItemsLimit = v
	return s
}

// SetCategorySort sets the CategorySort field's value.
func (s *WaterfallChartSortConfiguration) SetCategorySort(v []*FieldSortOptions) *WaterfallChartSortConfiguration {
	s.CategorySort = v
	return s
}

// A waterfall chart.
//
// For more information, see Using waterfall charts (https://docs.aws.amazon.com/quicksight/latest/user/waterfall-chart.html)
// in the Amazon QuickSight User Guide.
type WaterfallVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration for a waterfall visual.
	ChartConfiguration *WaterfallChartConfiguration `type:"structure"`

	// The column hierarchy that is used during drill-downs and drill-ups.
	ColumnHierarchies []*ColumnHierarchy `type:"list"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers.
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WaterfallVisual) 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 WaterfallVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WaterfallVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WaterfallVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ColumnHierarchies != nil {
		for i, v := range s.ColumnHierarchies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnHierarchies", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *WaterfallVisual) SetActions(v []*VisualCustomAction) *WaterfallVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *WaterfallVisual) SetChartConfiguration(v *WaterfallChartConfiguration) *WaterfallVisual {
	s.ChartConfiguration = v
	return s
}

// SetColumnHierarchies sets the ColumnHierarchies field's value.
func (s *WaterfallVisual) SetColumnHierarchies(v []*ColumnHierarchy) *WaterfallVisual {
	s.ColumnHierarchies = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *WaterfallVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *WaterfallVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *WaterfallVisual) SetTitle(v *VisualTitleLabelOptions) *WaterfallVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *WaterfallVisual) SetVisualId(v string) *WaterfallVisual {
	s.VisualId = &v
	return s
}

// Provides the forecast to meet the target for a particular date.
type WhatIfPointScenario struct {
	_ struct{} `type:"structure"`

	// The date that you need the forecast results for.
	//
	// Date is a required field
	Date *time.Time `type:"timestamp" required:"true"`

	// The target value that you want to meet for the provided date.
	//
	// Value is a required field
	Value *float64 `type:"double" 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 WhatIfPointScenario) 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 WhatIfPointScenario) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WhatIfPointScenario) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WhatIfPointScenario"}
	if s.Date == nil {
		invalidParams.Add(request.NewErrParamRequired("Date"))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDate sets the Date field's value.
func (s *WhatIfPointScenario) SetDate(v time.Time) *WhatIfPointScenario {
	s.Date = &v
	return s
}

// SetValue sets the Value field's value.
func (s *WhatIfPointScenario) SetValue(v float64) *WhatIfPointScenario {
	s.Value = &v
	return s
}

// Provides the forecast to meet the target for a particular date range.
type WhatIfRangeScenario struct {
	_ struct{} `type:"structure"`

	// The end date in the date range that you need the forecast results for.
	//
	// EndDate is a required field
	EndDate *time.Time `type:"timestamp" required:"true"`

	// The start date in the date range that you need the forecast results for.
	//
	// StartDate is a required field
	StartDate *time.Time `type:"timestamp" required:"true"`

	// The target value that you want to meet for the provided date range.
	//
	// Value is a required field
	Value *float64 `type:"double" 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 WhatIfRangeScenario) 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 WhatIfRangeScenario) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WhatIfRangeScenario) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WhatIfRangeScenario"}
	if s.EndDate == nil {
		invalidParams.Add(request.NewErrParamRequired("EndDate"))
	}
	if s.StartDate == nil {
		invalidParams.Add(request.NewErrParamRequired("StartDate"))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEndDate sets the EndDate field's value.
func (s *WhatIfRangeScenario) SetEndDate(v time.Time) *WhatIfRangeScenario {
	s.EndDate = &v
	return s
}

// SetStartDate sets the StartDate field's value.
func (s *WhatIfRangeScenario) SetStartDate(v time.Time) *WhatIfRangeScenario {
	s.StartDate = &v
	return s
}

// SetValue sets the Value field's value.
func (s *WhatIfRangeScenario) SetValue(v float64) *WhatIfRangeScenario {
	s.Value = &v
	return s
}

// The aggregated field wells of a word cloud.
type WordCloudAggregatedFieldWells struct {
	_ struct{} `type:"structure"`

	// The group by field well of a word cloud. Values are grouped by group by fields.
	GroupBy []*DimensionField `type:"list"`

	// The size field well of a word cloud. Values are aggregated based on group
	// by fields.
	Size []*MeasureField `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 WordCloudAggregatedFieldWells) 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 WordCloudAggregatedFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WordCloudAggregatedFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WordCloudAggregatedFieldWells"}
	if s.GroupBy != nil {
		for i, v := range s.GroupBy {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "GroupBy", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Size != nil {
		for i, v := range s.Size {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Size", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetGroupBy sets the GroupBy field's value.
func (s *WordCloudAggregatedFieldWells) SetGroupBy(v []*DimensionField) *WordCloudAggregatedFieldWells {
	s.GroupBy = v
	return s
}

// SetSize sets the Size field's value.
func (s *WordCloudAggregatedFieldWells) SetSize(v []*MeasureField) *WordCloudAggregatedFieldWells {
	s.Size = v
	return s
}

// The configuration of a word cloud visual.
type WordCloudChartConfiguration struct {
	_ struct{} `type:"structure"`

	// The label options (label text, label visibility, and sort icon visibility)
	// for the word cloud category.
	CategoryLabelOptions *ChartAxisLabelOptions `type:"structure"`

	// The field wells of the visual.
	FieldWells *WordCloudFieldWells `type:"structure"`

	// The general visual interactions setup for a visual.
	Interactions *VisualInteractionOptions `type:"structure"`

	// The sort configuration of a word cloud visual.
	SortConfiguration *WordCloudSortConfiguration `type:"structure"`

	// The options for a word cloud visual.
	WordCloudOptions *WordCloudOptions `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 WordCloudChartConfiguration) 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 WordCloudChartConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WordCloudChartConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WordCloudChartConfiguration"}
	if s.CategoryLabelOptions != nil {
		if err := s.CategoryLabelOptions.Validate(); err != nil {
			invalidParams.AddNested("CategoryLabelOptions", err.(request.ErrInvalidParams))
		}
	}
	if s.FieldWells != nil {
		if err := s.FieldWells.Validate(); err != nil {
			invalidParams.AddNested("FieldWells", err.(request.ErrInvalidParams))
		}
	}
	if s.SortConfiguration != nil {
		if err := s.SortConfiguration.Validate(); err != nil {
			invalidParams.AddNested("SortConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.WordCloudOptions != nil {
		if err := s.WordCloudOptions.Validate(); err != nil {
			invalidParams.AddNested("WordCloudOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategoryLabelOptions sets the CategoryLabelOptions field's value.
func (s *WordCloudChartConfiguration) SetCategoryLabelOptions(v *ChartAxisLabelOptions) *WordCloudChartConfiguration {
	s.CategoryLabelOptions = v
	return s
}

// SetFieldWells sets the FieldWells field's value.
func (s *WordCloudChartConfiguration) SetFieldWells(v *WordCloudFieldWells) *WordCloudChartConfiguration {
	s.FieldWells = v
	return s
}

// SetInteractions sets the Interactions field's value.
func (s *WordCloudChartConfiguration) SetInteractions(v *VisualInteractionOptions) *WordCloudChartConfiguration {
	s.Interactions = v
	return s
}

// SetSortConfiguration sets the SortConfiguration field's value.
func (s *WordCloudChartConfiguration) SetSortConfiguration(v *WordCloudSortConfiguration) *WordCloudChartConfiguration {
	s.SortConfiguration = v
	return s
}

// SetWordCloudOptions sets the WordCloudOptions field's value.
func (s *WordCloudChartConfiguration) SetWordCloudOptions(v *WordCloudOptions) *WordCloudChartConfiguration {
	s.WordCloudOptions = v
	return s
}

// The field wells of a word cloud visual.
//
// This is a union type structure. For this structure to be valid, only one
// of the attributes can be defined.
type WordCloudFieldWells struct {
	_ struct{} `type:"structure"`

	// The aggregated field wells of a word cloud.
	WordCloudAggregatedFieldWells *WordCloudAggregatedFieldWells `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 WordCloudFieldWells) 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 WordCloudFieldWells) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WordCloudFieldWells) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WordCloudFieldWells"}
	if s.WordCloudAggregatedFieldWells != nil {
		if err := s.WordCloudAggregatedFieldWells.Validate(); err != nil {
			invalidParams.AddNested("WordCloudAggregatedFieldWells", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetWordCloudAggregatedFieldWells sets the WordCloudAggregatedFieldWells field's value.
func (s *WordCloudFieldWells) SetWordCloudAggregatedFieldWells(v *WordCloudAggregatedFieldWells) *WordCloudFieldWells {
	s.WordCloudAggregatedFieldWells = v
	return s
}

// The word cloud options for a word cloud visual.
type WordCloudOptions struct {
	_ struct{} `type:"structure"`

	// The cloud layout options (fluid, normal) of a word cloud.
	CloudLayout *string `type:"string" enum:"WordCloudCloudLayout"`

	// The length limit of each word from 1-100.
	MaximumStringLength *int64 `min:"1" type:"integer"`

	// The word casing options (lower_case, existing_case) for the words in a word
	// cloud.
	WordCasing *string `type:"string" enum:"WordCloudWordCasing"`

	// The word orientation options (horizontal, horizontal_and_vertical) for the
	// words in a word cloud.
	WordOrientation *string `type:"string" enum:"WordCloudWordOrientation"`

	// The word padding options (none, small, medium, large) for the words in a
	// word cloud.
	WordPadding *string `type:"string" enum:"WordCloudWordPadding"`

	// The word scaling options (emphasize, normal) for the words in a word cloud.
	WordScaling *string `type:"string" enum:"WordCloudWordScaling"`
}

// 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 WordCloudOptions) 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 WordCloudOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WordCloudOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WordCloudOptions"}
	if s.MaximumStringLength != nil && *s.MaximumStringLength < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaximumStringLength", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCloudLayout sets the CloudLayout field's value.
func (s *WordCloudOptions) SetCloudLayout(v string) *WordCloudOptions {
	s.CloudLayout = &v
	return s
}

// SetMaximumStringLength sets the MaximumStringLength field's value.
func (s *WordCloudOptions) SetMaximumStringLength(v int64) *WordCloudOptions {
	s.MaximumStringLength = &v
	return s
}

// SetWordCasing sets the WordCasing field's value.
func (s *WordCloudOptions) SetWordCasing(v string) *WordCloudOptions {
	s.WordCasing = &v
	return s
}

// SetWordOrientation sets the WordOrientation field's value.
func (s *WordCloudOptions) SetWordOrientation(v string) *WordCloudOptions {
	s.WordOrientation = &v
	return s
}

// SetWordPadding sets the WordPadding field's value.
func (s *WordCloudOptions) SetWordPadding(v string) *WordCloudOptions {
	s.WordPadding = &v
	return s
}

// SetWordScaling sets the WordScaling field's value.
func (s *WordCloudOptions) SetWordScaling(v string) *WordCloudOptions {
	s.WordScaling = &v
	return s
}

// The sort configuration of a word cloud visual.
type WordCloudSortConfiguration struct {
	_ struct{} `type:"structure"`

	// The limit on the number of groups that are displayed in a word cloud.
	CategoryItemsLimit *ItemsLimitConfiguration `type:"structure"`

	// The sort configuration of group by fields.
	CategorySort []*FieldSortOptions `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 WordCloudSortConfiguration) 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 WordCloudSortConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WordCloudSortConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WordCloudSortConfiguration"}
	if s.CategorySort != nil {
		for i, v := range s.CategorySort {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CategorySort", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCategoryItemsLimit sets the CategoryItemsLimit field's value.
func (s *WordCloudSortConfiguration) SetCategoryItemsLimit(v *ItemsLimitConfiguration) *WordCloudSortConfiguration {
	s.CategoryItemsLimit = v
	return s
}

// SetCategorySort sets the CategorySort field's value.
func (s *WordCloudSortConfiguration) SetCategorySort(v []*FieldSortOptions) *WordCloudSortConfiguration {
	s.CategorySort = v
	return s
}

// A word cloud.
//
// For more information, see Using word clouds (https://docs.aws.amazon.com/quicksight/latest/user/word-cloud.html)
// in the Amazon QuickSight User Guide.
type WordCloudVisual struct {
	_ struct{} `type:"structure"`

	// The list of custom actions that are configured for a visual.
	Actions []*VisualCustomAction `type:"list"`

	// The configuration settings of the visual.
	ChartConfiguration *WordCloudChartConfiguration `type:"structure"`

	// The column hierarchy that is used during drill-downs and drill-ups.
	ColumnHierarchies []*ColumnHierarchy `type:"list"`

	// The subtitle that is displayed on the visual.
	Subtitle *VisualSubtitleLabelOptions `type:"structure"`

	// The title that is displayed on the visual.
	Title *VisualTitleLabelOptions `type:"structure"`

	// The unique identifier of a visual. This identifier must be unique within
	// the context of a dashboard, template, or analysis. Two dashboards, analyses,
	// or templates can have visuals with the same identifiers..
	//
	// VisualId is a required field
	VisualId *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WordCloudVisual) 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 WordCloudVisual) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *WordCloudVisual) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "WordCloudVisual"}
	if s.VisualId == nil {
		invalidParams.Add(request.NewErrParamRequired("VisualId"))
	}
	if s.VisualId != nil && len(*s.VisualId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VisualId", 1))
	}
	if s.Actions != nil {
		for i, v := range s.Actions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.ChartConfiguration != nil {
		if err := s.ChartConfiguration.Validate(); err != nil {
			invalidParams.AddNested("ChartConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.ColumnHierarchies != nil {
		for i, v := range s.ColumnHierarchies {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnHierarchies", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Subtitle != nil {
		if err := s.Subtitle.Validate(); err != nil {
			invalidParams.AddNested("Subtitle", err.(request.ErrInvalidParams))
		}
	}
	if s.Title != nil {
		if err := s.Title.Validate(); err != nil {
			invalidParams.AddNested("Title", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *WordCloudVisual) SetActions(v []*VisualCustomAction) *WordCloudVisual {
	s.Actions = v
	return s
}

// SetChartConfiguration sets the ChartConfiguration field's value.
func (s *WordCloudVisual) SetChartConfiguration(v *WordCloudChartConfiguration) *WordCloudVisual {
	s.ChartConfiguration = v
	return s
}

// SetColumnHierarchies sets the ColumnHierarchies field's value.
func (s *WordCloudVisual) SetColumnHierarchies(v []*ColumnHierarchy) *WordCloudVisual {
	s.ColumnHierarchies = v
	return s
}

// SetSubtitle sets the Subtitle field's value.
func (s *WordCloudVisual) SetSubtitle(v *VisualSubtitleLabelOptions) *WordCloudVisual {
	s.Subtitle = v
	return s
}

// SetTitle sets the Title field's value.
func (s *WordCloudVisual) SetTitle(v *VisualTitleLabelOptions) *WordCloudVisual {
	s.Title = v
	return s
}

// SetVisualId sets the VisualId field's value.
func (s *WordCloudVisual) SetVisualId(v string) *WordCloudVisual {
	s.VisualId = &v
	return s
}

// The options that are available for a single Y axis in a chart.
type YAxisOptions struct {
	_ struct{} `type:"structure"`

	// The Y axis type to be used in the chart.
	//
	// If you choose PRIMARY_Y_AXIS, the primary Y Axis is located on the leftmost
	// vertical axis of the chart.
	//
	// YAxis is a required field
	YAxis *string `type:"string" required:"true" enum:"SingleYAxisOption"`
}

// 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 YAxisOptions) 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 YAxisOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *YAxisOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "YAxisOptions"}
	if s.YAxis == nil {
		invalidParams.Add(request.NewErrParamRequired("YAxis"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetYAxis sets the YAxis field's value.
func (s *YAxisOptions) SetYAxis(v string) *YAxisOptions {
	s.YAxis = &v
	return s
}

const (
	// AggTypeSum is a AggType enum value
	AggTypeSum = "SUM"

	// AggTypeMin is a AggType enum value
	AggTypeMin = "MIN"

	// AggTypeMax is a AggType enum value
	AggTypeMax = "MAX"

	// AggTypeCount is a AggType enum value
	AggTypeCount = "COUNT"

	// AggTypeAverage is a AggType enum value
	AggTypeAverage = "AVERAGE"

	// AggTypeDistinctCount is a AggType enum value
	AggTypeDistinctCount = "DISTINCT_COUNT"

	// AggTypeStdev is a AggType enum value
	AggTypeStdev = "STDEV"

	// AggTypeStdevp is a AggType enum value
	AggTypeStdevp = "STDEVP"

	// AggTypeVar is a AggType enum value
	AggTypeVar = "VAR"

	// AggTypeVarp is a AggType enum value
	AggTypeVarp = "VARP"

	// AggTypePercentile is a AggType enum value
	AggTypePercentile = "PERCENTILE"

	// AggTypeMedian is a AggType enum value
	AggTypeMedian = "MEDIAN"

	// AggTypePtdSum is a AggType enum value
	AggTypePtdSum = "PTD_SUM"

	// AggTypePtdMin is a AggType enum value
	AggTypePtdMin = "PTD_MIN"

	// AggTypePtdMax is a AggType enum value
	AggTypePtdMax = "PTD_MAX"

	// AggTypePtdCount is a AggType enum value
	AggTypePtdCount = "PTD_COUNT"

	// AggTypePtdDistinctCount is a AggType enum value
	AggTypePtdDistinctCount = "PTD_DISTINCT_COUNT"

	// AggTypePtdAverage is a AggType enum value
	AggTypePtdAverage = "PTD_AVERAGE"

	// AggTypeColumn is a AggType enum value
	AggTypeColumn = "COLUMN"

	// AggTypeCustom is a AggType enum value
	AggTypeCustom = "CUSTOM"
)

// AggType_Values returns all elements of the AggType enum
func AggType_Values() []string {
	return []string{
		AggTypeSum,
		AggTypeMin,
		AggTypeMax,
		AggTypeCount,
		AggTypeAverage,
		AggTypeDistinctCount,
		AggTypeStdev,
		AggTypeStdevp,
		AggTypeVar,
		AggTypeVarp,
		AggTypePercentile,
		AggTypeMedian,
		AggTypePtdSum,
		AggTypePtdMin,
		AggTypePtdMax,
		AggTypePtdCount,
		AggTypePtdDistinctCount,
		AggTypePtdAverage,
		AggTypeColumn,
		AggTypeCustom,
	}
}

const (
	// AnalysisErrorTypeAccessDenied is a AnalysisErrorType enum value
	AnalysisErrorTypeAccessDenied = "ACCESS_DENIED"

	// AnalysisErrorTypeSourceNotFound is a AnalysisErrorType enum value
	AnalysisErrorTypeSourceNotFound = "SOURCE_NOT_FOUND"

	// AnalysisErrorTypeDataSetNotFound is a AnalysisErrorType enum value
	AnalysisErrorTypeDataSetNotFound = "DATA_SET_NOT_FOUND"

	// AnalysisErrorTypeInternalFailure is a AnalysisErrorType enum value
	AnalysisErrorTypeInternalFailure = "INTERNAL_FAILURE"

	// AnalysisErrorTypeParameterValueIncompatible is a AnalysisErrorType enum value
	AnalysisErrorTypeParameterValueIncompatible = "PARAMETER_VALUE_INCOMPATIBLE"

	// AnalysisErrorTypeParameterTypeInvalid is a AnalysisErrorType enum value
	AnalysisErrorTypeParameterTypeInvalid = "PARAMETER_TYPE_INVALID"

	// AnalysisErrorTypeParameterNotFound is a AnalysisErrorType enum value
	AnalysisErrorTypeParameterNotFound = "PARAMETER_NOT_FOUND"

	// AnalysisErrorTypeColumnTypeMismatch is a AnalysisErrorType enum value
	AnalysisErrorTypeColumnTypeMismatch = "COLUMN_TYPE_MISMATCH"

	// AnalysisErrorTypeColumnGeographicRoleMismatch is a AnalysisErrorType enum value
	AnalysisErrorTypeColumnGeographicRoleMismatch = "COLUMN_GEOGRAPHIC_ROLE_MISMATCH"

	// AnalysisErrorTypeColumnReplacementMissing is a AnalysisErrorType enum value
	AnalysisErrorTypeColumnReplacementMissing = "COLUMN_REPLACEMENT_MISSING"
)

// AnalysisErrorType_Values returns all elements of the AnalysisErrorType enum
func AnalysisErrorType_Values() []string {
	return []string{
		AnalysisErrorTypeAccessDenied,
		AnalysisErrorTypeSourceNotFound,
		AnalysisErrorTypeDataSetNotFound,
		AnalysisErrorTypeInternalFailure,
		AnalysisErrorTypeParameterValueIncompatible,
		AnalysisErrorTypeParameterTypeInvalid,
		AnalysisErrorTypeParameterNotFound,
		AnalysisErrorTypeColumnTypeMismatch,
		AnalysisErrorTypeColumnGeographicRoleMismatch,
		AnalysisErrorTypeColumnReplacementMissing,
	}
}

const (
	// AnalysisFilterAttributeQuicksightUser is a AnalysisFilterAttribute enum value
	AnalysisFilterAttributeQuicksightUser = "QUICKSIGHT_USER"

	// AnalysisFilterAttributeQuicksightViewerOrOwner is a AnalysisFilterAttribute enum value
	AnalysisFilterAttributeQuicksightViewerOrOwner = "QUICKSIGHT_VIEWER_OR_OWNER"

	// AnalysisFilterAttributeDirectQuicksightViewerOrOwner is a AnalysisFilterAttribute enum value
	AnalysisFilterAttributeDirectQuicksightViewerOrOwner = "DIRECT_QUICKSIGHT_VIEWER_OR_OWNER"

	// AnalysisFilterAttributeQuicksightOwner is a AnalysisFilterAttribute enum value
	AnalysisFilterAttributeQuicksightOwner = "QUICKSIGHT_OWNER"

	// AnalysisFilterAttributeDirectQuicksightOwner is a AnalysisFilterAttribute enum value
	AnalysisFilterAttributeDirectQuicksightOwner = "DIRECT_QUICKSIGHT_OWNER"

	// AnalysisFilterAttributeDirectQuicksightSoleOwner is a AnalysisFilterAttribute enum value
	AnalysisFilterAttributeDirectQuicksightSoleOwner = "DIRECT_QUICKSIGHT_SOLE_OWNER"

	// AnalysisFilterAttributeAnalysisName is a AnalysisFilterAttribute enum value
	AnalysisFilterAttributeAnalysisName = "ANALYSIS_NAME"
)

// AnalysisFilterAttribute_Values returns all elements of the AnalysisFilterAttribute enum
func AnalysisFilterAttribute_Values() []string {
	return []string{
		AnalysisFilterAttributeQuicksightUser,
		AnalysisFilterAttributeQuicksightViewerOrOwner,
		AnalysisFilterAttributeDirectQuicksightViewerOrOwner,
		AnalysisFilterAttributeQuicksightOwner,
		AnalysisFilterAttributeDirectQuicksightOwner,
		AnalysisFilterAttributeDirectQuicksightSoleOwner,
		AnalysisFilterAttributeAnalysisName,
	}
}

const (
	// AnchorOptionNow is a AnchorOption enum value
	AnchorOptionNow = "NOW"
)

// AnchorOption_Values returns all elements of the AnchorOption enum
func AnchorOption_Values() []string {
	return []string{
		AnchorOptionNow,
	}
}

const (
	// AnchorTypeToday is a AnchorType enum value
	AnchorTypeToday = "TODAY"
)

// AnchorType_Values returns all elements of the AnchorType enum
func AnchorType_Values() []string {
	return []string{
		AnchorTypeToday,
	}
}

const (
	// ArcThicknessSmall is a ArcThickness enum value
	ArcThicknessSmall = "SMALL"

	// ArcThicknessMedium is a ArcThickness enum value
	ArcThicknessMedium = "MEDIUM"

	// ArcThicknessLarge is a ArcThickness enum value
	ArcThicknessLarge = "LARGE"

	// ArcThicknessWhole is a ArcThickness enum value
	ArcThicknessWhole = "WHOLE"
)

// ArcThickness_Values returns all elements of the ArcThickness enum
func ArcThickness_Values() []string {
	return []string{
		ArcThicknessSmall,
		ArcThicknessMedium,
		ArcThicknessLarge,
		ArcThicknessWhole,
	}
}

const (
	// ArcThicknessOptionsSmall is a ArcThicknessOptions enum value
	ArcThicknessOptionsSmall = "SMALL"

	// ArcThicknessOptionsMedium is a ArcThicknessOptions enum value
	ArcThicknessOptionsMedium = "MEDIUM"

	// ArcThicknessOptionsLarge is a ArcThicknessOptions enum value
	ArcThicknessOptionsLarge = "LARGE"
)

// ArcThicknessOptions_Values returns all elements of the ArcThicknessOptions enum
func ArcThicknessOptions_Values() []string {
	return []string{
		ArcThicknessOptionsSmall,
		ArcThicknessOptionsMedium,
		ArcThicknessOptionsLarge,
	}
}

const (
	// AssetBundleExportFormatCloudformationJson is a AssetBundleExportFormat enum value
	AssetBundleExportFormatCloudformationJson = "CLOUDFORMATION_JSON"

	// AssetBundleExportFormatQuicksightJson is a AssetBundleExportFormat enum value
	AssetBundleExportFormatQuicksightJson = "QUICKSIGHT_JSON"
)

// AssetBundleExportFormat_Values returns all elements of the AssetBundleExportFormat enum
func AssetBundleExportFormat_Values() []string {
	return []string{
		AssetBundleExportFormatCloudformationJson,
		AssetBundleExportFormatQuicksightJson,
	}
}

const (
	// AssetBundleExportJobAnalysisPropertyToOverrideName is a AssetBundleExportJobAnalysisPropertyToOverride enum value
	AssetBundleExportJobAnalysisPropertyToOverrideName = "Name"
)

// AssetBundleExportJobAnalysisPropertyToOverride_Values returns all elements of the AssetBundleExportJobAnalysisPropertyToOverride enum
func AssetBundleExportJobAnalysisPropertyToOverride_Values() []string {
	return []string{
		AssetBundleExportJobAnalysisPropertyToOverrideName,
	}
}

const (
	// AssetBundleExportJobDashboardPropertyToOverrideName is a AssetBundleExportJobDashboardPropertyToOverride enum value
	AssetBundleExportJobDashboardPropertyToOverrideName = "Name"
)

// AssetBundleExportJobDashboardPropertyToOverride_Values returns all elements of the AssetBundleExportJobDashboardPropertyToOverride enum
func AssetBundleExportJobDashboardPropertyToOverride_Values() []string {
	return []string{
		AssetBundleExportJobDashboardPropertyToOverrideName,
	}
}

const (
	// AssetBundleExportJobDataSetPropertyToOverrideName is a AssetBundleExportJobDataSetPropertyToOverride enum value
	AssetBundleExportJobDataSetPropertyToOverrideName = "Name"
)

// AssetBundleExportJobDataSetPropertyToOverride_Values returns all elements of the AssetBundleExportJobDataSetPropertyToOverride enum
func AssetBundleExportJobDataSetPropertyToOverride_Values() []string {
	return []string{
		AssetBundleExportJobDataSetPropertyToOverrideName,
	}
}

const (
	// AssetBundleExportJobDataSourcePropertyToOverrideName is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverrideName = "Name"

	// AssetBundleExportJobDataSourcePropertyToOverrideDisableSsl is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverrideDisableSsl = "DisableSsl"

	// AssetBundleExportJobDataSourcePropertyToOverrideSecretArn is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverrideSecretArn = "SecretArn"

	// AssetBundleExportJobDataSourcePropertyToOverrideUsername is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverrideUsername = "Username"

	// AssetBundleExportJobDataSourcePropertyToOverridePassword is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverridePassword = "Password"

	// AssetBundleExportJobDataSourcePropertyToOverrideDomain is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverrideDomain = "Domain"

	// AssetBundleExportJobDataSourcePropertyToOverrideWorkGroup is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverrideWorkGroup = "WorkGroup"

	// AssetBundleExportJobDataSourcePropertyToOverrideHost is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverrideHost = "Host"

	// AssetBundleExportJobDataSourcePropertyToOverridePort is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverridePort = "Port"

	// AssetBundleExportJobDataSourcePropertyToOverrideDatabase is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverrideDatabase = "Database"

	// AssetBundleExportJobDataSourcePropertyToOverrideDataSetName is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverrideDataSetName = "DataSetName"

	// AssetBundleExportJobDataSourcePropertyToOverrideCatalog is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverrideCatalog = "Catalog"

	// AssetBundleExportJobDataSourcePropertyToOverrideInstanceId is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverrideInstanceId = "InstanceId"

	// AssetBundleExportJobDataSourcePropertyToOverrideClusterId is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverrideClusterId = "ClusterId"

	// AssetBundleExportJobDataSourcePropertyToOverrideManifestFileLocation is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverrideManifestFileLocation = "ManifestFileLocation"

	// AssetBundleExportJobDataSourcePropertyToOverrideWarehouse is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverrideWarehouse = "Warehouse"

	// AssetBundleExportJobDataSourcePropertyToOverrideRoleArn is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverrideRoleArn = "RoleArn"

	// AssetBundleExportJobDataSourcePropertyToOverrideProductType is a AssetBundleExportJobDataSourcePropertyToOverride enum value
	AssetBundleExportJobDataSourcePropertyToOverrideProductType = "ProductType"
)

// AssetBundleExportJobDataSourcePropertyToOverride_Values returns all elements of the AssetBundleExportJobDataSourcePropertyToOverride enum
func AssetBundleExportJobDataSourcePropertyToOverride_Values() []string {
	return []string{
		AssetBundleExportJobDataSourcePropertyToOverrideName,
		AssetBundleExportJobDataSourcePropertyToOverrideDisableSsl,
		AssetBundleExportJobDataSourcePropertyToOverrideSecretArn,
		AssetBundleExportJobDataSourcePropertyToOverrideUsername,
		AssetBundleExportJobDataSourcePropertyToOverridePassword,
		AssetBundleExportJobDataSourcePropertyToOverrideDomain,
		AssetBundleExportJobDataSourcePropertyToOverrideWorkGroup,
		AssetBundleExportJobDataSourcePropertyToOverrideHost,
		AssetBundleExportJobDataSourcePropertyToOverridePort,
		AssetBundleExportJobDataSourcePropertyToOverrideDatabase,
		AssetBundleExportJobDataSourcePropertyToOverrideDataSetName,
		AssetBundleExportJobDataSourcePropertyToOverrideCatalog,
		AssetBundleExportJobDataSourcePropertyToOverrideInstanceId,
		AssetBundleExportJobDataSourcePropertyToOverrideClusterId,
		AssetBundleExportJobDataSourcePropertyToOverrideManifestFileLocation,
		AssetBundleExportJobDataSourcePropertyToOverrideWarehouse,
		AssetBundleExportJobDataSourcePropertyToOverrideRoleArn,
		AssetBundleExportJobDataSourcePropertyToOverrideProductType,
	}
}

const (
	// AssetBundleExportJobRefreshSchedulePropertyToOverrideStartAfterDateTime is a AssetBundleExportJobRefreshSchedulePropertyToOverride enum value
	AssetBundleExportJobRefreshSchedulePropertyToOverrideStartAfterDateTime = "StartAfterDateTime"
)

// AssetBundleExportJobRefreshSchedulePropertyToOverride_Values returns all elements of the AssetBundleExportJobRefreshSchedulePropertyToOverride enum
func AssetBundleExportJobRefreshSchedulePropertyToOverride_Values() []string {
	return []string{
		AssetBundleExportJobRefreshSchedulePropertyToOverrideStartAfterDateTime,
	}
}

const (
	// AssetBundleExportJobStatusQueuedForImmediateExecution is a AssetBundleExportJobStatus enum value
	AssetBundleExportJobStatusQueuedForImmediateExecution = "QUEUED_FOR_IMMEDIATE_EXECUTION"

	// AssetBundleExportJobStatusInProgress is a AssetBundleExportJobStatus enum value
	AssetBundleExportJobStatusInProgress = "IN_PROGRESS"

	// AssetBundleExportJobStatusSuccessful is a AssetBundleExportJobStatus enum value
	AssetBundleExportJobStatusSuccessful = "SUCCESSFUL"

	// AssetBundleExportJobStatusFailed is a AssetBundleExportJobStatus enum value
	AssetBundleExportJobStatusFailed = "FAILED"
)

// AssetBundleExportJobStatus_Values returns all elements of the AssetBundleExportJobStatus enum
func AssetBundleExportJobStatus_Values() []string {
	return []string{
		AssetBundleExportJobStatusQueuedForImmediateExecution,
		AssetBundleExportJobStatusInProgress,
		AssetBundleExportJobStatusSuccessful,
		AssetBundleExportJobStatusFailed,
	}
}

const (
	// AssetBundleExportJobThemePropertyToOverrideName is a AssetBundleExportJobThemePropertyToOverride enum value
	AssetBundleExportJobThemePropertyToOverrideName = "Name"
)

// AssetBundleExportJobThemePropertyToOverride_Values returns all elements of the AssetBundleExportJobThemePropertyToOverride enum
func AssetBundleExportJobThemePropertyToOverride_Values() []string {
	return []string{
		AssetBundleExportJobThemePropertyToOverrideName,
	}
}

const (
	// AssetBundleExportJobVPCConnectionPropertyToOverrideName is a AssetBundleExportJobVPCConnectionPropertyToOverride enum value
	AssetBundleExportJobVPCConnectionPropertyToOverrideName = "Name"

	// AssetBundleExportJobVPCConnectionPropertyToOverrideDnsResolvers is a AssetBundleExportJobVPCConnectionPropertyToOverride enum value
	AssetBundleExportJobVPCConnectionPropertyToOverrideDnsResolvers = "DnsResolvers"

	// AssetBundleExportJobVPCConnectionPropertyToOverrideRoleArn is a AssetBundleExportJobVPCConnectionPropertyToOverride enum value
	AssetBundleExportJobVPCConnectionPropertyToOverrideRoleArn = "RoleArn"
)

// AssetBundleExportJobVPCConnectionPropertyToOverride_Values returns all elements of the AssetBundleExportJobVPCConnectionPropertyToOverride enum
func AssetBundleExportJobVPCConnectionPropertyToOverride_Values() []string {
	return []string{
		AssetBundleExportJobVPCConnectionPropertyToOverrideName,
		AssetBundleExportJobVPCConnectionPropertyToOverrideDnsResolvers,
		AssetBundleExportJobVPCConnectionPropertyToOverrideRoleArn,
	}
}

const (
	// AssetBundleImportFailureActionDoNothing is a AssetBundleImportFailureAction enum value
	AssetBundleImportFailureActionDoNothing = "DO_NOTHING"

	// AssetBundleImportFailureActionRollback is a AssetBundleImportFailureAction enum value
	AssetBundleImportFailureActionRollback = "ROLLBACK"
)

// AssetBundleImportFailureAction_Values returns all elements of the AssetBundleImportFailureAction enum
func AssetBundleImportFailureAction_Values() []string {
	return []string{
		AssetBundleImportFailureActionDoNothing,
		AssetBundleImportFailureActionRollback,
	}
}

const (
	// AssetBundleImportJobStatusQueuedForImmediateExecution is a AssetBundleImportJobStatus enum value
	AssetBundleImportJobStatusQueuedForImmediateExecution = "QUEUED_FOR_IMMEDIATE_EXECUTION"

	// AssetBundleImportJobStatusInProgress is a AssetBundleImportJobStatus enum value
	AssetBundleImportJobStatusInProgress = "IN_PROGRESS"

	// AssetBundleImportJobStatusSuccessful is a AssetBundleImportJobStatus enum value
	AssetBundleImportJobStatusSuccessful = "SUCCESSFUL"

	// AssetBundleImportJobStatusFailed is a AssetBundleImportJobStatus enum value
	AssetBundleImportJobStatusFailed = "FAILED"

	// AssetBundleImportJobStatusFailedRollbackInProgress is a AssetBundleImportJobStatus enum value
	AssetBundleImportJobStatusFailedRollbackInProgress = "FAILED_ROLLBACK_IN_PROGRESS"

	// AssetBundleImportJobStatusFailedRollbackCompleted is a AssetBundleImportJobStatus enum value
	AssetBundleImportJobStatusFailedRollbackCompleted = "FAILED_ROLLBACK_COMPLETED"

	// AssetBundleImportJobStatusFailedRollbackError is a AssetBundleImportJobStatus enum value
	AssetBundleImportJobStatusFailedRollbackError = "FAILED_ROLLBACK_ERROR"
)

// AssetBundleImportJobStatus_Values returns all elements of the AssetBundleImportJobStatus enum
func AssetBundleImportJobStatus_Values() []string {
	return []string{
		AssetBundleImportJobStatusQueuedForImmediateExecution,
		AssetBundleImportJobStatusInProgress,
		AssetBundleImportJobStatusSuccessful,
		AssetBundleImportJobStatusFailed,
		AssetBundleImportJobStatusFailedRollbackInProgress,
		AssetBundleImportJobStatusFailedRollbackCompleted,
		AssetBundleImportJobStatusFailedRollbackError,
	}
}

const (
	// AssignmentStatusEnabled is a AssignmentStatus enum value
	AssignmentStatusEnabled = "ENABLED"

	// AssignmentStatusDraft is a AssignmentStatus enum value
	AssignmentStatusDraft = "DRAFT"

	// AssignmentStatusDisabled is a AssignmentStatus enum value
	AssignmentStatusDisabled = "DISABLED"
)

// AssignmentStatus_Values returns all elements of the AssignmentStatus enum
func AssignmentStatus_Values() []string {
	return []string{
		AssignmentStatusEnabled,
		AssignmentStatusDraft,
		AssignmentStatusDisabled,
	}
}

const (
	// AuthenticationMethodOptionIamAndQuicksight is a AuthenticationMethodOption enum value
	AuthenticationMethodOptionIamAndQuicksight = "IAM_AND_QUICKSIGHT"

	// AuthenticationMethodOptionIamOnly is a AuthenticationMethodOption enum value
	AuthenticationMethodOptionIamOnly = "IAM_ONLY"

	// AuthenticationMethodOptionActiveDirectory is a AuthenticationMethodOption enum value
	AuthenticationMethodOptionActiveDirectory = "ACTIVE_DIRECTORY"

	// AuthenticationMethodOptionIamIdentityCenter is a AuthenticationMethodOption enum value
	AuthenticationMethodOptionIamIdentityCenter = "IAM_IDENTITY_CENTER"
)

// AuthenticationMethodOption_Values returns all elements of the AuthenticationMethodOption enum
func AuthenticationMethodOption_Values() []string {
	return []string{
		AuthenticationMethodOptionIamAndQuicksight,
		AuthenticationMethodOptionIamOnly,
		AuthenticationMethodOptionActiveDirectory,
		AuthenticationMethodOptionIamIdentityCenter,
	}
}

const (
	// AuthorSpecifiedAggregationCount is a AuthorSpecifiedAggregation enum value
	AuthorSpecifiedAggregationCount = "COUNT"

	// AuthorSpecifiedAggregationDistinctCount is a AuthorSpecifiedAggregation enum value
	AuthorSpecifiedAggregationDistinctCount = "DISTINCT_COUNT"

	// AuthorSpecifiedAggregationMin is a AuthorSpecifiedAggregation enum value
	AuthorSpecifiedAggregationMin = "MIN"

	// AuthorSpecifiedAggregationMax is a AuthorSpecifiedAggregation enum value
	AuthorSpecifiedAggregationMax = "MAX"

	// AuthorSpecifiedAggregationMedian is a AuthorSpecifiedAggregation enum value
	AuthorSpecifiedAggregationMedian = "MEDIAN"

	// AuthorSpecifiedAggregationSum is a AuthorSpecifiedAggregation enum value
	AuthorSpecifiedAggregationSum = "SUM"

	// AuthorSpecifiedAggregationAverage is a AuthorSpecifiedAggregation enum value
	AuthorSpecifiedAggregationAverage = "AVERAGE"

	// AuthorSpecifiedAggregationStdev is a AuthorSpecifiedAggregation enum value
	AuthorSpecifiedAggregationStdev = "STDEV"

	// AuthorSpecifiedAggregationStdevp is a AuthorSpecifiedAggregation enum value
	AuthorSpecifiedAggregationStdevp = "STDEVP"

	// AuthorSpecifiedAggregationVar is a AuthorSpecifiedAggregation enum value
	AuthorSpecifiedAggregationVar = "VAR"

	// AuthorSpecifiedAggregationVarp is a AuthorSpecifiedAggregation enum value
	AuthorSpecifiedAggregationVarp = "VARP"

	// AuthorSpecifiedAggregationPercentile is a AuthorSpecifiedAggregation enum value
	AuthorSpecifiedAggregationPercentile = "PERCENTILE"
)

// AuthorSpecifiedAggregation_Values returns all elements of the AuthorSpecifiedAggregation enum
func AuthorSpecifiedAggregation_Values() []string {
	return []string{
		AuthorSpecifiedAggregationCount,
		AuthorSpecifiedAggregationDistinctCount,
		AuthorSpecifiedAggregationMin,
		AuthorSpecifiedAggregationMax,
		AuthorSpecifiedAggregationMedian,
		AuthorSpecifiedAggregationSum,
		AuthorSpecifiedAggregationAverage,
		AuthorSpecifiedAggregationStdev,
		AuthorSpecifiedAggregationStdevp,
		AuthorSpecifiedAggregationVar,
		AuthorSpecifiedAggregationVarp,
		AuthorSpecifiedAggregationPercentile,
	}
}

const (
	// AxisBindingPrimaryYaxis is a AxisBinding enum value
	AxisBindingPrimaryYaxis = "PRIMARY_YAXIS"

	// AxisBindingSecondaryYaxis is a AxisBinding enum value
	AxisBindingSecondaryYaxis = "SECONDARY_YAXIS"
)

// AxisBinding_Values returns all elements of the AxisBinding enum
func AxisBinding_Values() []string {
	return []string{
		AxisBindingPrimaryYaxis,
		AxisBindingSecondaryYaxis,
	}
}

const (
	// BarChartOrientationHorizontal is a BarChartOrientation enum value
	BarChartOrientationHorizontal = "HORIZONTAL"

	// BarChartOrientationVertical is a BarChartOrientation enum value
	BarChartOrientationVertical = "VERTICAL"
)

// BarChartOrientation_Values returns all elements of the BarChartOrientation enum
func BarChartOrientation_Values() []string {
	return []string{
		BarChartOrientationHorizontal,
		BarChartOrientationVertical,
	}
}

const (
	// BarsArrangementClustered is a BarsArrangement enum value
	BarsArrangementClustered = "CLUSTERED"

	// BarsArrangementStacked is a BarsArrangement enum value
	BarsArrangementStacked = "STACKED"

	// BarsArrangementStackedPercent is a BarsArrangement enum value
	BarsArrangementStackedPercent = "STACKED_PERCENT"
)

// BarsArrangement_Values returns all elements of the BarsArrangement enum
func BarsArrangement_Values() []string {
	return []string{
		BarsArrangementClustered,
		BarsArrangementStacked,
		BarsArrangementStackedPercent,
	}
}

const (
	// BaseMapStyleTypeLightGray is a BaseMapStyleType enum value
	BaseMapStyleTypeLightGray = "LIGHT_GRAY"

	// BaseMapStyleTypeDarkGray is a BaseMapStyleType enum value
	BaseMapStyleTypeDarkGray = "DARK_GRAY"

	// BaseMapStyleTypeStreet is a BaseMapStyleType enum value
	BaseMapStyleTypeStreet = "STREET"

	// BaseMapStyleTypeImagery is a BaseMapStyleType enum value
	BaseMapStyleTypeImagery = "IMAGERY"
)

// BaseMapStyleType_Values returns all elements of the BaseMapStyleType enum
func BaseMapStyleType_Values() []string {
	return []string{
		BaseMapStyleTypeLightGray,
		BaseMapStyleTypeDarkGray,
		BaseMapStyleTypeStreet,
		BaseMapStyleTypeImagery,
	}
}

const (
	// BoxPlotFillStyleSolid is a BoxPlotFillStyle enum value
	BoxPlotFillStyleSolid = "SOLID"

	// BoxPlotFillStyleTransparent is a BoxPlotFillStyle enum value
	BoxPlotFillStyleTransparent = "TRANSPARENT"
)

// BoxPlotFillStyle_Values returns all elements of the BoxPlotFillStyle enum
func BoxPlotFillStyle_Values() []string {
	return []string{
		BoxPlotFillStyleSolid,
		BoxPlotFillStyleTransparent,
	}
}

const (
	// CategoricalAggregationFunctionCount is a CategoricalAggregationFunction enum value
	CategoricalAggregationFunctionCount = "COUNT"

	// CategoricalAggregationFunctionDistinctCount is a CategoricalAggregationFunction enum value
	CategoricalAggregationFunctionDistinctCount = "DISTINCT_COUNT"
)

// CategoricalAggregationFunction_Values returns all elements of the CategoricalAggregationFunction enum
func CategoricalAggregationFunction_Values() []string {
	return []string{
		CategoricalAggregationFunctionCount,
		CategoricalAggregationFunctionDistinctCount,
	}
}

const (
	// CategoryFilterFunctionExact is a CategoryFilterFunction enum value
	CategoryFilterFunctionExact = "EXACT"

	// CategoryFilterFunctionContains is a CategoryFilterFunction enum value
	CategoryFilterFunctionContains = "CONTAINS"
)

// CategoryFilterFunction_Values returns all elements of the CategoryFilterFunction enum
func CategoryFilterFunction_Values() []string {
	return []string{
		CategoryFilterFunctionExact,
		CategoryFilterFunctionContains,
	}
}

const (
	// CategoryFilterMatchOperatorEquals is a CategoryFilterMatchOperator enum value
	CategoryFilterMatchOperatorEquals = "EQUALS"

	// CategoryFilterMatchOperatorDoesNotEqual is a CategoryFilterMatchOperator enum value
	CategoryFilterMatchOperatorDoesNotEqual = "DOES_NOT_EQUAL"

	// CategoryFilterMatchOperatorContains is a CategoryFilterMatchOperator enum value
	CategoryFilterMatchOperatorContains = "CONTAINS"

	// CategoryFilterMatchOperatorDoesNotContain is a CategoryFilterMatchOperator enum value
	CategoryFilterMatchOperatorDoesNotContain = "DOES_NOT_CONTAIN"

	// CategoryFilterMatchOperatorStartsWith is a CategoryFilterMatchOperator enum value
	CategoryFilterMatchOperatorStartsWith = "STARTS_WITH"

	// CategoryFilterMatchOperatorEndsWith is a CategoryFilterMatchOperator enum value
	CategoryFilterMatchOperatorEndsWith = "ENDS_WITH"
)

// CategoryFilterMatchOperator_Values returns all elements of the CategoryFilterMatchOperator enum
func CategoryFilterMatchOperator_Values() []string {
	return []string{
		CategoryFilterMatchOperatorEquals,
		CategoryFilterMatchOperatorDoesNotEqual,
		CategoryFilterMatchOperatorContains,
		CategoryFilterMatchOperatorDoesNotContain,
		CategoryFilterMatchOperatorStartsWith,
		CategoryFilterMatchOperatorEndsWith,
	}
}

const (
	// CategoryFilterSelectAllOptionsFilterAllValues is a CategoryFilterSelectAllOptions enum value
	CategoryFilterSelectAllOptionsFilterAllValues = "FILTER_ALL_VALUES"
)

// CategoryFilterSelectAllOptions_Values returns all elements of the CategoryFilterSelectAllOptions enum
func CategoryFilterSelectAllOptions_Values() []string {
	return []string{
		CategoryFilterSelectAllOptionsFilterAllValues,
	}
}

const (
	// CategoryFilterTypeCustomFilter is a CategoryFilterType enum value
	CategoryFilterTypeCustomFilter = "CUSTOM_FILTER"

	// CategoryFilterTypeCustomFilterList is a CategoryFilterType enum value
	CategoryFilterTypeCustomFilterList = "CUSTOM_FILTER_LIST"

	// CategoryFilterTypeFilterList is a CategoryFilterType enum value
	CategoryFilterTypeFilterList = "FILTER_LIST"
)

// CategoryFilterType_Values returns all elements of the CategoryFilterType enum
func CategoryFilterType_Values() []string {
	return []string{
		CategoryFilterTypeCustomFilter,
		CategoryFilterTypeCustomFilterList,
		CategoryFilterTypeFilterList,
	}
}

const (
	// ColorFillTypeDiscrete is a ColorFillType enum value
	ColorFillTypeDiscrete = "DISCRETE"

	// ColorFillTypeGradient is a ColorFillType enum value
	ColorFillTypeGradient = "GRADIENT"
)

// ColorFillType_Values returns all elements of the ColorFillType enum
func ColorFillType_Values() []string {
	return []string{
		ColorFillTypeDiscrete,
		ColorFillTypeGradient,
	}
}

const (
	// ColumnDataRoleDimension is a ColumnDataRole enum value
	ColumnDataRoleDimension = "DIMENSION"

	// ColumnDataRoleMeasure is a ColumnDataRole enum value
	ColumnDataRoleMeasure = "MEASURE"
)

// ColumnDataRole_Values returns all elements of the ColumnDataRole enum
func ColumnDataRole_Values() []string {
	return []string{
		ColumnDataRoleDimension,
		ColumnDataRoleMeasure,
	}
}

const (
	// ColumnDataSubTypeFloat is a ColumnDataSubType enum value
	ColumnDataSubTypeFloat = "FLOAT"

	// ColumnDataSubTypeFixed is a ColumnDataSubType enum value
	ColumnDataSubTypeFixed = "FIXED"
)

// ColumnDataSubType_Values returns all elements of the ColumnDataSubType enum
func ColumnDataSubType_Values() []string {
	return []string{
		ColumnDataSubTypeFloat,
		ColumnDataSubTypeFixed,
	}
}

const (
	// ColumnDataTypeString is a ColumnDataType enum value
	ColumnDataTypeString = "STRING"

	// ColumnDataTypeInteger is a ColumnDataType enum value
	ColumnDataTypeInteger = "INTEGER"

	// ColumnDataTypeDecimal is a ColumnDataType enum value
	ColumnDataTypeDecimal = "DECIMAL"

	// ColumnDataTypeDatetime is a ColumnDataType enum value
	ColumnDataTypeDatetime = "DATETIME"
)

// ColumnDataType_Values returns all elements of the ColumnDataType enum
func ColumnDataType_Values() []string {
	return []string{
		ColumnDataTypeString,
		ColumnDataTypeInteger,
		ColumnDataTypeDecimal,
		ColumnDataTypeDatetime,
	}
}

const (
	// ColumnOrderingTypeGreaterIsBetter is a ColumnOrderingType enum value
	ColumnOrderingTypeGreaterIsBetter = "GREATER_IS_BETTER"

	// ColumnOrderingTypeLesserIsBetter is a ColumnOrderingType enum value
	ColumnOrderingTypeLesserIsBetter = "LESSER_IS_BETTER"

	// ColumnOrderingTypeSpecified is a ColumnOrderingType enum value
	ColumnOrderingTypeSpecified = "SPECIFIED"
)

// ColumnOrderingType_Values returns all elements of the ColumnOrderingType enum
func ColumnOrderingType_Values() []string {
	return []string{
		ColumnOrderingTypeGreaterIsBetter,
		ColumnOrderingTypeLesserIsBetter,
		ColumnOrderingTypeSpecified,
	}
}

const (
	// ColumnRoleDimension is a ColumnRole enum value
	ColumnRoleDimension = "DIMENSION"

	// ColumnRoleMeasure is a ColumnRole enum value
	ColumnRoleMeasure = "MEASURE"
)

// ColumnRole_Values returns all elements of the ColumnRole enum
func ColumnRole_Values() []string {
	return []string{
		ColumnRoleDimension,
		ColumnRoleMeasure,
	}
}

const (
	// ColumnTagNameColumnGeographicRole is a ColumnTagName enum value
	ColumnTagNameColumnGeographicRole = "COLUMN_GEOGRAPHIC_ROLE"

	// ColumnTagNameColumnDescription is a ColumnTagName enum value
	ColumnTagNameColumnDescription = "COLUMN_DESCRIPTION"
)

// ColumnTagName_Values returns all elements of the ColumnTagName enum
func ColumnTagName_Values() []string {
	return []string{
		ColumnTagNameColumnGeographicRole,
		ColumnTagNameColumnDescription,
	}
}

const (
	// ComparisonMethodDifference is a ComparisonMethod enum value
	ComparisonMethodDifference = "DIFFERENCE"

	// ComparisonMethodPercentDifference is a ComparisonMethod enum value
	ComparisonMethodPercentDifference = "PERCENT_DIFFERENCE"

	// ComparisonMethodPercent is a ComparisonMethod enum value
	ComparisonMethodPercent = "PERCENT"
)

// ComparisonMethod_Values returns all elements of the ComparisonMethod enum
func ComparisonMethod_Values() []string {
	return []string{
		ComparisonMethodDifference,
		ComparisonMethodPercentDifference,
		ComparisonMethodPercent,
	}
}

const (
	// ComparisonMethodTypeDiff is a ComparisonMethodType enum value
	ComparisonMethodTypeDiff = "DIFF"

	// ComparisonMethodTypePercDiff is a ComparisonMethodType enum value
	ComparisonMethodTypePercDiff = "PERC_DIFF"

	// ComparisonMethodTypeDiffAsPerc is a ComparisonMethodType enum value
	ComparisonMethodTypeDiffAsPerc = "DIFF_AS_PERC"

	// ComparisonMethodTypePopCurrentDiffAsPerc is a ComparisonMethodType enum value
	ComparisonMethodTypePopCurrentDiffAsPerc = "POP_CURRENT_DIFF_AS_PERC"

	// ComparisonMethodTypePopCurrentDiff is a ComparisonMethodType enum value
	ComparisonMethodTypePopCurrentDiff = "POP_CURRENT_DIFF"

	// ComparisonMethodTypePopOvertimeDiffAsPerc is a ComparisonMethodType enum value
	ComparisonMethodTypePopOvertimeDiffAsPerc = "POP_OVERTIME_DIFF_AS_PERC"

	// ComparisonMethodTypePopOvertimeDiff is a ComparisonMethodType enum value
	ComparisonMethodTypePopOvertimeDiff = "POP_OVERTIME_DIFF"

	// ComparisonMethodTypePercentOfTotal is a ComparisonMethodType enum value
	ComparisonMethodTypePercentOfTotal = "PERCENT_OF_TOTAL"

	// ComparisonMethodTypeRunningSum is a ComparisonMethodType enum value
	ComparisonMethodTypeRunningSum = "RUNNING_SUM"

	// ComparisonMethodTypeMovingAverage is a ComparisonMethodType enum value
	ComparisonMethodTypeMovingAverage = "MOVING_AVERAGE"
)

// ComparisonMethodType_Values returns all elements of the ComparisonMethodType enum
func ComparisonMethodType_Values() []string {
	return []string{
		ComparisonMethodTypeDiff,
		ComparisonMethodTypePercDiff,
		ComparisonMethodTypeDiffAsPerc,
		ComparisonMethodTypePopCurrentDiffAsPerc,
		ComparisonMethodTypePopCurrentDiff,
		ComparisonMethodTypePopOvertimeDiffAsPerc,
		ComparisonMethodTypePopOvertimeDiff,
		ComparisonMethodTypePercentOfTotal,
		ComparisonMethodTypeRunningSum,
		ComparisonMethodTypeMovingAverage,
	}
}

const (
	// ConditionalFormattingIconDisplayOptionIconOnly is a ConditionalFormattingIconDisplayOption enum value
	ConditionalFormattingIconDisplayOptionIconOnly = "ICON_ONLY"
)

// ConditionalFormattingIconDisplayOption_Values returns all elements of the ConditionalFormattingIconDisplayOption enum
func ConditionalFormattingIconDisplayOption_Values() []string {
	return []string{
		ConditionalFormattingIconDisplayOptionIconOnly,
	}
}

const (
	// ConditionalFormattingIconSetTypePlusMinus is a ConditionalFormattingIconSetType enum value
	ConditionalFormattingIconSetTypePlusMinus = "PLUS_MINUS"

	// ConditionalFormattingIconSetTypeCheckX is a ConditionalFormattingIconSetType enum value
	ConditionalFormattingIconSetTypeCheckX = "CHECK_X"

	// ConditionalFormattingIconSetTypeThreeColorArrow is a ConditionalFormattingIconSetType enum value
	ConditionalFormattingIconSetTypeThreeColorArrow = "THREE_COLOR_ARROW"

	// ConditionalFormattingIconSetTypeThreeGrayArrow is a ConditionalFormattingIconSetType enum value
	ConditionalFormattingIconSetTypeThreeGrayArrow = "THREE_GRAY_ARROW"

	// ConditionalFormattingIconSetTypeCaretUpMinusDown is a ConditionalFormattingIconSetType enum value
	ConditionalFormattingIconSetTypeCaretUpMinusDown = "CARET_UP_MINUS_DOWN"

	// ConditionalFormattingIconSetTypeThreeShape is a ConditionalFormattingIconSetType enum value
	ConditionalFormattingIconSetTypeThreeShape = "THREE_SHAPE"

	// ConditionalFormattingIconSetTypeThreeCircle is a ConditionalFormattingIconSetType enum value
	ConditionalFormattingIconSetTypeThreeCircle = "THREE_CIRCLE"

	// ConditionalFormattingIconSetTypeFlags is a ConditionalFormattingIconSetType enum value
	ConditionalFormattingIconSetTypeFlags = "FLAGS"

	// ConditionalFormattingIconSetTypeBars is a ConditionalFormattingIconSetType enum value
	ConditionalFormattingIconSetTypeBars = "BARS"

	// ConditionalFormattingIconSetTypeFourColorArrow is a ConditionalFormattingIconSetType enum value
	ConditionalFormattingIconSetTypeFourColorArrow = "FOUR_COLOR_ARROW"

	// ConditionalFormattingIconSetTypeFourGrayArrow is a ConditionalFormattingIconSetType enum value
	ConditionalFormattingIconSetTypeFourGrayArrow = "FOUR_GRAY_ARROW"
)

// ConditionalFormattingIconSetType_Values returns all elements of the ConditionalFormattingIconSetType enum
func ConditionalFormattingIconSetType_Values() []string {
	return []string{
		ConditionalFormattingIconSetTypePlusMinus,
		ConditionalFormattingIconSetTypeCheckX,
		ConditionalFormattingIconSetTypeThreeColorArrow,
		ConditionalFormattingIconSetTypeThreeGrayArrow,
		ConditionalFormattingIconSetTypeCaretUpMinusDown,
		ConditionalFormattingIconSetTypeThreeShape,
		ConditionalFormattingIconSetTypeThreeCircle,
		ConditionalFormattingIconSetTypeFlags,
		ConditionalFormattingIconSetTypeBars,
		ConditionalFormattingIconSetTypeFourColorArrow,
		ConditionalFormattingIconSetTypeFourGrayArrow,
	}
}

const (
	// ConstantTypeSingular is a ConstantType enum value
	ConstantTypeSingular = "SINGULAR"

	// ConstantTypeRange is a ConstantType enum value
	ConstantTypeRange = "RANGE"

	// ConstantTypeCollective is a ConstantType enum value
	ConstantTypeCollective = "COLLECTIVE"
)

// ConstantType_Values returns all elements of the ConstantType enum
func ConstantType_Values() []string {
	return []string{
		ConstantTypeSingular,
		ConstantTypeRange,
		ConstantTypeCollective,
	}
}

const (
	// ContributionAnalysisDirectionIncrease is a ContributionAnalysisDirection enum value
	ContributionAnalysisDirectionIncrease = "INCREASE"

	// ContributionAnalysisDirectionDecrease is a ContributionAnalysisDirection enum value
	ContributionAnalysisDirectionDecrease = "DECREASE"

	// ContributionAnalysisDirectionNeutral is a ContributionAnalysisDirection enum value
	ContributionAnalysisDirectionNeutral = "NEUTRAL"
)

// ContributionAnalysisDirection_Values returns all elements of the ContributionAnalysisDirection enum
func ContributionAnalysisDirection_Values() []string {
	return []string{
		ContributionAnalysisDirectionIncrease,
		ContributionAnalysisDirectionDecrease,
		ContributionAnalysisDirectionNeutral,
	}
}

const (
	// ContributionAnalysisSortTypeAbsoluteDifference is a ContributionAnalysisSortType enum value
	ContributionAnalysisSortTypeAbsoluteDifference = "ABSOLUTE_DIFFERENCE"

	// ContributionAnalysisSortTypeContributionPercentage is a ContributionAnalysisSortType enum value
	ContributionAnalysisSortTypeContributionPercentage = "CONTRIBUTION_PERCENTAGE"

	// ContributionAnalysisSortTypeDeviationFromExpected is a ContributionAnalysisSortType enum value
	ContributionAnalysisSortTypeDeviationFromExpected = "DEVIATION_FROM_EXPECTED"

	// ContributionAnalysisSortTypePercentageDifference is a ContributionAnalysisSortType enum value
	ContributionAnalysisSortTypePercentageDifference = "PERCENTAGE_DIFFERENCE"
)

// ContributionAnalysisSortType_Values returns all elements of the ContributionAnalysisSortType enum
func ContributionAnalysisSortType_Values() []string {
	return []string{
		ContributionAnalysisSortTypeAbsoluteDifference,
		ContributionAnalysisSortTypeContributionPercentage,
		ContributionAnalysisSortTypeDeviationFromExpected,
		ContributionAnalysisSortTypePercentageDifference,
	}
}

const (
	// CrossDatasetTypesAllDatasets is a CrossDatasetTypes enum value
	CrossDatasetTypesAllDatasets = "ALL_DATASETS"

	// CrossDatasetTypesSingleDataset is a CrossDatasetTypes enum value
	CrossDatasetTypesSingleDataset = "SINGLE_DATASET"
)

// CrossDatasetTypes_Values returns all elements of the CrossDatasetTypes enum
func CrossDatasetTypes_Values() []string {
	return []string{
		CrossDatasetTypesAllDatasets,
		CrossDatasetTypesSingleDataset,
	}
}

const (
	// CustomContentImageScalingConfigurationFitToHeight is a CustomContentImageScalingConfiguration enum value
	CustomContentImageScalingConfigurationFitToHeight = "FIT_TO_HEIGHT"

	// CustomContentImageScalingConfigurationFitToWidth is a CustomContentImageScalingConfiguration enum value
	CustomContentImageScalingConfigurationFitToWidth = "FIT_TO_WIDTH"

	// CustomContentImageScalingConfigurationDoNotScale is a CustomContentImageScalingConfiguration enum value
	CustomContentImageScalingConfigurationDoNotScale = "DO_NOT_SCALE"

	// CustomContentImageScalingConfigurationScaleToVisual is a CustomContentImageScalingConfiguration enum value
	CustomContentImageScalingConfigurationScaleToVisual = "SCALE_TO_VISUAL"
)

// CustomContentImageScalingConfiguration_Values returns all elements of the CustomContentImageScalingConfiguration enum
func CustomContentImageScalingConfiguration_Values() []string {
	return []string{
		CustomContentImageScalingConfigurationFitToHeight,
		CustomContentImageScalingConfigurationFitToWidth,
		CustomContentImageScalingConfigurationDoNotScale,
		CustomContentImageScalingConfigurationScaleToVisual,
	}
}

const (
	// CustomContentTypeImage is a CustomContentType enum value
	CustomContentTypeImage = "IMAGE"

	// CustomContentTypeOtherEmbeddedContent is a CustomContentType enum value
	CustomContentTypeOtherEmbeddedContent = "OTHER_EMBEDDED_CONTENT"
)

// CustomContentType_Values returns all elements of the CustomContentType enum
func CustomContentType_Values() []string {
	return []string{
		CustomContentTypeImage,
		CustomContentTypeOtherEmbeddedContent,
	}
}

const (
	// DashboardBehaviorEnabled is a DashboardBehavior enum value
	DashboardBehaviorEnabled = "ENABLED"

	// DashboardBehaviorDisabled is a DashboardBehavior enum value
	DashboardBehaviorDisabled = "DISABLED"
)

// DashboardBehavior_Values returns all elements of the DashboardBehavior enum
func DashboardBehavior_Values() []string {
	return []string{
		DashboardBehaviorEnabled,
		DashboardBehaviorDisabled,
	}
}

const (
	// DashboardErrorTypeAccessDenied is a DashboardErrorType enum value
	DashboardErrorTypeAccessDenied = "ACCESS_DENIED"

	// DashboardErrorTypeSourceNotFound is a DashboardErrorType enum value
	DashboardErrorTypeSourceNotFound = "SOURCE_NOT_FOUND"

	// DashboardErrorTypeDataSetNotFound is a DashboardErrorType enum value
	DashboardErrorTypeDataSetNotFound = "DATA_SET_NOT_FOUND"

	// DashboardErrorTypeInternalFailure is a DashboardErrorType enum value
	DashboardErrorTypeInternalFailure = "INTERNAL_FAILURE"

	// DashboardErrorTypeParameterValueIncompatible is a DashboardErrorType enum value
	DashboardErrorTypeParameterValueIncompatible = "PARAMETER_VALUE_INCOMPATIBLE"

	// DashboardErrorTypeParameterTypeInvalid is a DashboardErrorType enum value
	DashboardErrorTypeParameterTypeInvalid = "PARAMETER_TYPE_INVALID"

	// DashboardErrorTypeParameterNotFound is a DashboardErrorType enum value
	DashboardErrorTypeParameterNotFound = "PARAMETER_NOT_FOUND"

	// DashboardErrorTypeColumnTypeMismatch is a DashboardErrorType enum value
	DashboardErrorTypeColumnTypeMismatch = "COLUMN_TYPE_MISMATCH"

	// DashboardErrorTypeColumnGeographicRoleMismatch is a DashboardErrorType enum value
	DashboardErrorTypeColumnGeographicRoleMismatch = "COLUMN_GEOGRAPHIC_ROLE_MISMATCH"

	// DashboardErrorTypeColumnReplacementMissing is a DashboardErrorType enum value
	DashboardErrorTypeColumnReplacementMissing = "COLUMN_REPLACEMENT_MISSING"
)

// DashboardErrorType_Values returns all elements of the DashboardErrorType enum
func DashboardErrorType_Values() []string {
	return []string{
		DashboardErrorTypeAccessDenied,
		DashboardErrorTypeSourceNotFound,
		DashboardErrorTypeDataSetNotFound,
		DashboardErrorTypeInternalFailure,
		DashboardErrorTypeParameterValueIncompatible,
		DashboardErrorTypeParameterTypeInvalid,
		DashboardErrorTypeParameterNotFound,
		DashboardErrorTypeColumnTypeMismatch,
		DashboardErrorTypeColumnGeographicRoleMismatch,
		DashboardErrorTypeColumnReplacementMissing,
	}
}

const (
	// DashboardFilterAttributeQuicksightUser is a DashboardFilterAttribute enum value
	DashboardFilterAttributeQuicksightUser = "QUICKSIGHT_USER"

	// DashboardFilterAttributeQuicksightViewerOrOwner is a DashboardFilterAttribute enum value
	DashboardFilterAttributeQuicksightViewerOrOwner = "QUICKSIGHT_VIEWER_OR_OWNER"

	// DashboardFilterAttributeDirectQuicksightViewerOrOwner is a DashboardFilterAttribute enum value
	DashboardFilterAttributeDirectQuicksightViewerOrOwner = "DIRECT_QUICKSIGHT_VIEWER_OR_OWNER"

	// DashboardFilterAttributeQuicksightOwner is a DashboardFilterAttribute enum value
	DashboardFilterAttributeQuicksightOwner = "QUICKSIGHT_OWNER"

	// DashboardFilterAttributeDirectQuicksightOwner is a DashboardFilterAttribute enum value
	DashboardFilterAttributeDirectQuicksightOwner = "DIRECT_QUICKSIGHT_OWNER"

	// DashboardFilterAttributeDirectQuicksightSoleOwner is a DashboardFilterAttribute enum value
	DashboardFilterAttributeDirectQuicksightSoleOwner = "DIRECT_QUICKSIGHT_SOLE_OWNER"

	// DashboardFilterAttributeDashboardName is a DashboardFilterAttribute enum value
	DashboardFilterAttributeDashboardName = "DASHBOARD_NAME"
)

// DashboardFilterAttribute_Values returns all elements of the DashboardFilterAttribute enum
func DashboardFilterAttribute_Values() []string {
	return []string{
		DashboardFilterAttributeQuicksightUser,
		DashboardFilterAttributeQuicksightViewerOrOwner,
		DashboardFilterAttributeDirectQuicksightViewerOrOwner,
		DashboardFilterAttributeQuicksightOwner,
		DashboardFilterAttributeDirectQuicksightOwner,
		DashboardFilterAttributeDirectQuicksightSoleOwner,
		DashboardFilterAttributeDashboardName,
	}
}

const (
	// DashboardUIStateExpanded is a DashboardUIState enum value
	DashboardUIStateExpanded = "EXPANDED"

	// DashboardUIStateCollapsed is a DashboardUIState enum value
	DashboardUIStateCollapsed = "COLLAPSED"
)

// DashboardUIState_Values returns all elements of the DashboardUIState enum
func DashboardUIState_Values() []string {
	return []string{
		DashboardUIStateExpanded,
		DashboardUIStateCollapsed,
	}
}

const (
	// DataLabelContentValue is a DataLabelContent enum value
	DataLabelContentValue = "VALUE"

	// DataLabelContentPercent is a DataLabelContent enum value
	DataLabelContentPercent = "PERCENT"

	// DataLabelContentValueAndPercent is a DataLabelContent enum value
	DataLabelContentValueAndPercent = "VALUE_AND_PERCENT"
)

// DataLabelContent_Values returns all elements of the DataLabelContent enum
func DataLabelContent_Values() []string {
	return []string{
		DataLabelContentValue,
		DataLabelContentPercent,
		DataLabelContentValueAndPercent,
	}
}

const (
	// DataLabelOverlapDisableOverlap is a DataLabelOverlap enum value
	DataLabelOverlapDisableOverlap = "DISABLE_OVERLAP"

	// DataLabelOverlapEnableOverlap is a DataLabelOverlap enum value
	DataLabelOverlapEnableOverlap = "ENABLE_OVERLAP"
)

// DataLabelOverlap_Values returns all elements of the DataLabelOverlap enum
func DataLabelOverlap_Values() []string {
	return []string{
		DataLabelOverlapDisableOverlap,
		DataLabelOverlapEnableOverlap,
	}
}

const (
	// DataLabelPositionInside is a DataLabelPosition enum value
	DataLabelPositionInside = "INSIDE"

	// DataLabelPositionOutside is a DataLabelPosition enum value
	DataLabelPositionOutside = "OUTSIDE"

	// DataLabelPositionLeft is a DataLabelPosition enum value
	DataLabelPositionLeft = "LEFT"

	// DataLabelPositionTop is a DataLabelPosition enum value
	DataLabelPositionTop = "TOP"

	// DataLabelPositionBottom is a DataLabelPosition enum value
	DataLabelPositionBottom = "BOTTOM"

	// DataLabelPositionRight is a DataLabelPosition enum value
	DataLabelPositionRight = "RIGHT"
)

// DataLabelPosition_Values returns all elements of the DataLabelPosition enum
func DataLabelPosition_Values() []string {
	return []string{
		DataLabelPositionInside,
		DataLabelPositionOutside,
		DataLabelPositionLeft,
		DataLabelPositionTop,
		DataLabelPositionBottom,
		DataLabelPositionRight,
	}
}

const (
	// DataSetFilterAttributeQuicksightViewerOrOwner is a DataSetFilterAttribute enum value
	DataSetFilterAttributeQuicksightViewerOrOwner = "QUICKSIGHT_VIEWER_OR_OWNER"

	// DataSetFilterAttributeQuicksightOwner is a DataSetFilterAttribute enum value
	DataSetFilterAttributeQuicksightOwner = "QUICKSIGHT_OWNER"

	// DataSetFilterAttributeDirectQuicksightViewerOrOwner is a DataSetFilterAttribute enum value
	DataSetFilterAttributeDirectQuicksightViewerOrOwner = "DIRECT_QUICKSIGHT_VIEWER_OR_OWNER"

	// DataSetFilterAttributeDirectQuicksightOwner is a DataSetFilterAttribute enum value
	DataSetFilterAttributeDirectQuicksightOwner = "DIRECT_QUICKSIGHT_OWNER"

	// DataSetFilterAttributeDirectQuicksightSoleOwner is a DataSetFilterAttribute enum value
	DataSetFilterAttributeDirectQuicksightSoleOwner = "DIRECT_QUICKSIGHT_SOLE_OWNER"

	// DataSetFilterAttributeDatasetName is a DataSetFilterAttribute enum value
	DataSetFilterAttributeDatasetName = "DATASET_NAME"
)

// DataSetFilterAttribute_Values returns all elements of the DataSetFilterAttribute enum
func DataSetFilterAttribute_Values() []string {
	return []string{
		DataSetFilterAttributeQuicksightViewerOrOwner,
		DataSetFilterAttributeQuicksightOwner,
		DataSetFilterAttributeDirectQuicksightViewerOrOwner,
		DataSetFilterAttributeDirectQuicksightOwner,
		DataSetFilterAttributeDirectQuicksightSoleOwner,
		DataSetFilterAttributeDatasetName,
	}
}

const (
	// DataSetImportModeSpice is a DataSetImportMode enum value
	DataSetImportModeSpice = "SPICE"

	// DataSetImportModeDirectQuery is a DataSetImportMode enum value
	DataSetImportModeDirectQuery = "DIRECT_QUERY"
)

// DataSetImportMode_Values returns all elements of the DataSetImportMode enum
func DataSetImportMode_Values() []string {
	return []string{
		DataSetImportModeSpice,
		DataSetImportModeDirectQuery,
	}
}

const (
	// DataSourceErrorInfoTypeAccessDenied is a DataSourceErrorInfoType enum value
	DataSourceErrorInfoTypeAccessDenied = "ACCESS_DENIED"

	// DataSourceErrorInfoTypeCopySourceNotFound is a DataSourceErrorInfoType enum value
	DataSourceErrorInfoTypeCopySourceNotFound = "COPY_SOURCE_NOT_FOUND"

	// DataSourceErrorInfoTypeTimeout is a DataSourceErrorInfoType enum value
	DataSourceErrorInfoTypeTimeout = "TIMEOUT"

	// DataSourceErrorInfoTypeEngineVersionNotSupported is a DataSourceErrorInfoType enum value
	DataSourceErrorInfoTypeEngineVersionNotSupported = "ENGINE_VERSION_NOT_SUPPORTED"

	// DataSourceErrorInfoTypeUnknownHost is a DataSourceErrorInfoType enum value
	DataSourceErrorInfoTypeUnknownHost = "UNKNOWN_HOST"

	// DataSourceErrorInfoTypeGenericSqlFailure is a DataSourceErrorInfoType enum value
	DataSourceErrorInfoTypeGenericSqlFailure = "GENERIC_SQL_FAILURE"

	// DataSourceErrorInfoTypeConflict is a DataSourceErrorInfoType enum value
	DataSourceErrorInfoTypeConflict = "CONFLICT"

	// DataSourceErrorInfoTypeUnknown is a DataSourceErrorInfoType enum value
	DataSourceErrorInfoTypeUnknown = "UNKNOWN"
)

// DataSourceErrorInfoType_Values returns all elements of the DataSourceErrorInfoType enum
func DataSourceErrorInfoType_Values() []string {
	return []string{
		DataSourceErrorInfoTypeAccessDenied,
		DataSourceErrorInfoTypeCopySourceNotFound,
		DataSourceErrorInfoTypeTimeout,
		DataSourceErrorInfoTypeEngineVersionNotSupported,
		DataSourceErrorInfoTypeUnknownHost,
		DataSourceErrorInfoTypeGenericSqlFailure,
		DataSourceErrorInfoTypeConflict,
		DataSourceErrorInfoTypeUnknown,
	}
}

const (
	// DataSourceFilterAttributeDirectQuicksightViewerOrOwner is a DataSourceFilterAttribute enum value
	DataSourceFilterAttributeDirectQuicksightViewerOrOwner = "DIRECT_QUICKSIGHT_VIEWER_OR_OWNER"

	// DataSourceFilterAttributeDirectQuicksightOwner is a DataSourceFilterAttribute enum value
	DataSourceFilterAttributeDirectQuicksightOwner = "DIRECT_QUICKSIGHT_OWNER"

	// DataSourceFilterAttributeDirectQuicksightSoleOwner is a DataSourceFilterAttribute enum value
	DataSourceFilterAttributeDirectQuicksightSoleOwner = "DIRECT_QUICKSIGHT_SOLE_OWNER"

	// DataSourceFilterAttributeDatasourceName is a DataSourceFilterAttribute enum value
	DataSourceFilterAttributeDatasourceName = "DATASOURCE_NAME"
)

// DataSourceFilterAttribute_Values returns all elements of the DataSourceFilterAttribute enum
func DataSourceFilterAttribute_Values() []string {
	return []string{
		DataSourceFilterAttributeDirectQuicksightViewerOrOwner,
		DataSourceFilterAttributeDirectQuicksightOwner,
		DataSourceFilterAttributeDirectQuicksightSoleOwner,
		DataSourceFilterAttributeDatasourceName,
	}
}

const (
	// DataSourceTypeAdobeAnalytics is a DataSourceType enum value
	DataSourceTypeAdobeAnalytics = "ADOBE_ANALYTICS"

	// DataSourceTypeAmazonElasticsearch is a DataSourceType enum value
	DataSourceTypeAmazonElasticsearch = "AMAZON_ELASTICSEARCH"

	// DataSourceTypeAthena is a DataSourceType enum value
	DataSourceTypeAthena = "ATHENA"

	// DataSourceTypeAurora is a DataSourceType enum value
	DataSourceTypeAurora = "AURORA"

	// DataSourceTypeAuroraPostgresql is a DataSourceType enum value
	DataSourceTypeAuroraPostgresql = "AURORA_POSTGRESQL"

	// DataSourceTypeAwsIotAnalytics is a DataSourceType enum value
	DataSourceTypeAwsIotAnalytics = "AWS_IOT_ANALYTICS"

	// DataSourceTypeGithub is a DataSourceType enum value
	DataSourceTypeGithub = "GITHUB"

	// DataSourceTypeJira is a DataSourceType enum value
	DataSourceTypeJira = "JIRA"

	// DataSourceTypeMariadb is a DataSourceType enum value
	DataSourceTypeMariadb = "MARIADB"

	// DataSourceTypeMysql is a DataSourceType enum value
	DataSourceTypeMysql = "MYSQL"

	// DataSourceTypeOracle is a DataSourceType enum value
	DataSourceTypeOracle = "ORACLE"

	// DataSourceTypePostgresql is a DataSourceType enum value
	DataSourceTypePostgresql = "POSTGRESQL"

	// DataSourceTypePresto is a DataSourceType enum value
	DataSourceTypePresto = "PRESTO"

	// DataSourceTypeRedshift is a DataSourceType enum value
	DataSourceTypeRedshift = "REDSHIFT"

	// DataSourceTypeS3 is a DataSourceType enum value
	DataSourceTypeS3 = "S3"

	// DataSourceTypeSalesforce is a DataSourceType enum value
	DataSourceTypeSalesforce = "SALESFORCE"

	// DataSourceTypeServicenow is a DataSourceType enum value
	DataSourceTypeServicenow = "SERVICENOW"

	// DataSourceTypeSnowflake is a DataSourceType enum value
	DataSourceTypeSnowflake = "SNOWFLAKE"

	// DataSourceTypeSpark is a DataSourceType enum value
	DataSourceTypeSpark = "SPARK"

	// DataSourceTypeSqlserver is a DataSourceType enum value
	DataSourceTypeSqlserver = "SQLSERVER"

	// DataSourceTypeTeradata is a DataSourceType enum value
	DataSourceTypeTeradata = "TERADATA"

	// DataSourceTypeTwitter is a DataSourceType enum value
	DataSourceTypeTwitter = "TWITTER"

	// DataSourceTypeTimestream is a DataSourceType enum value
	DataSourceTypeTimestream = "TIMESTREAM"

	// DataSourceTypeAmazonOpensearch is a DataSourceType enum value
	DataSourceTypeAmazonOpensearch = "AMAZON_OPENSEARCH"

	// DataSourceTypeExasol is a DataSourceType enum value
	DataSourceTypeExasol = "EXASOL"

	// DataSourceTypeDatabricks is a DataSourceType enum value
	DataSourceTypeDatabricks = "DATABRICKS"

	// DataSourceTypeStarburst is a DataSourceType enum value
	DataSourceTypeStarburst = "STARBURST"

	// DataSourceTypeTrino is a DataSourceType enum value
	DataSourceTypeTrino = "TRINO"

	// DataSourceTypeBigquery is a DataSourceType enum value
	DataSourceTypeBigquery = "BIGQUERY"
)

// DataSourceType_Values returns all elements of the DataSourceType enum
func DataSourceType_Values() []string {
	return []string{
		DataSourceTypeAdobeAnalytics,
		DataSourceTypeAmazonElasticsearch,
		DataSourceTypeAthena,
		DataSourceTypeAurora,
		DataSourceTypeAuroraPostgresql,
		DataSourceTypeAwsIotAnalytics,
		DataSourceTypeGithub,
		DataSourceTypeJira,
		DataSourceTypeMariadb,
		DataSourceTypeMysql,
		DataSourceTypeOracle,
		DataSourceTypePostgresql,
		DataSourceTypePresto,
		DataSourceTypeRedshift,
		DataSourceTypeS3,
		DataSourceTypeSalesforce,
		DataSourceTypeServicenow,
		DataSourceTypeSnowflake,
		DataSourceTypeSpark,
		DataSourceTypeSqlserver,
		DataSourceTypeTeradata,
		DataSourceTypeTwitter,
		DataSourceTypeTimestream,
		DataSourceTypeAmazonOpensearch,
		DataSourceTypeExasol,
		DataSourceTypeDatabricks,
		DataSourceTypeStarburst,
		DataSourceTypeTrino,
		DataSourceTypeBigquery,
	}
}

// The value type of the parameter. The value type is used to validate the parameter
// before it is evaluated.
const (
	// DatasetParameterValueTypeMultiValued is a DatasetParameterValueType enum value
	DatasetParameterValueTypeMultiValued = "MULTI_VALUED"

	// DatasetParameterValueTypeSingleValued is a DatasetParameterValueType enum value
	DatasetParameterValueTypeSingleValued = "SINGLE_VALUED"
)

// DatasetParameterValueType_Values returns all elements of the DatasetParameterValueType enum
func DatasetParameterValueType_Values() []string {
	return []string{
		DatasetParameterValueTypeMultiValued,
		DatasetParameterValueTypeSingleValued,
	}
}

const (
	// DateAggregationFunctionCount is a DateAggregationFunction enum value
	DateAggregationFunctionCount = "COUNT"

	// DateAggregationFunctionDistinctCount is a DateAggregationFunction enum value
	DateAggregationFunctionDistinctCount = "DISTINCT_COUNT"

	// DateAggregationFunctionMin is a DateAggregationFunction enum value
	DateAggregationFunctionMin = "MIN"

	// DateAggregationFunctionMax is a DateAggregationFunction enum value
	DateAggregationFunctionMax = "MAX"
)

// DateAggregationFunction_Values returns all elements of the DateAggregationFunction enum
func DateAggregationFunction_Values() []string {
	return []string{
		DateAggregationFunctionCount,
		DateAggregationFunctionDistinctCount,
		DateAggregationFunctionMin,
		DateAggregationFunctionMax,
	}
}

const (
	// DayOfTheWeekSunday is a DayOfTheWeek enum value
	DayOfTheWeekSunday = "SUNDAY"

	// DayOfTheWeekMonday is a DayOfTheWeek enum value
	DayOfTheWeekMonday = "MONDAY"

	// DayOfTheWeekTuesday is a DayOfTheWeek enum value
	DayOfTheWeekTuesday = "TUESDAY"

	// DayOfTheWeekWednesday is a DayOfTheWeek enum value
	DayOfTheWeekWednesday = "WEDNESDAY"

	// DayOfTheWeekThursday is a DayOfTheWeek enum value
	DayOfTheWeekThursday = "THURSDAY"

	// DayOfTheWeekFriday is a DayOfTheWeek enum value
	DayOfTheWeekFriday = "FRIDAY"

	// DayOfTheWeekSaturday is a DayOfTheWeek enum value
	DayOfTheWeekSaturday = "SATURDAY"
)

// DayOfTheWeek_Values returns all elements of the DayOfTheWeek enum
func DayOfTheWeek_Values() []string {
	return []string{
		DayOfTheWeekSunday,
		DayOfTheWeekMonday,
		DayOfTheWeekTuesday,
		DayOfTheWeekWednesday,
		DayOfTheWeekThursday,
		DayOfTheWeekFriday,
		DayOfTheWeekSaturday,
	}
}

const (
	// DayOfWeekSunday is a DayOfWeek enum value
	DayOfWeekSunday = "SUNDAY"

	// DayOfWeekMonday is a DayOfWeek enum value
	DayOfWeekMonday = "MONDAY"

	// DayOfWeekTuesday is a DayOfWeek enum value
	DayOfWeekTuesday = "TUESDAY"

	// DayOfWeekWednesday is a DayOfWeek enum value
	DayOfWeekWednesday = "WEDNESDAY"

	// DayOfWeekThursday is a DayOfWeek enum value
	DayOfWeekThursday = "THURSDAY"

	// DayOfWeekFriday is a DayOfWeek enum value
	DayOfWeekFriday = "FRIDAY"

	// DayOfWeekSaturday is a DayOfWeek enum value
	DayOfWeekSaturday = "SATURDAY"
)

// DayOfWeek_Values returns all elements of the DayOfWeek enum
func DayOfWeek_Values() []string {
	return []string{
		DayOfWeekSunday,
		DayOfWeekMonday,
		DayOfWeekTuesday,
		DayOfWeekWednesday,
		DayOfWeekThursday,
		DayOfWeekFriday,
		DayOfWeekSaturday,
	}
}

const (
	// DefaultAggregationSum is a DefaultAggregation enum value
	DefaultAggregationSum = "SUM"

	// DefaultAggregationMax is a DefaultAggregation enum value
	DefaultAggregationMax = "MAX"

	// DefaultAggregationMin is a DefaultAggregation enum value
	DefaultAggregationMin = "MIN"

	// DefaultAggregationCount is a DefaultAggregation enum value
	DefaultAggregationCount = "COUNT"

	// DefaultAggregationDistinctCount is a DefaultAggregation enum value
	DefaultAggregationDistinctCount = "DISTINCT_COUNT"

	// DefaultAggregationAverage is a DefaultAggregation enum value
	DefaultAggregationAverage = "AVERAGE"

	// DefaultAggregationMedian is a DefaultAggregation enum value
	DefaultAggregationMedian = "MEDIAN"

	// DefaultAggregationStdev is a DefaultAggregation enum value
	DefaultAggregationStdev = "STDEV"

	// DefaultAggregationStdevp is a DefaultAggregation enum value
	DefaultAggregationStdevp = "STDEVP"

	// DefaultAggregationVar is a DefaultAggregation enum value
	DefaultAggregationVar = "VAR"

	// DefaultAggregationVarp is a DefaultAggregation enum value
	DefaultAggregationVarp = "VARP"
)

// DefaultAggregation_Values returns all elements of the DefaultAggregation enum
func DefaultAggregation_Values() []string {
	return []string{
		DefaultAggregationSum,
		DefaultAggregationMax,
		DefaultAggregationMin,
		DefaultAggregationCount,
		DefaultAggregationDistinctCount,
		DefaultAggregationAverage,
		DefaultAggregationMedian,
		DefaultAggregationStdev,
		DefaultAggregationStdevp,
		DefaultAggregationVar,
		DefaultAggregationVarp,
	}
}

const (
	// DisplayFormatAuto is a DisplayFormat enum value
	DisplayFormatAuto = "AUTO"

	// DisplayFormatPercent is a DisplayFormat enum value
	DisplayFormatPercent = "PERCENT"

	// DisplayFormatCurrency is a DisplayFormat enum value
	DisplayFormatCurrency = "CURRENCY"

	// DisplayFormatNumber is a DisplayFormat enum value
	DisplayFormatNumber = "NUMBER"

	// DisplayFormatDate is a DisplayFormat enum value
	DisplayFormatDate = "DATE"

	// DisplayFormatString is a DisplayFormat enum value
	DisplayFormatString = "STRING"
)

// DisplayFormat_Values returns all elements of the DisplayFormat enum
func DisplayFormat_Values() []string {
	return []string{
		DisplayFormatAuto,
		DisplayFormatPercent,
		DisplayFormatCurrency,
		DisplayFormatNumber,
		DisplayFormatDate,
		DisplayFormatString,
	}
}

const (
	// EditionStandard is a Edition enum value
	EditionStandard = "STANDARD"

	// EditionEnterprise is a Edition enum value
	EditionEnterprise = "ENTERPRISE"

	// EditionEnterpriseAndQ is a Edition enum value
	EditionEnterpriseAndQ = "ENTERPRISE_AND_Q"
)

// Edition_Values returns all elements of the Edition enum
func Edition_Values() []string {
	return []string{
		EditionStandard,
		EditionEnterprise,
		EditionEnterpriseAndQ,
	}
}

const (
	// EmbeddingIdentityTypeIam is a EmbeddingIdentityType enum value
	EmbeddingIdentityTypeIam = "IAM"

	// EmbeddingIdentityTypeQuicksight is a EmbeddingIdentityType enum value
	EmbeddingIdentityTypeQuicksight = "QUICKSIGHT"

	// EmbeddingIdentityTypeAnonymous is a EmbeddingIdentityType enum value
	EmbeddingIdentityTypeAnonymous = "ANONYMOUS"
)

// EmbeddingIdentityType_Values returns all elements of the EmbeddingIdentityType enum
func EmbeddingIdentityType_Values() []string {
	return []string{
		EmbeddingIdentityTypeIam,
		EmbeddingIdentityTypeQuicksight,
		EmbeddingIdentityTypeAnonymous,
	}
}

const (
	// ExceptionResourceTypeUser is a ExceptionResourceType enum value
	ExceptionResourceTypeUser = "USER"

	// ExceptionResourceTypeGroup is a ExceptionResourceType enum value
	ExceptionResourceTypeGroup = "GROUP"

	// ExceptionResourceTypeNamespace is a ExceptionResourceType enum value
	ExceptionResourceTypeNamespace = "NAMESPACE"

	// ExceptionResourceTypeAccountSettings is a ExceptionResourceType enum value
	ExceptionResourceTypeAccountSettings = "ACCOUNT_SETTINGS"

	// ExceptionResourceTypeIampolicyAssignment is a ExceptionResourceType enum value
	ExceptionResourceTypeIampolicyAssignment = "IAMPOLICY_ASSIGNMENT"

	// ExceptionResourceTypeDataSource is a ExceptionResourceType enum value
	ExceptionResourceTypeDataSource = "DATA_SOURCE"

	// ExceptionResourceTypeDataSet is a ExceptionResourceType enum value
	ExceptionResourceTypeDataSet = "DATA_SET"

	// ExceptionResourceTypeVpcConnection is a ExceptionResourceType enum value
	ExceptionResourceTypeVpcConnection = "VPC_CONNECTION"

	// ExceptionResourceTypeIngestion is a ExceptionResourceType enum value
	ExceptionResourceTypeIngestion = "INGESTION"
)

// ExceptionResourceType_Values returns all elements of the ExceptionResourceType enum
func ExceptionResourceType_Values() []string {
	return []string{
		ExceptionResourceTypeUser,
		ExceptionResourceTypeGroup,
		ExceptionResourceTypeNamespace,
		ExceptionResourceTypeAccountSettings,
		ExceptionResourceTypeIampolicyAssignment,
		ExceptionResourceTypeDataSource,
		ExceptionResourceTypeDataSet,
		ExceptionResourceTypeVpcConnection,
		ExceptionResourceTypeIngestion,
	}
}

const (
	// FileFormatCsv is a FileFormat enum value
	FileFormatCsv = "CSV"

	// FileFormatTsv is a FileFormat enum value
	FileFormatTsv = "TSV"

	// FileFormatClf is a FileFormat enum value
	FileFormatClf = "CLF"

	// FileFormatElf is a FileFormat enum value
	FileFormatElf = "ELF"

	// FileFormatXlsx is a FileFormat enum value
	FileFormatXlsx = "XLSX"

	// FileFormatJson is a FileFormat enum value
	FileFormatJson = "JSON"
)

// FileFormat_Values returns all elements of the FileFormat enum
func FileFormat_Values() []string {
	return []string{
		FileFormatCsv,
		FileFormatTsv,
		FileFormatClf,
		FileFormatElf,
		FileFormatXlsx,
		FileFormatJson,
	}
}

const (
	// FilterClassEnforcedValueFilter is a FilterClass enum value
	FilterClassEnforcedValueFilter = "ENFORCED_VALUE_FILTER"

	// FilterClassConditionalValueFilter is a FilterClass enum value
	FilterClassConditionalValueFilter = "CONDITIONAL_VALUE_FILTER"

	// FilterClassNamedValueFilter is a FilterClass enum value
	FilterClassNamedValueFilter = "NAMED_VALUE_FILTER"
)

// FilterClass_Values returns all elements of the FilterClass enum
func FilterClass_Values() []string {
	return []string{
		FilterClassEnforcedValueFilter,
		FilterClassConditionalValueFilter,
		FilterClassNamedValueFilter,
	}
}

const (
	// FilterNullOptionAllValues is a FilterNullOption enum value
	FilterNullOptionAllValues = "ALL_VALUES"

	// FilterNullOptionNullsOnly is a FilterNullOption enum value
	FilterNullOptionNullsOnly = "NULLS_ONLY"

	// FilterNullOptionNonNullsOnly is a FilterNullOption enum value
	FilterNullOptionNonNullsOnly = "NON_NULLS_ONLY"
)

// FilterNullOption_Values returns all elements of the FilterNullOption enum
func FilterNullOption_Values() []string {
	return []string{
		FilterNullOptionAllValues,
		FilterNullOptionNullsOnly,
		FilterNullOptionNonNullsOnly,
	}
}

const (
	// FilterOperatorStringEquals is a FilterOperator enum value
	FilterOperatorStringEquals = "StringEquals"

	// FilterOperatorStringLike is a FilterOperator enum value
	FilterOperatorStringLike = "StringLike"
)

// FilterOperator_Values returns all elements of the FilterOperator enum
func FilterOperator_Values() []string {
	return []string{
		FilterOperatorStringEquals,
		FilterOperatorStringLike,
	}
}

const (
	// FilterVisualScopeAllVisuals is a FilterVisualScope enum value
	FilterVisualScopeAllVisuals = "ALL_VISUALS"

	// FilterVisualScopeSelectedVisuals is a FilterVisualScope enum value
	FilterVisualScopeSelectedVisuals = "SELECTED_VISUALS"
)

// FilterVisualScope_Values returns all elements of the FilterVisualScope enum
func FilterVisualScope_Values() []string {
	return []string{
		FilterVisualScopeAllVisuals,
		FilterVisualScopeSelectedVisuals,
	}
}

const (
	// FolderFilterAttributeParentFolderArn is a FolderFilterAttribute enum value
	FolderFilterAttributeParentFolderArn = "PARENT_FOLDER_ARN"

	// FolderFilterAttributeDirectQuicksightOwner is a FolderFilterAttribute enum value
	FolderFilterAttributeDirectQuicksightOwner = "DIRECT_QUICKSIGHT_OWNER"

	// FolderFilterAttributeDirectQuicksightSoleOwner is a FolderFilterAttribute enum value
	FolderFilterAttributeDirectQuicksightSoleOwner = "DIRECT_QUICKSIGHT_SOLE_OWNER"

	// FolderFilterAttributeDirectQuicksightViewerOrOwner is a FolderFilterAttribute enum value
	FolderFilterAttributeDirectQuicksightViewerOrOwner = "DIRECT_QUICKSIGHT_VIEWER_OR_OWNER"

	// FolderFilterAttributeQuicksightOwner is a FolderFilterAttribute enum value
	FolderFilterAttributeQuicksightOwner = "QUICKSIGHT_OWNER"

	// FolderFilterAttributeQuicksightViewerOrOwner is a FolderFilterAttribute enum value
	FolderFilterAttributeQuicksightViewerOrOwner = "QUICKSIGHT_VIEWER_OR_OWNER"

	// FolderFilterAttributeFolderName is a FolderFilterAttribute enum value
	FolderFilterAttributeFolderName = "FOLDER_NAME"
)

// FolderFilterAttribute_Values returns all elements of the FolderFilterAttribute enum
func FolderFilterAttribute_Values() []string {
	return []string{
		FolderFilterAttributeParentFolderArn,
		FolderFilterAttributeDirectQuicksightOwner,
		FolderFilterAttributeDirectQuicksightSoleOwner,
		FolderFilterAttributeDirectQuicksightViewerOrOwner,
		FolderFilterAttributeQuicksightOwner,
		FolderFilterAttributeQuicksightViewerOrOwner,
		FolderFilterAttributeFolderName,
	}
}

const (
	// FolderTypeShared is a FolderType enum value
	FolderTypeShared = "SHARED"

	// FolderTypeRestricted is a FolderType enum value
	FolderTypeRestricted = "RESTRICTED"
)

// FolderType_Values returns all elements of the FolderType enum
func FolderType_Values() []string {
	return []string{
		FolderTypeShared,
		FolderTypeRestricted,
	}
}

const (
	// FontDecorationUnderline is a FontDecoration enum value
	FontDecorationUnderline = "UNDERLINE"

	// FontDecorationNone is a FontDecoration enum value
	FontDecorationNone = "NONE"
)

// FontDecoration_Values returns all elements of the FontDecoration enum
func FontDecoration_Values() []string {
	return []string{
		FontDecorationUnderline,
		FontDecorationNone,
	}
}

const (
	// FontStyleNormal is a FontStyle enum value
	FontStyleNormal = "NORMAL"

	// FontStyleItalic is a FontStyle enum value
	FontStyleItalic = "ITALIC"
)

// FontStyle_Values returns all elements of the FontStyle enum
func FontStyle_Values() []string {
	return []string{
		FontStyleNormal,
		FontStyleItalic,
	}
}

const (
	// FontWeightNameNormal is a FontWeightName enum value
	FontWeightNameNormal = "NORMAL"

	// FontWeightNameBold is a FontWeightName enum value
	FontWeightNameBold = "BOLD"
)

// FontWeightName_Values returns all elements of the FontWeightName enum
func FontWeightName_Values() []string {
	return []string{
		FontWeightNameNormal,
		FontWeightNameBold,
	}
}

const (
	// ForecastComputationSeasonalityAutomatic is a ForecastComputationSeasonality enum value
	ForecastComputationSeasonalityAutomatic = "AUTOMATIC"

	// ForecastComputationSeasonalityCustom is a ForecastComputationSeasonality enum value
	ForecastComputationSeasonalityCustom = "CUSTOM"
)

// ForecastComputationSeasonality_Values returns all elements of the ForecastComputationSeasonality enum
func ForecastComputationSeasonality_Values() []string {
	return []string{
		ForecastComputationSeasonalityAutomatic,
		ForecastComputationSeasonalityCustom,
	}
}

const (
	// FunnelChartMeasureDataLabelStyleValueOnly is a FunnelChartMeasureDataLabelStyle enum value
	FunnelChartMeasureDataLabelStyleValueOnly = "VALUE_ONLY"

	// FunnelChartMeasureDataLabelStylePercentageByFirstStage is a FunnelChartMeasureDataLabelStyle enum value
	FunnelChartMeasureDataLabelStylePercentageByFirstStage = "PERCENTAGE_BY_FIRST_STAGE"

	// FunnelChartMeasureDataLabelStylePercentageByPreviousStage is a FunnelChartMeasureDataLabelStyle enum value
	FunnelChartMeasureDataLabelStylePercentageByPreviousStage = "PERCENTAGE_BY_PREVIOUS_STAGE"

	// FunnelChartMeasureDataLabelStyleValueAndPercentageByFirstStage is a FunnelChartMeasureDataLabelStyle enum value
	FunnelChartMeasureDataLabelStyleValueAndPercentageByFirstStage = "VALUE_AND_PERCENTAGE_BY_FIRST_STAGE"

	// FunnelChartMeasureDataLabelStyleValueAndPercentageByPreviousStage is a FunnelChartMeasureDataLabelStyle enum value
	FunnelChartMeasureDataLabelStyleValueAndPercentageByPreviousStage = "VALUE_AND_PERCENTAGE_BY_PREVIOUS_STAGE"
)

// FunnelChartMeasureDataLabelStyle_Values returns all elements of the FunnelChartMeasureDataLabelStyle enum
func FunnelChartMeasureDataLabelStyle_Values() []string {
	return []string{
		FunnelChartMeasureDataLabelStyleValueOnly,
		FunnelChartMeasureDataLabelStylePercentageByFirstStage,
		FunnelChartMeasureDataLabelStylePercentageByPreviousStage,
		FunnelChartMeasureDataLabelStyleValueAndPercentageByFirstStage,
		FunnelChartMeasureDataLabelStyleValueAndPercentageByPreviousStage,
	}
}

const (
	// GeoSpatialCountryCodeUs is a GeoSpatialCountryCode enum value
	GeoSpatialCountryCodeUs = "US"
)

// GeoSpatialCountryCode_Values returns all elements of the GeoSpatialCountryCode enum
func GeoSpatialCountryCode_Values() []string {
	return []string{
		GeoSpatialCountryCodeUs,
	}
}

const (
	// GeoSpatialDataRoleCountry is a GeoSpatialDataRole enum value
	GeoSpatialDataRoleCountry = "COUNTRY"

	// GeoSpatialDataRoleState is a GeoSpatialDataRole enum value
	GeoSpatialDataRoleState = "STATE"

	// GeoSpatialDataRoleCounty is a GeoSpatialDataRole enum value
	GeoSpatialDataRoleCounty = "COUNTY"

	// GeoSpatialDataRoleCity is a GeoSpatialDataRole enum value
	GeoSpatialDataRoleCity = "CITY"

	// GeoSpatialDataRolePostcode is a GeoSpatialDataRole enum value
	GeoSpatialDataRolePostcode = "POSTCODE"

	// GeoSpatialDataRoleLongitude is a GeoSpatialDataRole enum value
	GeoSpatialDataRoleLongitude = "LONGITUDE"

	// GeoSpatialDataRoleLatitude is a GeoSpatialDataRole enum value
	GeoSpatialDataRoleLatitude = "LATITUDE"
)

// GeoSpatialDataRole_Values returns all elements of the GeoSpatialDataRole enum
func GeoSpatialDataRole_Values() []string {
	return []string{
		GeoSpatialDataRoleCountry,
		GeoSpatialDataRoleState,
		GeoSpatialDataRoleCounty,
		GeoSpatialDataRoleCity,
		GeoSpatialDataRolePostcode,
		GeoSpatialDataRoleLongitude,
		GeoSpatialDataRoleLatitude,
	}
}

const (
	// GeospatialSelectedPointStylePoint is a GeospatialSelectedPointStyle enum value
	GeospatialSelectedPointStylePoint = "POINT"

	// GeospatialSelectedPointStyleCluster is a GeospatialSelectedPointStyle enum value
	GeospatialSelectedPointStyleCluster = "CLUSTER"

	// GeospatialSelectedPointStyleHeatmap is a GeospatialSelectedPointStyle enum value
	GeospatialSelectedPointStyleHeatmap = "HEATMAP"
)

// GeospatialSelectedPointStyle_Values returns all elements of the GeospatialSelectedPointStyle enum
func GeospatialSelectedPointStyle_Values() []string {
	return []string{
		GeospatialSelectedPointStylePoint,
		GeospatialSelectedPointStyleCluster,
		GeospatialSelectedPointStyleHeatmap,
	}
}

const (
	// GroupFilterAttributeGroupName is a GroupFilterAttribute enum value
	GroupFilterAttributeGroupName = "GROUP_NAME"
)

// GroupFilterAttribute_Values returns all elements of the GroupFilterAttribute enum
func GroupFilterAttribute_Values() []string {
	return []string{
		GroupFilterAttributeGroupName,
	}
}

const (
	// GroupFilterOperatorStartsWith is a GroupFilterOperator enum value
	GroupFilterOperatorStartsWith = "StartsWith"
)

// GroupFilterOperator_Values returns all elements of the GroupFilterOperator enum
func GroupFilterOperator_Values() []string {
	return []string{
		GroupFilterOperatorStartsWith,
	}
}

const (
	// HistogramBinTypeBinCount is a HistogramBinType enum value
	HistogramBinTypeBinCount = "BIN_COUNT"

	// HistogramBinTypeBinWidth is a HistogramBinType enum value
	HistogramBinTypeBinWidth = "BIN_WIDTH"
)

// HistogramBinType_Values returns all elements of the HistogramBinType enum
func HistogramBinType_Values() []string {
	return []string{
		HistogramBinTypeBinCount,
		HistogramBinTypeBinWidth,
	}
}

const (
	// HorizontalTextAlignmentLeft is a HorizontalTextAlignment enum value
	HorizontalTextAlignmentLeft = "LEFT"

	// HorizontalTextAlignmentCenter is a HorizontalTextAlignment enum value
	HorizontalTextAlignmentCenter = "CENTER"

	// HorizontalTextAlignmentRight is a HorizontalTextAlignment enum value
	HorizontalTextAlignmentRight = "RIGHT"

	// HorizontalTextAlignmentAuto is a HorizontalTextAlignment enum value
	HorizontalTextAlignmentAuto = "AUTO"
)

// HorizontalTextAlignment_Values returns all elements of the HorizontalTextAlignment enum
func HorizontalTextAlignment_Values() []string {
	return []string{
		HorizontalTextAlignmentLeft,
		HorizontalTextAlignmentCenter,
		HorizontalTextAlignmentRight,
		HorizontalTextAlignmentAuto,
	}
}

const (
	// IconCaretUp is a Icon enum value
	IconCaretUp = "CARET_UP"

	// IconCaretDown is a Icon enum value
	IconCaretDown = "CARET_DOWN"

	// IconPlus is a Icon enum value
	IconPlus = "PLUS"

	// IconMinus is a Icon enum value
	IconMinus = "MINUS"

	// IconArrowUp is a Icon enum value
	IconArrowUp = "ARROW_UP"

	// IconArrowDown is a Icon enum value
	IconArrowDown = "ARROW_DOWN"

	// IconArrowLeft is a Icon enum value
	IconArrowLeft = "ARROW_LEFT"

	// IconArrowUpLeft is a Icon enum value
	IconArrowUpLeft = "ARROW_UP_LEFT"

	// IconArrowDownLeft is a Icon enum value
	IconArrowDownLeft = "ARROW_DOWN_LEFT"

	// IconArrowRight is a Icon enum value
	IconArrowRight = "ARROW_RIGHT"

	// IconArrowUpRight is a Icon enum value
	IconArrowUpRight = "ARROW_UP_RIGHT"

	// IconArrowDownRight is a Icon enum value
	IconArrowDownRight = "ARROW_DOWN_RIGHT"

	// IconFaceUp is a Icon enum value
	IconFaceUp = "FACE_UP"

	// IconFaceDown is a Icon enum value
	IconFaceDown = "FACE_DOWN"

	// IconFaceFlat is a Icon enum value
	IconFaceFlat = "FACE_FLAT"

	// IconOneBar is a Icon enum value
	IconOneBar = "ONE_BAR"

	// IconTwoBar is a Icon enum value
	IconTwoBar = "TWO_BAR"

	// IconThreeBar is a Icon enum value
	IconThreeBar = "THREE_BAR"

	// IconCircle is a Icon enum value
	IconCircle = "CIRCLE"

	// IconTriangle is a Icon enum value
	IconTriangle = "TRIANGLE"

	// IconSquare is a Icon enum value
	IconSquare = "SQUARE"

	// IconFlag is a Icon enum value
	IconFlag = "FLAG"

	// IconThumbsUp is a Icon enum value
	IconThumbsUp = "THUMBS_UP"

	// IconThumbsDown is a Icon enum value
	IconThumbsDown = "THUMBS_DOWN"

	// IconCheckmark is a Icon enum value
	IconCheckmark = "CHECKMARK"

	// IconX is a Icon enum value
	IconX = "X"
)

// Icon_Values returns all elements of the Icon enum
func Icon_Values() []string {
	return []string{
		IconCaretUp,
		IconCaretDown,
		IconPlus,
		IconMinus,
		IconArrowUp,
		IconArrowDown,
		IconArrowLeft,
		IconArrowUpLeft,
		IconArrowDownLeft,
		IconArrowRight,
		IconArrowUpRight,
		IconArrowDownRight,
		IconFaceUp,
		IconFaceDown,
		IconFaceFlat,
		IconOneBar,
		IconTwoBar,
		IconThreeBar,
		IconCircle,
		IconTriangle,
		IconSquare,
		IconFlag,
		IconThumbsUp,
		IconThumbsDown,
		IconCheckmark,
		IconX,
	}
}

const (
	// IdentityStoreQuicksight is a IdentityStore enum value
	IdentityStoreQuicksight = "QUICKSIGHT"
)

// IdentityStore_Values returns all elements of the IdentityStore enum
func IdentityStore_Values() []string {
	return []string{
		IdentityStoreQuicksight,
	}
}

const (
	// IdentityTypeIam is a IdentityType enum value
	IdentityTypeIam = "IAM"

	// IdentityTypeQuicksight is a IdentityType enum value
	IdentityTypeQuicksight = "QUICKSIGHT"

	// IdentityTypeIamIdentityCenter is a IdentityType enum value
	IdentityTypeIamIdentityCenter = "IAM_IDENTITY_CENTER"
)

// IdentityType_Values returns all elements of the IdentityType enum
func IdentityType_Values() []string {
	return []string{
		IdentityTypeIam,
		IdentityTypeQuicksight,
		IdentityTypeIamIdentityCenter,
	}
}

const (
	// IngestionErrorTypeFailureToAssumeRole is a IngestionErrorType enum value
	IngestionErrorTypeFailureToAssumeRole = "FAILURE_TO_ASSUME_ROLE"

	// IngestionErrorTypeIngestionSuperseded is a IngestionErrorType enum value
	IngestionErrorTypeIngestionSuperseded = "INGESTION_SUPERSEDED"

	// IngestionErrorTypeIngestionCanceled is a IngestionErrorType enum value
	IngestionErrorTypeIngestionCanceled = "INGESTION_CANCELED"

	// IngestionErrorTypeDataSetDeleted is a IngestionErrorType enum value
	IngestionErrorTypeDataSetDeleted = "DATA_SET_DELETED"

	// IngestionErrorTypeDataSetNotSpice is a IngestionErrorType enum value
	IngestionErrorTypeDataSetNotSpice = "DATA_SET_NOT_SPICE"

	// IngestionErrorTypeS3UploadedFileDeleted is a IngestionErrorType enum value
	IngestionErrorTypeS3UploadedFileDeleted = "S3_UPLOADED_FILE_DELETED"

	// IngestionErrorTypeS3ManifestError is a IngestionErrorType enum value
	IngestionErrorTypeS3ManifestError = "S3_MANIFEST_ERROR"

	// IngestionErrorTypeDataToleranceException is a IngestionErrorType enum value
	IngestionErrorTypeDataToleranceException = "DATA_TOLERANCE_EXCEPTION"

	// IngestionErrorTypeSpiceTableNotFound is a IngestionErrorType enum value
	IngestionErrorTypeSpiceTableNotFound = "SPICE_TABLE_NOT_FOUND"

	// IngestionErrorTypeDataSetSizeLimitExceeded is a IngestionErrorType enum value
	IngestionErrorTypeDataSetSizeLimitExceeded = "DATA_SET_SIZE_LIMIT_EXCEEDED"

	// IngestionErrorTypeRowSizeLimitExceeded is a IngestionErrorType enum value
	IngestionErrorTypeRowSizeLimitExceeded = "ROW_SIZE_LIMIT_EXCEEDED"

	// IngestionErrorTypeAccountCapacityLimitExceeded is a IngestionErrorType enum value
	IngestionErrorTypeAccountCapacityLimitExceeded = "ACCOUNT_CAPACITY_LIMIT_EXCEEDED"

	// IngestionErrorTypeCustomerError is a IngestionErrorType enum value
	IngestionErrorTypeCustomerError = "CUSTOMER_ERROR"

	// IngestionErrorTypeDataSourceNotFound is a IngestionErrorType enum value
	IngestionErrorTypeDataSourceNotFound = "DATA_SOURCE_NOT_FOUND"

	// IngestionErrorTypeIamRoleNotAvailable is a IngestionErrorType enum value
	IngestionErrorTypeIamRoleNotAvailable = "IAM_ROLE_NOT_AVAILABLE"

	// IngestionErrorTypeConnectionFailure is a IngestionErrorType enum value
	IngestionErrorTypeConnectionFailure = "CONNECTION_FAILURE"

	// IngestionErrorTypeSqlTableNotFound is a IngestionErrorType enum value
	IngestionErrorTypeSqlTableNotFound = "SQL_TABLE_NOT_FOUND"

	// IngestionErrorTypePermissionDenied is a IngestionErrorType enum value
	IngestionErrorTypePermissionDenied = "PERMISSION_DENIED"

	// IngestionErrorTypeSslCertificateValidationFailure is a IngestionErrorType enum value
	IngestionErrorTypeSslCertificateValidationFailure = "SSL_CERTIFICATE_VALIDATION_FAILURE"

	// IngestionErrorTypeOauthTokenFailure is a IngestionErrorType enum value
	IngestionErrorTypeOauthTokenFailure = "OAUTH_TOKEN_FAILURE"

	// IngestionErrorTypeSourceApiLimitExceededFailure is a IngestionErrorType enum value
	IngestionErrorTypeSourceApiLimitExceededFailure = "SOURCE_API_LIMIT_EXCEEDED_FAILURE"

	// IngestionErrorTypePasswordAuthenticationFailure is a IngestionErrorType enum value
	IngestionErrorTypePasswordAuthenticationFailure = "PASSWORD_AUTHENTICATION_FAILURE"

	// IngestionErrorTypeSqlSchemaMismatchError is a IngestionErrorType enum value
	IngestionErrorTypeSqlSchemaMismatchError = "SQL_SCHEMA_MISMATCH_ERROR"

	// IngestionErrorTypeInvalidDateFormat is a IngestionErrorType enum value
	IngestionErrorTypeInvalidDateFormat = "INVALID_DATE_FORMAT"

	// IngestionErrorTypeInvalidDataprepSyntax is a IngestionErrorType enum value
	IngestionErrorTypeInvalidDataprepSyntax = "INVALID_DATAPREP_SYNTAX"

	// IngestionErrorTypeSourceResourceLimitExceeded is a IngestionErrorType enum value
	IngestionErrorTypeSourceResourceLimitExceeded = "SOURCE_RESOURCE_LIMIT_EXCEEDED"

	// IngestionErrorTypeSqlInvalidParameterValue is a IngestionErrorType enum value
	IngestionErrorTypeSqlInvalidParameterValue = "SQL_INVALID_PARAMETER_VALUE"

	// IngestionErrorTypeQueryTimeout is a IngestionErrorType enum value
	IngestionErrorTypeQueryTimeout = "QUERY_TIMEOUT"

	// IngestionErrorTypeSqlNumericOverflow is a IngestionErrorType enum value
	IngestionErrorTypeSqlNumericOverflow = "SQL_NUMERIC_OVERFLOW"

	// IngestionErrorTypeUnresolvableHost is a IngestionErrorType enum value
	IngestionErrorTypeUnresolvableHost = "UNRESOLVABLE_HOST"

	// IngestionErrorTypeUnroutableHost is a IngestionErrorType enum value
	IngestionErrorTypeUnroutableHost = "UNROUTABLE_HOST"

	// IngestionErrorTypeSqlException is a IngestionErrorType enum value
	IngestionErrorTypeSqlException = "SQL_EXCEPTION"

	// IngestionErrorTypeS3FileInaccessible is a IngestionErrorType enum value
	IngestionErrorTypeS3FileInaccessible = "S3_FILE_INACCESSIBLE"

	// IngestionErrorTypeIotFileNotFound is a IngestionErrorType enum value
	IngestionErrorTypeIotFileNotFound = "IOT_FILE_NOT_FOUND"

	// IngestionErrorTypeIotDataSetFileEmpty is a IngestionErrorType enum value
	IngestionErrorTypeIotDataSetFileEmpty = "IOT_DATA_SET_FILE_EMPTY"

	// IngestionErrorTypeInvalidDataSourceConfig is a IngestionErrorType enum value
	IngestionErrorTypeInvalidDataSourceConfig = "INVALID_DATA_SOURCE_CONFIG"

	// IngestionErrorTypeDataSourceAuthFailed is a IngestionErrorType enum value
	IngestionErrorTypeDataSourceAuthFailed = "DATA_SOURCE_AUTH_FAILED"

	// IngestionErrorTypeDataSourceConnectionFailed is a IngestionErrorType enum value
	IngestionErrorTypeDataSourceConnectionFailed = "DATA_SOURCE_CONNECTION_FAILED"

	// IngestionErrorTypeFailureToProcessJsonFile is a IngestionErrorType enum value
	IngestionErrorTypeFailureToProcessJsonFile = "FAILURE_TO_PROCESS_JSON_FILE"

	// IngestionErrorTypeInternalServiceError is a IngestionErrorType enum value
	IngestionErrorTypeInternalServiceError = "INTERNAL_SERVICE_ERROR"

	// IngestionErrorTypeRefreshSuppressedByEdit is a IngestionErrorType enum value
	IngestionErrorTypeRefreshSuppressedByEdit = "REFRESH_SUPPRESSED_BY_EDIT"

	// IngestionErrorTypePermissionNotFound is a IngestionErrorType enum value
	IngestionErrorTypePermissionNotFound = "PERMISSION_NOT_FOUND"

	// IngestionErrorTypeElasticsearchCursorNotEnabled is a IngestionErrorType enum value
	IngestionErrorTypeElasticsearchCursorNotEnabled = "ELASTICSEARCH_CURSOR_NOT_ENABLED"

	// IngestionErrorTypeCursorNotEnabled is a IngestionErrorType enum value
	IngestionErrorTypeCursorNotEnabled = "CURSOR_NOT_ENABLED"

	// IngestionErrorTypeDuplicateColumnNamesFound is a IngestionErrorType enum value
	IngestionErrorTypeDuplicateColumnNamesFound = "DUPLICATE_COLUMN_NAMES_FOUND"
)

// IngestionErrorType_Values returns all elements of the IngestionErrorType enum
func IngestionErrorType_Values() []string {
	return []string{
		IngestionErrorTypeFailureToAssumeRole,
		IngestionErrorTypeIngestionSuperseded,
		IngestionErrorTypeIngestionCanceled,
		IngestionErrorTypeDataSetDeleted,
		IngestionErrorTypeDataSetNotSpice,
		IngestionErrorTypeS3UploadedFileDeleted,
		IngestionErrorTypeS3ManifestError,
		IngestionErrorTypeDataToleranceException,
		IngestionErrorTypeSpiceTableNotFound,
		IngestionErrorTypeDataSetSizeLimitExceeded,
		IngestionErrorTypeRowSizeLimitExceeded,
		IngestionErrorTypeAccountCapacityLimitExceeded,
		IngestionErrorTypeCustomerError,
		IngestionErrorTypeDataSourceNotFound,
		IngestionErrorTypeIamRoleNotAvailable,
		IngestionErrorTypeConnectionFailure,
		IngestionErrorTypeSqlTableNotFound,
		IngestionErrorTypePermissionDenied,
		IngestionErrorTypeSslCertificateValidationFailure,
		IngestionErrorTypeOauthTokenFailure,
		IngestionErrorTypeSourceApiLimitExceededFailure,
		IngestionErrorTypePasswordAuthenticationFailure,
		IngestionErrorTypeSqlSchemaMismatchError,
		IngestionErrorTypeInvalidDateFormat,
		IngestionErrorTypeInvalidDataprepSyntax,
		IngestionErrorTypeSourceResourceLimitExceeded,
		IngestionErrorTypeSqlInvalidParameterValue,
		IngestionErrorTypeQueryTimeout,
		IngestionErrorTypeSqlNumericOverflow,
		IngestionErrorTypeUnresolvableHost,
		IngestionErrorTypeUnroutableHost,
		IngestionErrorTypeSqlException,
		IngestionErrorTypeS3FileInaccessible,
		IngestionErrorTypeIotFileNotFound,
		IngestionErrorTypeIotDataSetFileEmpty,
		IngestionErrorTypeInvalidDataSourceConfig,
		IngestionErrorTypeDataSourceAuthFailed,
		IngestionErrorTypeDataSourceConnectionFailed,
		IngestionErrorTypeFailureToProcessJsonFile,
		IngestionErrorTypeInternalServiceError,
		IngestionErrorTypeRefreshSuppressedByEdit,
		IngestionErrorTypePermissionNotFound,
		IngestionErrorTypeElasticsearchCursorNotEnabled,
		IngestionErrorTypeCursorNotEnabled,
		IngestionErrorTypeDuplicateColumnNamesFound,
	}
}

const (
	// IngestionRequestSourceManual is a IngestionRequestSource enum value
	IngestionRequestSourceManual = "MANUAL"

	// IngestionRequestSourceScheduled is a IngestionRequestSource enum value
	IngestionRequestSourceScheduled = "SCHEDULED"
)

// IngestionRequestSource_Values returns all elements of the IngestionRequestSource enum
func IngestionRequestSource_Values() []string {
	return []string{
		IngestionRequestSourceManual,
		IngestionRequestSourceScheduled,
	}
}

// This defines the type of ingestion request. This is returned as part of create
// ingestion response.
const (
	// IngestionRequestTypeInitialIngestion is a IngestionRequestType enum value
	IngestionRequestTypeInitialIngestion = "INITIAL_INGESTION"

	// IngestionRequestTypeEdit is a IngestionRequestType enum value
	IngestionRequestTypeEdit = "EDIT"

	// IngestionRequestTypeIncrementalRefresh is a IngestionRequestType enum value
	IngestionRequestTypeIncrementalRefresh = "INCREMENTAL_REFRESH"

	// IngestionRequestTypeFullRefresh is a IngestionRequestType enum value
	IngestionRequestTypeFullRefresh = "FULL_REFRESH"
)

// IngestionRequestType_Values returns all elements of the IngestionRequestType enum
func IngestionRequestType_Values() []string {
	return []string{
		IngestionRequestTypeInitialIngestion,
		IngestionRequestTypeEdit,
		IngestionRequestTypeIncrementalRefresh,
		IngestionRequestTypeFullRefresh,
	}
}

const (
	// IngestionStatusInitialized is a IngestionStatus enum value
	IngestionStatusInitialized = "INITIALIZED"

	// IngestionStatusQueued is a IngestionStatus enum value
	IngestionStatusQueued = "QUEUED"

	// IngestionStatusRunning is a IngestionStatus enum value
	IngestionStatusRunning = "RUNNING"

	// IngestionStatusFailed is a IngestionStatus enum value
	IngestionStatusFailed = "FAILED"

	// IngestionStatusCompleted is a IngestionStatus enum value
	IngestionStatusCompleted = "COMPLETED"

	// IngestionStatusCancelled is a IngestionStatus enum value
	IngestionStatusCancelled = "CANCELLED"
)

// IngestionStatus_Values returns all elements of the IngestionStatus enum
func IngestionStatus_Values() []string {
	return []string{
		IngestionStatusInitialized,
		IngestionStatusQueued,
		IngestionStatusRunning,
		IngestionStatusFailed,
		IngestionStatusCompleted,
		IngestionStatusCancelled,
	}
}

// This defines the type of ingestion user wants to trigger. This is part of
// create ingestion request.
const (
	// IngestionTypeIncrementalRefresh is a IngestionType enum value
	IngestionTypeIncrementalRefresh = "INCREMENTAL_REFRESH"

	// IngestionTypeFullRefresh is a IngestionType enum value
	IngestionTypeFullRefresh = "FULL_REFRESH"
)

// IngestionType_Values returns all elements of the IngestionType enum
func IngestionType_Values() []string {
	return []string{
		IngestionTypeIncrementalRefresh,
		IngestionTypeFullRefresh,
	}
}

const (
	// InputColumnDataTypeString is a InputColumnDataType enum value
	InputColumnDataTypeString = "STRING"

	// InputColumnDataTypeInteger is a InputColumnDataType enum value
	InputColumnDataTypeInteger = "INTEGER"

	// InputColumnDataTypeDecimal is a InputColumnDataType enum value
	InputColumnDataTypeDecimal = "DECIMAL"

	// InputColumnDataTypeDatetime is a InputColumnDataType enum value
	InputColumnDataTypeDatetime = "DATETIME"

	// InputColumnDataTypeBit is a InputColumnDataType enum value
	InputColumnDataTypeBit = "BIT"

	// InputColumnDataTypeBoolean is a InputColumnDataType enum value
	InputColumnDataTypeBoolean = "BOOLEAN"

	// InputColumnDataTypeJson is a InputColumnDataType enum value
	InputColumnDataTypeJson = "JSON"
)

// InputColumnDataType_Values returns all elements of the InputColumnDataType enum
func InputColumnDataType_Values() []string {
	return []string{
		InputColumnDataTypeString,
		InputColumnDataTypeInteger,
		InputColumnDataTypeDecimal,
		InputColumnDataTypeDatetime,
		InputColumnDataTypeBit,
		InputColumnDataTypeBoolean,
		InputColumnDataTypeJson,
	}
}

const (
	// JoinTypeInner is a JoinType enum value
	JoinTypeInner = "INNER"

	// JoinTypeOuter is a JoinType enum value
	JoinTypeOuter = "OUTER"

	// JoinTypeLeft is a JoinType enum value
	JoinTypeLeft = "LEFT"

	// JoinTypeRight is a JoinType enum value
	JoinTypeRight = "RIGHT"
)

// JoinType_Values returns all elements of the JoinType enum
func JoinType_Values() []string {
	return []string{
		JoinTypeInner,
		JoinTypeOuter,
		JoinTypeLeft,
		JoinTypeRight,
	}
}

const (
	// KPISparklineTypeLine is a KPISparklineType enum value
	KPISparklineTypeLine = "LINE"

	// KPISparklineTypeArea is a KPISparklineType enum value
	KPISparklineTypeArea = "AREA"
)

// KPISparklineType_Values returns all elements of the KPISparklineType enum
func KPISparklineType_Values() []string {
	return []string{
		KPISparklineTypeLine,
		KPISparklineTypeArea,
	}
}

const (
	// KPIVisualStandardLayoutTypeClassic is a KPIVisualStandardLayoutType enum value
	KPIVisualStandardLayoutTypeClassic = "CLASSIC"

	// KPIVisualStandardLayoutTypeVertical is a KPIVisualStandardLayoutType enum value
	KPIVisualStandardLayoutTypeVertical = "VERTICAL"
)

// KPIVisualStandardLayoutType_Values returns all elements of the KPIVisualStandardLayoutType enum
func KPIVisualStandardLayoutType_Values() []string {
	return []string{
		KPIVisualStandardLayoutTypeClassic,
		KPIVisualStandardLayoutTypeVertical,
	}
}

const (
	// LayoutElementTypeVisual is a LayoutElementType enum value
	LayoutElementTypeVisual = "VISUAL"

	// LayoutElementTypeFilterControl is a LayoutElementType enum value
	LayoutElementTypeFilterControl = "FILTER_CONTROL"

	// LayoutElementTypeParameterControl is a LayoutElementType enum value
	LayoutElementTypeParameterControl = "PARAMETER_CONTROL"

	// LayoutElementTypeTextBox is a LayoutElementType enum value
	LayoutElementTypeTextBox = "TEXT_BOX"
)

// LayoutElementType_Values returns all elements of the LayoutElementType enum
func LayoutElementType_Values() []string {
	return []string{
		LayoutElementTypeVisual,
		LayoutElementTypeFilterControl,
		LayoutElementTypeParameterControl,
		LayoutElementTypeTextBox,
	}
}

const (
	// LegendPositionAuto is a LegendPosition enum value
	LegendPositionAuto = "AUTO"

	// LegendPositionRight is a LegendPosition enum value
	LegendPositionRight = "RIGHT"

	// LegendPositionBottom is a LegendPosition enum value
	LegendPositionBottom = "BOTTOM"

	// LegendPositionTop is a LegendPosition enum value
	LegendPositionTop = "TOP"
)

// LegendPosition_Values returns all elements of the LegendPosition enum
func LegendPosition_Values() []string {
	return []string{
		LegendPositionAuto,
		LegendPositionRight,
		LegendPositionBottom,
		LegendPositionTop,
	}
}

const (
	// LineChartLineStyleSolid is a LineChartLineStyle enum value
	LineChartLineStyleSolid = "SOLID"

	// LineChartLineStyleDotted is a LineChartLineStyle enum value
	LineChartLineStyleDotted = "DOTTED"

	// LineChartLineStyleDashed is a LineChartLineStyle enum value
	LineChartLineStyleDashed = "DASHED"
)

// LineChartLineStyle_Values returns all elements of the LineChartLineStyle enum
func LineChartLineStyle_Values() []string {
	return []string{
		LineChartLineStyleSolid,
		LineChartLineStyleDotted,
		LineChartLineStyleDashed,
	}
}

const (
	// LineChartMarkerShapeCircle is a LineChartMarkerShape enum value
	LineChartMarkerShapeCircle = "CIRCLE"

	// LineChartMarkerShapeTriangle is a LineChartMarkerShape enum value
	LineChartMarkerShapeTriangle = "TRIANGLE"

	// LineChartMarkerShapeSquare is a LineChartMarkerShape enum value
	LineChartMarkerShapeSquare = "SQUARE"

	// LineChartMarkerShapeDiamond is a LineChartMarkerShape enum value
	LineChartMarkerShapeDiamond = "DIAMOND"

	// LineChartMarkerShapeRoundedSquare is a LineChartMarkerShape enum value
	LineChartMarkerShapeRoundedSquare = "ROUNDED_SQUARE"
)

// LineChartMarkerShape_Values returns all elements of the LineChartMarkerShape enum
func LineChartMarkerShape_Values() []string {
	return []string{
		LineChartMarkerShapeCircle,
		LineChartMarkerShapeTriangle,
		LineChartMarkerShapeSquare,
		LineChartMarkerShapeDiamond,
		LineChartMarkerShapeRoundedSquare,
	}
}

const (
	// LineChartTypeLine is a LineChartType enum value
	LineChartTypeLine = "LINE"

	// LineChartTypeArea is a LineChartType enum value
	LineChartTypeArea = "AREA"

	// LineChartTypeStackedArea is a LineChartType enum value
	LineChartTypeStackedArea = "STACKED_AREA"
)

// LineChartType_Values returns all elements of the LineChartType enum
func LineChartType_Values() []string {
	return []string{
		LineChartTypeLine,
		LineChartTypeArea,
		LineChartTypeStackedArea,
	}
}

const (
	// LineInterpolationLinear is a LineInterpolation enum value
	LineInterpolationLinear = "LINEAR"

	// LineInterpolationSmooth is a LineInterpolation enum value
	LineInterpolationSmooth = "SMOOTH"

	// LineInterpolationStepped is a LineInterpolation enum value
	LineInterpolationStepped = "STEPPED"
)

// LineInterpolation_Values returns all elements of the LineInterpolation enum
func LineInterpolation_Values() []string {
	return []string{
		LineInterpolationLinear,
		LineInterpolationSmooth,
		LineInterpolationStepped,
	}
}

const (
	// LookbackWindowSizeUnitHour is a LookbackWindowSizeUnit enum value
	LookbackWindowSizeUnitHour = "HOUR"

	// LookbackWindowSizeUnitDay is a LookbackWindowSizeUnit enum value
	LookbackWindowSizeUnitDay = "DAY"

	// LookbackWindowSizeUnitWeek is a LookbackWindowSizeUnit enum value
	LookbackWindowSizeUnitWeek = "WEEK"
)

// LookbackWindowSizeUnit_Values returns all elements of the LookbackWindowSizeUnit enum
func LookbackWindowSizeUnit_Values() []string {
	return []string{
		LookbackWindowSizeUnitHour,
		LookbackWindowSizeUnitDay,
		LookbackWindowSizeUnitWeek,
	}
}

const (
	// MapZoomModeAuto is a MapZoomMode enum value
	MapZoomModeAuto = "AUTO"

	// MapZoomModeManual is a MapZoomMode enum value
	MapZoomModeManual = "MANUAL"
)

// MapZoomMode_Values returns all elements of the MapZoomMode enum
func MapZoomMode_Values() []string {
	return []string{
		MapZoomModeAuto,
		MapZoomModeManual,
	}
}

const (
	// MaximumMinimumComputationTypeMaximum is a MaximumMinimumComputationType enum value
	MaximumMinimumComputationTypeMaximum = "MAXIMUM"

	// MaximumMinimumComputationTypeMinimum is a MaximumMinimumComputationType enum value
	MaximumMinimumComputationTypeMinimum = "MINIMUM"
)

// MaximumMinimumComputationType_Values returns all elements of the MaximumMinimumComputationType enum
func MaximumMinimumComputationType_Values() []string {
	return []string{
		MaximumMinimumComputationTypeMaximum,
		MaximumMinimumComputationTypeMinimum,
	}
}

const (
	// MemberTypeDashboard is a MemberType enum value
	MemberTypeDashboard = "DASHBOARD"

	// MemberTypeAnalysis is a MemberType enum value
	MemberTypeAnalysis = "ANALYSIS"

	// MemberTypeDataset is a MemberType enum value
	MemberTypeDataset = "DATASET"

	// MemberTypeDatasource is a MemberType enum value
	MemberTypeDatasource = "DATASOURCE"

	// MemberTypeTopic is a MemberType enum value
	MemberTypeTopic = "TOPIC"
)

// MemberType_Values returns all elements of the MemberType enum
func MemberType_Values() []string {
	return []string{
		MemberTypeDashboard,
		MemberTypeAnalysis,
		MemberTypeDataset,
		MemberTypeDatasource,
		MemberTypeTopic,
	}
}

const (
	// MissingDataTreatmentOptionInterpolate is a MissingDataTreatmentOption enum value
	MissingDataTreatmentOptionInterpolate = "INTERPOLATE"

	// MissingDataTreatmentOptionShowAsZero is a MissingDataTreatmentOption enum value
	MissingDataTreatmentOptionShowAsZero = "SHOW_AS_ZERO"

	// MissingDataTreatmentOptionShowAsBlank is a MissingDataTreatmentOption enum value
	MissingDataTreatmentOptionShowAsBlank = "SHOW_AS_BLANK"
)

// MissingDataTreatmentOption_Values returns all elements of the MissingDataTreatmentOption enum
func MissingDataTreatmentOption_Values() []string {
	return []string{
		MissingDataTreatmentOptionInterpolate,
		MissingDataTreatmentOptionShowAsZero,
		MissingDataTreatmentOptionShowAsBlank,
	}
}

const (
	// NamedEntityAggTypeSum is a NamedEntityAggType enum value
	NamedEntityAggTypeSum = "SUM"

	// NamedEntityAggTypeMin is a NamedEntityAggType enum value
	NamedEntityAggTypeMin = "MIN"

	// NamedEntityAggTypeMax is a NamedEntityAggType enum value
	NamedEntityAggTypeMax = "MAX"

	// NamedEntityAggTypeCount is a NamedEntityAggType enum value
	NamedEntityAggTypeCount = "COUNT"

	// NamedEntityAggTypeAverage is a NamedEntityAggType enum value
	NamedEntityAggTypeAverage = "AVERAGE"

	// NamedEntityAggTypeDistinctCount is a NamedEntityAggType enum value
	NamedEntityAggTypeDistinctCount = "DISTINCT_COUNT"

	// NamedEntityAggTypeStdev is a NamedEntityAggType enum value
	NamedEntityAggTypeStdev = "STDEV"

	// NamedEntityAggTypeStdevp is a NamedEntityAggType enum value
	NamedEntityAggTypeStdevp = "STDEVP"

	// NamedEntityAggTypeVar is a NamedEntityAggType enum value
	NamedEntityAggTypeVar = "VAR"

	// NamedEntityAggTypeVarp is a NamedEntityAggType enum value
	NamedEntityAggTypeVarp = "VARP"

	// NamedEntityAggTypePercentile is a NamedEntityAggType enum value
	NamedEntityAggTypePercentile = "PERCENTILE"

	// NamedEntityAggTypeMedian is a NamedEntityAggType enum value
	NamedEntityAggTypeMedian = "MEDIAN"

	// NamedEntityAggTypeCustom is a NamedEntityAggType enum value
	NamedEntityAggTypeCustom = "CUSTOM"
)

// NamedEntityAggType_Values returns all elements of the NamedEntityAggType enum
func NamedEntityAggType_Values() []string {
	return []string{
		NamedEntityAggTypeSum,
		NamedEntityAggTypeMin,
		NamedEntityAggTypeMax,
		NamedEntityAggTypeCount,
		NamedEntityAggTypeAverage,
		NamedEntityAggTypeDistinctCount,
		NamedEntityAggTypeStdev,
		NamedEntityAggTypeStdevp,
		NamedEntityAggTypeVar,
		NamedEntityAggTypeVarp,
		NamedEntityAggTypePercentile,
		NamedEntityAggTypeMedian,
		NamedEntityAggTypeCustom,
	}
}

const (
	// NamedFilterAggTypeNoAggregation is a NamedFilterAggType enum value
	NamedFilterAggTypeNoAggregation = "NO_AGGREGATION"

	// NamedFilterAggTypeSum is a NamedFilterAggType enum value
	NamedFilterAggTypeSum = "SUM"

	// NamedFilterAggTypeAverage is a NamedFilterAggType enum value
	NamedFilterAggTypeAverage = "AVERAGE"

	// NamedFilterAggTypeCount is a NamedFilterAggType enum value
	NamedFilterAggTypeCount = "COUNT"

	// NamedFilterAggTypeDistinctCount is a NamedFilterAggType enum value
	NamedFilterAggTypeDistinctCount = "DISTINCT_COUNT"

	// NamedFilterAggTypeMax is a NamedFilterAggType enum value
	NamedFilterAggTypeMax = "MAX"

	// NamedFilterAggTypeMedian is a NamedFilterAggType enum value
	NamedFilterAggTypeMedian = "MEDIAN"

	// NamedFilterAggTypeMin is a NamedFilterAggType enum value
	NamedFilterAggTypeMin = "MIN"

	// NamedFilterAggTypeStdev is a NamedFilterAggType enum value
	NamedFilterAggTypeStdev = "STDEV"

	// NamedFilterAggTypeStdevp is a NamedFilterAggType enum value
	NamedFilterAggTypeStdevp = "STDEVP"

	// NamedFilterAggTypeVar is a NamedFilterAggType enum value
	NamedFilterAggTypeVar = "VAR"

	// NamedFilterAggTypeVarp is a NamedFilterAggType enum value
	NamedFilterAggTypeVarp = "VARP"
)

// NamedFilterAggType_Values returns all elements of the NamedFilterAggType enum
func NamedFilterAggType_Values() []string {
	return []string{
		NamedFilterAggTypeNoAggregation,
		NamedFilterAggTypeSum,
		NamedFilterAggTypeAverage,
		NamedFilterAggTypeCount,
		NamedFilterAggTypeDistinctCount,
		NamedFilterAggTypeMax,
		NamedFilterAggTypeMedian,
		NamedFilterAggTypeMin,
		NamedFilterAggTypeStdev,
		NamedFilterAggTypeStdevp,
		NamedFilterAggTypeVar,
		NamedFilterAggTypeVarp,
	}
}

const (
	// NamedFilterTypeCategoryFilter is a NamedFilterType enum value
	NamedFilterTypeCategoryFilter = "CATEGORY_FILTER"

	// NamedFilterTypeNumericEqualityFilter is a NamedFilterType enum value
	NamedFilterTypeNumericEqualityFilter = "NUMERIC_EQUALITY_FILTER"

	// NamedFilterTypeNumericRangeFilter is a NamedFilterType enum value
	NamedFilterTypeNumericRangeFilter = "NUMERIC_RANGE_FILTER"

	// NamedFilterTypeDateRangeFilter is a NamedFilterType enum value
	NamedFilterTypeDateRangeFilter = "DATE_RANGE_FILTER"

	// NamedFilterTypeRelativeDateFilter is a NamedFilterType enum value
	NamedFilterTypeRelativeDateFilter = "RELATIVE_DATE_FILTER"
)

// NamedFilterType_Values returns all elements of the NamedFilterType enum
func NamedFilterType_Values() []string {
	return []string{
		NamedFilterTypeCategoryFilter,
		NamedFilterTypeNumericEqualityFilter,
		NamedFilterTypeNumericRangeFilter,
		NamedFilterTypeDateRangeFilter,
		NamedFilterTypeRelativeDateFilter,
	}
}

const (
	// NamespaceErrorTypePermissionDenied is a NamespaceErrorType enum value
	NamespaceErrorTypePermissionDenied = "PERMISSION_DENIED"

	// NamespaceErrorTypeInternalServiceError is a NamespaceErrorType enum value
	NamespaceErrorTypeInternalServiceError = "INTERNAL_SERVICE_ERROR"
)

// NamespaceErrorType_Values returns all elements of the NamespaceErrorType enum
func NamespaceErrorType_Values() []string {
	return []string{
		NamespaceErrorTypePermissionDenied,
		NamespaceErrorTypeInternalServiceError,
	}
}

const (
	// NamespaceStatusCreated is a NamespaceStatus enum value
	NamespaceStatusCreated = "CREATED"

	// NamespaceStatusCreating is a NamespaceStatus enum value
	NamespaceStatusCreating = "CREATING"

	// NamespaceStatusDeleting is a NamespaceStatus enum value
	NamespaceStatusDeleting = "DELETING"

	// NamespaceStatusRetryableFailure is a NamespaceStatus enum value
	NamespaceStatusRetryableFailure = "RETRYABLE_FAILURE"

	// NamespaceStatusNonRetryableFailure is a NamespaceStatus enum value
	NamespaceStatusNonRetryableFailure = "NON_RETRYABLE_FAILURE"
)

// NamespaceStatus_Values returns all elements of the NamespaceStatus enum
func NamespaceStatus_Values() []string {
	return []string{
		NamespaceStatusCreated,
		NamespaceStatusCreating,
		NamespaceStatusDeleting,
		NamespaceStatusRetryableFailure,
		NamespaceStatusNonRetryableFailure,
	}
}

const (
	// NegativeValueDisplayModePositive is a NegativeValueDisplayMode enum value
	NegativeValueDisplayModePositive = "POSITIVE"

	// NegativeValueDisplayModeNegative is a NegativeValueDisplayMode enum value
	NegativeValueDisplayModeNegative = "NEGATIVE"
)

// NegativeValueDisplayMode_Values returns all elements of the NegativeValueDisplayMode enum
func NegativeValueDisplayMode_Values() []string {
	return []string{
		NegativeValueDisplayModePositive,
		NegativeValueDisplayModeNegative,
	}
}

const (
	// NetworkInterfaceStatusCreating is a NetworkInterfaceStatus enum value
	NetworkInterfaceStatusCreating = "CREATING"

	// NetworkInterfaceStatusAvailable is a NetworkInterfaceStatus enum value
	NetworkInterfaceStatusAvailable = "AVAILABLE"

	// NetworkInterfaceStatusCreationFailed is a NetworkInterfaceStatus enum value
	NetworkInterfaceStatusCreationFailed = "CREATION_FAILED"

	// NetworkInterfaceStatusUpdating is a NetworkInterfaceStatus enum value
	NetworkInterfaceStatusUpdating = "UPDATING"

	// NetworkInterfaceStatusUpdateFailed is a NetworkInterfaceStatus enum value
	NetworkInterfaceStatusUpdateFailed = "UPDATE_FAILED"

	// NetworkInterfaceStatusDeleting is a NetworkInterfaceStatus enum value
	NetworkInterfaceStatusDeleting = "DELETING"

	// NetworkInterfaceStatusDeleted is a NetworkInterfaceStatus enum value
	NetworkInterfaceStatusDeleted = "DELETED"

	// NetworkInterfaceStatusDeletionFailed is a NetworkInterfaceStatus enum value
	NetworkInterfaceStatusDeletionFailed = "DELETION_FAILED"

	// NetworkInterfaceStatusDeletionScheduled is a NetworkInterfaceStatus enum value
	NetworkInterfaceStatusDeletionScheduled = "DELETION_SCHEDULED"

	// NetworkInterfaceStatusAttachmentFailedRollbackFailed is a NetworkInterfaceStatus enum value
	NetworkInterfaceStatusAttachmentFailedRollbackFailed = "ATTACHMENT_FAILED_ROLLBACK_FAILED"
)

// NetworkInterfaceStatus_Values returns all elements of the NetworkInterfaceStatus enum
func NetworkInterfaceStatus_Values() []string {
	return []string{
		NetworkInterfaceStatusCreating,
		NetworkInterfaceStatusAvailable,
		NetworkInterfaceStatusCreationFailed,
		NetworkInterfaceStatusUpdating,
		NetworkInterfaceStatusUpdateFailed,
		NetworkInterfaceStatusDeleting,
		NetworkInterfaceStatusDeleted,
		NetworkInterfaceStatusDeletionFailed,
		NetworkInterfaceStatusDeletionScheduled,
		NetworkInterfaceStatusAttachmentFailedRollbackFailed,
	}
}

const (
	// NullFilterOptionAllValues is a NullFilterOption enum value
	NullFilterOptionAllValues = "ALL_VALUES"

	// NullFilterOptionNonNullsOnly is a NullFilterOption enum value
	NullFilterOptionNonNullsOnly = "NON_NULLS_ONLY"

	// NullFilterOptionNullsOnly is a NullFilterOption enum value
	NullFilterOptionNullsOnly = "NULLS_ONLY"
)

// NullFilterOption_Values returns all elements of the NullFilterOption enum
func NullFilterOption_Values() []string {
	return []string{
		NullFilterOptionAllValues,
		NullFilterOptionNonNullsOnly,
		NullFilterOptionNullsOnly,
	}
}

const (
	// NumberScaleNone is a NumberScale enum value
	NumberScaleNone = "NONE"

	// NumberScaleAuto is a NumberScale enum value
	NumberScaleAuto = "AUTO"

	// NumberScaleThousands is a NumberScale enum value
	NumberScaleThousands = "THOUSANDS"

	// NumberScaleMillions is a NumberScale enum value
	NumberScaleMillions = "MILLIONS"

	// NumberScaleBillions is a NumberScale enum value
	NumberScaleBillions = "BILLIONS"

	// NumberScaleTrillions is a NumberScale enum value
	NumberScaleTrillions = "TRILLIONS"
)

// NumberScale_Values returns all elements of the NumberScale enum
func NumberScale_Values() []string {
	return []string{
		NumberScaleNone,
		NumberScaleAuto,
		NumberScaleThousands,
		NumberScaleMillions,
		NumberScaleBillions,
		NumberScaleTrillions,
	}
}

const (
	// NumericEqualityMatchOperatorEquals is a NumericEqualityMatchOperator enum value
	NumericEqualityMatchOperatorEquals = "EQUALS"

	// NumericEqualityMatchOperatorDoesNotEqual is a NumericEqualityMatchOperator enum value
	NumericEqualityMatchOperatorDoesNotEqual = "DOES_NOT_EQUAL"
)

// NumericEqualityMatchOperator_Values returns all elements of the NumericEqualityMatchOperator enum
func NumericEqualityMatchOperator_Values() []string {
	return []string{
		NumericEqualityMatchOperatorEquals,
		NumericEqualityMatchOperatorDoesNotEqual,
	}
}

const (
	// NumericFilterSelectAllOptionsFilterAllValues is a NumericFilterSelectAllOptions enum value
	NumericFilterSelectAllOptionsFilterAllValues = "FILTER_ALL_VALUES"
)

// NumericFilterSelectAllOptions_Values returns all elements of the NumericFilterSelectAllOptions enum
func NumericFilterSelectAllOptions_Values() []string {
	return []string{
		NumericFilterSelectAllOptionsFilterAllValues,
	}
}

const (
	// NumericSeparatorSymbolComma is a NumericSeparatorSymbol enum value
	NumericSeparatorSymbolComma = "COMMA"

	// NumericSeparatorSymbolDot is a NumericSeparatorSymbol enum value
	NumericSeparatorSymbolDot = "DOT"

	// NumericSeparatorSymbolSpace is a NumericSeparatorSymbol enum value
	NumericSeparatorSymbolSpace = "SPACE"
)

// NumericSeparatorSymbol_Values returns all elements of the NumericSeparatorSymbol enum
func NumericSeparatorSymbol_Values() []string {
	return []string{
		NumericSeparatorSymbolComma,
		NumericSeparatorSymbolDot,
		NumericSeparatorSymbolSpace,
	}
}

const (
	// OtherCategoriesInclude is a OtherCategories enum value
	OtherCategoriesInclude = "INCLUDE"

	// OtherCategoriesExclude is a OtherCategories enum value
	OtherCategoriesExclude = "EXCLUDE"
)

// OtherCategories_Values returns all elements of the OtherCategories enum
func OtherCategories_Values() []string {
	return []string{
		OtherCategoriesInclude,
		OtherCategoriesExclude,
	}
}

const (
	// PanelBorderStyleSolid is a PanelBorderStyle enum value
	PanelBorderStyleSolid = "SOLID"

	// PanelBorderStyleDashed is a PanelBorderStyle enum value
	PanelBorderStyleDashed = "DASHED"

	// PanelBorderStyleDotted is a PanelBorderStyle enum value
	PanelBorderStyleDotted = "DOTTED"
)

// PanelBorderStyle_Values returns all elements of the PanelBorderStyle enum
func PanelBorderStyle_Values() []string {
	return []string{
		PanelBorderStyleSolid,
		PanelBorderStyleDashed,
		PanelBorderStyleDotted,
	}
}

const (
	// PaperOrientationPortrait is a PaperOrientation enum value
	PaperOrientationPortrait = "PORTRAIT"

	// PaperOrientationLandscape is a PaperOrientation enum value
	PaperOrientationLandscape = "LANDSCAPE"
)

// PaperOrientation_Values returns all elements of the PaperOrientation enum
func PaperOrientation_Values() []string {
	return []string{
		PaperOrientationPortrait,
		PaperOrientationLandscape,
	}
}

const (
	// PaperSizeUsLetter is a PaperSize enum value
	PaperSizeUsLetter = "US_LETTER"

	// PaperSizeUsLegal is a PaperSize enum value
	PaperSizeUsLegal = "US_LEGAL"

	// PaperSizeUsTabloidLedger is a PaperSize enum value
	PaperSizeUsTabloidLedger = "US_TABLOID_LEDGER"

	// PaperSizeA0 is a PaperSize enum value
	PaperSizeA0 = "A0"

	// PaperSizeA1 is a PaperSize enum value
	PaperSizeA1 = "A1"

	// PaperSizeA2 is a PaperSize enum value
	PaperSizeA2 = "A2"

	// PaperSizeA3 is a PaperSize enum value
	PaperSizeA3 = "A3"

	// PaperSizeA4 is a PaperSize enum value
	PaperSizeA4 = "A4"

	// PaperSizeA5 is a PaperSize enum value
	PaperSizeA5 = "A5"

	// PaperSizeJisB4 is a PaperSize enum value
	PaperSizeJisB4 = "JIS_B4"

	// PaperSizeJisB5 is a PaperSize enum value
	PaperSizeJisB5 = "JIS_B5"
)

// PaperSize_Values returns all elements of the PaperSize enum
func PaperSize_Values() []string {
	return []string{
		PaperSizeUsLetter,
		PaperSizeUsLegal,
		PaperSizeUsTabloidLedger,
		PaperSizeA0,
		PaperSizeA1,
		PaperSizeA2,
		PaperSizeA3,
		PaperSizeA4,
		PaperSizeA5,
		PaperSizeJisB4,
		PaperSizeJisB5,
	}
}

const (
	// ParameterValueTypeMultiValued is a ParameterValueType enum value
	ParameterValueTypeMultiValued = "MULTI_VALUED"

	// ParameterValueTypeSingleValued is a ParameterValueType enum value
	ParameterValueTypeSingleValued = "SINGLE_VALUED"
)

// ParameterValueType_Values returns all elements of the ParameterValueType enum
func ParameterValueType_Values() []string {
	return []string{
		ParameterValueTypeMultiValued,
		ParameterValueTypeSingleValued,
	}
}

const (
	// PivotTableConditionalFormattingScopeRoleField is a PivotTableConditionalFormattingScopeRole enum value
	PivotTableConditionalFormattingScopeRoleField = "FIELD"

	// PivotTableConditionalFormattingScopeRoleFieldTotal is a PivotTableConditionalFormattingScopeRole enum value
	PivotTableConditionalFormattingScopeRoleFieldTotal = "FIELD_TOTAL"

	// PivotTableConditionalFormattingScopeRoleGrandTotal is a PivotTableConditionalFormattingScopeRole enum value
	PivotTableConditionalFormattingScopeRoleGrandTotal = "GRAND_TOTAL"
)

// PivotTableConditionalFormattingScopeRole_Values returns all elements of the PivotTableConditionalFormattingScopeRole enum
func PivotTableConditionalFormattingScopeRole_Values() []string {
	return []string{
		PivotTableConditionalFormattingScopeRoleField,
		PivotTableConditionalFormattingScopeRoleFieldTotal,
		PivotTableConditionalFormattingScopeRoleGrandTotal,
	}
}

const (
	// PivotTableDataPathTypeHierarchyRowsLayoutColumn is a PivotTableDataPathType enum value
	PivotTableDataPathTypeHierarchyRowsLayoutColumn = "HIERARCHY_ROWS_LAYOUT_COLUMN"

	// PivotTableDataPathTypeMultipleRowMetricsColumn is a PivotTableDataPathType enum value
	PivotTableDataPathTypeMultipleRowMetricsColumn = "MULTIPLE_ROW_METRICS_COLUMN"

	// PivotTableDataPathTypeEmptyColumnHeader is a PivotTableDataPathType enum value
	PivotTableDataPathTypeEmptyColumnHeader = "EMPTY_COLUMN_HEADER"

	// PivotTableDataPathTypeCountMetricColumn is a PivotTableDataPathType enum value
	PivotTableDataPathTypeCountMetricColumn = "COUNT_METRIC_COLUMN"
)

// PivotTableDataPathType_Values returns all elements of the PivotTableDataPathType enum
func PivotTableDataPathType_Values() []string {
	return []string{
		PivotTableDataPathTypeHierarchyRowsLayoutColumn,
		PivotTableDataPathTypeMultipleRowMetricsColumn,
		PivotTableDataPathTypeEmptyColumnHeader,
		PivotTableDataPathTypeCountMetricColumn,
	}
}

const (
	// PivotTableFieldCollapseStateCollapsed is a PivotTableFieldCollapseState enum value
	PivotTableFieldCollapseStateCollapsed = "COLLAPSED"

	// PivotTableFieldCollapseStateExpanded is a PivotTableFieldCollapseState enum value
	PivotTableFieldCollapseStateExpanded = "EXPANDED"
)

// PivotTableFieldCollapseState_Values returns all elements of the PivotTableFieldCollapseState enum
func PivotTableFieldCollapseState_Values() []string {
	return []string{
		PivotTableFieldCollapseStateCollapsed,
		PivotTableFieldCollapseStateExpanded,
	}
}

const (
	// PivotTableMetricPlacementRow is a PivotTableMetricPlacement enum value
	PivotTableMetricPlacementRow = "ROW"

	// PivotTableMetricPlacementColumn is a PivotTableMetricPlacement enum value
	PivotTableMetricPlacementColumn = "COLUMN"
)

// PivotTableMetricPlacement_Values returns all elements of the PivotTableMetricPlacement enum
func PivotTableMetricPlacement_Values() []string {
	return []string{
		PivotTableMetricPlacementRow,
		PivotTableMetricPlacementColumn,
	}
}

const (
	// PivotTableRowsLayoutTabular is a PivotTableRowsLayout enum value
	PivotTableRowsLayoutTabular = "TABULAR"

	// PivotTableRowsLayoutHierarchy is a PivotTableRowsLayout enum value
	PivotTableRowsLayoutHierarchy = "HIERARCHY"
)

// PivotTableRowsLayout_Values returns all elements of the PivotTableRowsLayout enum
func PivotTableRowsLayout_Values() []string {
	return []string{
		PivotTableRowsLayoutTabular,
		PivotTableRowsLayoutHierarchy,
	}
}

const (
	// PivotTableSubtotalLevelAll is a PivotTableSubtotalLevel enum value
	PivotTableSubtotalLevelAll = "ALL"

	// PivotTableSubtotalLevelCustom is a PivotTableSubtotalLevel enum value
	PivotTableSubtotalLevelCustom = "CUSTOM"

	// PivotTableSubtotalLevelLast is a PivotTableSubtotalLevel enum value
	PivotTableSubtotalLevelLast = "LAST"
)

// PivotTableSubtotalLevel_Values returns all elements of the PivotTableSubtotalLevel enum
func PivotTableSubtotalLevel_Values() []string {
	return []string{
		PivotTableSubtotalLevelAll,
		PivotTableSubtotalLevelCustom,
		PivotTableSubtotalLevelLast,
	}
}

const (
	// PrimaryValueDisplayTypeHidden is a PrimaryValueDisplayType enum value
	PrimaryValueDisplayTypeHidden = "HIDDEN"

	// PrimaryValueDisplayTypeComparison is a PrimaryValueDisplayType enum value
	PrimaryValueDisplayTypeComparison = "COMPARISON"

	// PrimaryValueDisplayTypeActual is a PrimaryValueDisplayType enum value
	PrimaryValueDisplayTypeActual = "ACTUAL"
)

// PrimaryValueDisplayType_Values returns all elements of the PrimaryValueDisplayType enum
func PrimaryValueDisplayType_Values() []string {
	return []string{
		PrimaryValueDisplayTypeHidden,
		PrimaryValueDisplayTypeComparison,
		PrimaryValueDisplayTypeActual,
	}
}

const (
	// PropertyRolePrimary is a PropertyRole enum value
	PropertyRolePrimary = "PRIMARY"

	// PropertyRoleId is a PropertyRole enum value
	PropertyRoleId = "ID"
)

// PropertyRole_Values returns all elements of the PropertyRole enum
func PropertyRole_Values() []string {
	return []string{
		PropertyRolePrimary,
		PropertyRoleId,
	}
}

const (
	// PropertyUsageInherit is a PropertyUsage enum value
	PropertyUsageInherit = "INHERIT"

	// PropertyUsageDimension is a PropertyUsage enum value
	PropertyUsageDimension = "DIMENSION"

	// PropertyUsageMeasure is a PropertyUsage enum value
	PropertyUsageMeasure = "MEASURE"
)

// PropertyUsage_Values returns all elements of the PropertyUsage enum
func PropertyUsage_Values() []string {
	return []string{
		PropertyUsageInherit,
		PropertyUsageDimension,
		PropertyUsageMeasure,
	}
}

const (
	// PurchaseModeManual is a PurchaseMode enum value
	PurchaseModeManual = "MANUAL"

	// PurchaseModeAutoPurchase is a PurchaseMode enum value
	PurchaseModeAutoPurchase = "AUTO_PURCHASE"
)

// PurchaseMode_Values returns all elements of the PurchaseMode enum
func PurchaseMode_Values() []string {
	return []string{
		PurchaseModeManual,
		PurchaseModeAutoPurchase,
	}
}

const (
	// RadarChartAxesRangeScaleAuto is a RadarChartAxesRangeScale enum value
	RadarChartAxesRangeScaleAuto = "AUTO"

	// RadarChartAxesRangeScaleIndependent is a RadarChartAxesRangeScale enum value
	RadarChartAxesRangeScaleIndependent = "INDEPENDENT"

	// RadarChartAxesRangeScaleShared is a RadarChartAxesRangeScale enum value
	RadarChartAxesRangeScaleShared = "SHARED"
)

// RadarChartAxesRangeScale_Values returns all elements of the RadarChartAxesRangeScale enum
func RadarChartAxesRangeScale_Values() []string {
	return []string{
		RadarChartAxesRangeScaleAuto,
		RadarChartAxesRangeScaleIndependent,
		RadarChartAxesRangeScaleShared,
	}
}

const (
	// RadarChartShapeCircle is a RadarChartShape enum value
	RadarChartShapeCircle = "CIRCLE"

	// RadarChartShapePolygon is a RadarChartShape enum value
	RadarChartShapePolygon = "POLYGON"
)

// RadarChartShape_Values returns all elements of the RadarChartShape enum
func RadarChartShape_Values() []string {
	return []string{
		RadarChartShapeCircle,
		RadarChartShapePolygon,
	}
}

const (
	// ReferenceLineLabelHorizontalPositionLeft is a ReferenceLineLabelHorizontalPosition enum value
	ReferenceLineLabelHorizontalPositionLeft = "LEFT"

	// ReferenceLineLabelHorizontalPositionCenter is a ReferenceLineLabelHorizontalPosition enum value
	ReferenceLineLabelHorizontalPositionCenter = "CENTER"

	// ReferenceLineLabelHorizontalPositionRight is a ReferenceLineLabelHorizontalPosition enum value
	ReferenceLineLabelHorizontalPositionRight = "RIGHT"
)

// ReferenceLineLabelHorizontalPosition_Values returns all elements of the ReferenceLineLabelHorizontalPosition enum
func ReferenceLineLabelHorizontalPosition_Values() []string {
	return []string{
		ReferenceLineLabelHorizontalPositionLeft,
		ReferenceLineLabelHorizontalPositionCenter,
		ReferenceLineLabelHorizontalPositionRight,
	}
}

const (
	// ReferenceLineLabelVerticalPositionAbove is a ReferenceLineLabelVerticalPosition enum value
	ReferenceLineLabelVerticalPositionAbove = "ABOVE"

	// ReferenceLineLabelVerticalPositionBelow is a ReferenceLineLabelVerticalPosition enum value
	ReferenceLineLabelVerticalPositionBelow = "BELOW"
)

// ReferenceLineLabelVerticalPosition_Values returns all elements of the ReferenceLineLabelVerticalPosition enum
func ReferenceLineLabelVerticalPosition_Values() []string {
	return []string{
		ReferenceLineLabelVerticalPositionAbove,
		ReferenceLineLabelVerticalPositionBelow,
	}
}

const (
	// ReferenceLinePatternTypeSolid is a ReferenceLinePatternType enum value
	ReferenceLinePatternTypeSolid = "SOLID"

	// ReferenceLinePatternTypeDashed is a ReferenceLinePatternType enum value
	ReferenceLinePatternTypeDashed = "DASHED"

	// ReferenceLinePatternTypeDotted is a ReferenceLinePatternType enum value
	ReferenceLinePatternTypeDotted = "DOTTED"
)

// ReferenceLinePatternType_Values returns all elements of the ReferenceLinePatternType enum
func ReferenceLinePatternType_Values() []string {
	return []string{
		ReferenceLinePatternTypeSolid,
		ReferenceLinePatternTypeDashed,
		ReferenceLinePatternTypeDotted,
	}
}

const (
	// ReferenceLineSeriesTypeBar is a ReferenceLineSeriesType enum value
	ReferenceLineSeriesTypeBar = "BAR"

	// ReferenceLineSeriesTypeLine is a ReferenceLineSeriesType enum value
	ReferenceLineSeriesTypeLine = "LINE"
)

// ReferenceLineSeriesType_Values returns all elements of the ReferenceLineSeriesType enum
func ReferenceLineSeriesType_Values() []string {
	return []string{
		ReferenceLineSeriesTypeBar,
		ReferenceLineSeriesTypeLine,
	}
}

const (
	// ReferenceLineValueLabelRelativePositionBeforeCustomLabel is a ReferenceLineValueLabelRelativePosition enum value
	ReferenceLineValueLabelRelativePositionBeforeCustomLabel = "BEFORE_CUSTOM_LABEL"

	// ReferenceLineValueLabelRelativePositionAfterCustomLabel is a ReferenceLineValueLabelRelativePosition enum value
	ReferenceLineValueLabelRelativePositionAfterCustomLabel = "AFTER_CUSTOM_LABEL"
)

// ReferenceLineValueLabelRelativePosition_Values returns all elements of the ReferenceLineValueLabelRelativePosition enum
func ReferenceLineValueLabelRelativePosition_Values() []string {
	return []string{
		ReferenceLineValueLabelRelativePositionBeforeCustomLabel,
		ReferenceLineValueLabelRelativePositionAfterCustomLabel,
	}
}

const (
	// RefreshIntervalMinute15 is a RefreshInterval enum value
	RefreshIntervalMinute15 = "MINUTE15"

	// RefreshIntervalMinute30 is a RefreshInterval enum value
	RefreshIntervalMinute30 = "MINUTE30"

	// RefreshIntervalHourly is a RefreshInterval enum value
	RefreshIntervalHourly = "HOURLY"

	// RefreshIntervalDaily is a RefreshInterval enum value
	RefreshIntervalDaily = "DAILY"

	// RefreshIntervalWeekly is a RefreshInterval enum value
	RefreshIntervalWeekly = "WEEKLY"

	// RefreshIntervalMonthly is a RefreshInterval enum value
	RefreshIntervalMonthly = "MONTHLY"
)

// RefreshInterval_Values returns all elements of the RefreshInterval enum
func RefreshInterval_Values() []string {
	return []string{
		RefreshIntervalMinute15,
		RefreshIntervalMinute30,
		RefreshIntervalHourly,
		RefreshIntervalDaily,
		RefreshIntervalWeekly,
		RefreshIntervalMonthly,
	}
}

const (
	// RelativeDateTypePrevious is a RelativeDateType enum value
	RelativeDateTypePrevious = "PREVIOUS"

	// RelativeDateTypeThis is a RelativeDateType enum value
	RelativeDateTypeThis = "THIS"

	// RelativeDateTypeLast is a RelativeDateType enum value
	RelativeDateTypeLast = "LAST"

	// RelativeDateTypeNow is a RelativeDateType enum value
	RelativeDateTypeNow = "NOW"

	// RelativeDateTypeNext is a RelativeDateType enum value
	RelativeDateTypeNext = "NEXT"
)

// RelativeDateType_Values returns all elements of the RelativeDateType enum
func RelativeDateType_Values() []string {
	return []string{
		RelativeDateTypePrevious,
		RelativeDateTypeThis,
		RelativeDateTypeLast,
		RelativeDateTypeNow,
		RelativeDateTypeNext,
	}
}

const (
	// RelativeFontSizeExtraSmall is a RelativeFontSize enum value
	RelativeFontSizeExtraSmall = "EXTRA_SMALL"

	// RelativeFontSizeSmall is a RelativeFontSize enum value
	RelativeFontSizeSmall = "SMALL"

	// RelativeFontSizeMedium is a RelativeFontSize enum value
	RelativeFontSizeMedium = "MEDIUM"

	// RelativeFontSizeLarge is a RelativeFontSize enum value
	RelativeFontSizeLarge = "LARGE"

	// RelativeFontSizeExtraLarge is a RelativeFontSize enum value
	RelativeFontSizeExtraLarge = "EXTRA_LARGE"
)

// RelativeFontSize_Values returns all elements of the RelativeFontSize enum
func RelativeFontSize_Values() []string {
	return []string{
		RelativeFontSizeExtraSmall,
		RelativeFontSizeSmall,
		RelativeFontSizeMedium,
		RelativeFontSizeLarge,
		RelativeFontSizeExtraLarge,
	}
}

const (
	// ResizeOptionFixed is a ResizeOption enum value
	ResizeOptionFixed = "FIXED"

	// ResizeOptionResponsive is a ResizeOption enum value
	ResizeOptionResponsive = "RESPONSIVE"
)

// ResizeOption_Values returns all elements of the ResizeOption enum
func ResizeOption_Values() []string {
	return []string{
		ResizeOptionFixed,
		ResizeOptionResponsive,
	}
}

const (
	// ResourceStatusCreationInProgress is a ResourceStatus enum value
	ResourceStatusCreationInProgress = "CREATION_IN_PROGRESS"

	// ResourceStatusCreationSuccessful is a ResourceStatus enum value
	ResourceStatusCreationSuccessful = "CREATION_SUCCESSFUL"

	// ResourceStatusCreationFailed is a ResourceStatus enum value
	ResourceStatusCreationFailed = "CREATION_FAILED"

	// ResourceStatusUpdateInProgress is a ResourceStatus enum value
	ResourceStatusUpdateInProgress = "UPDATE_IN_PROGRESS"

	// ResourceStatusUpdateSuccessful is a ResourceStatus enum value
	ResourceStatusUpdateSuccessful = "UPDATE_SUCCESSFUL"

	// ResourceStatusUpdateFailed is a ResourceStatus enum value
	ResourceStatusUpdateFailed = "UPDATE_FAILED"

	// ResourceStatusDeleted is a ResourceStatus enum value
	ResourceStatusDeleted = "DELETED"
)

// ResourceStatus_Values returns all elements of the ResourceStatus enum
func ResourceStatus_Values() []string {
	return []string{
		ResourceStatusCreationInProgress,
		ResourceStatusCreationSuccessful,
		ResourceStatusCreationFailed,
		ResourceStatusUpdateInProgress,
		ResourceStatusUpdateSuccessful,
		ResourceStatusUpdateFailed,
		ResourceStatusDeleted,
	}
}

const (
	// ReviewedAnswerErrorCodeInternalError is a ReviewedAnswerErrorCode enum value
	ReviewedAnswerErrorCodeInternalError = "INTERNAL_ERROR"

	// ReviewedAnswerErrorCodeMissingAnswer is a ReviewedAnswerErrorCode enum value
	ReviewedAnswerErrorCodeMissingAnswer = "MISSING_ANSWER"

	// ReviewedAnswerErrorCodeDatasetDoesNotExist is a ReviewedAnswerErrorCode enum value
	ReviewedAnswerErrorCodeDatasetDoesNotExist = "DATASET_DOES_NOT_EXIST"

	// ReviewedAnswerErrorCodeInvalidDatasetArn is a ReviewedAnswerErrorCode enum value
	ReviewedAnswerErrorCodeInvalidDatasetArn = "INVALID_DATASET_ARN"

	// ReviewedAnswerErrorCodeDuplicatedAnswer is a ReviewedAnswerErrorCode enum value
	ReviewedAnswerErrorCodeDuplicatedAnswer = "DUPLICATED_ANSWER"

	// ReviewedAnswerErrorCodeInvalidData is a ReviewedAnswerErrorCode enum value
	ReviewedAnswerErrorCodeInvalidData = "INVALID_DATA"

	// ReviewedAnswerErrorCodeMissingRequiredFields is a ReviewedAnswerErrorCode enum value
	ReviewedAnswerErrorCodeMissingRequiredFields = "MISSING_REQUIRED_FIELDS"
)

// ReviewedAnswerErrorCode_Values returns all elements of the ReviewedAnswerErrorCode enum
func ReviewedAnswerErrorCode_Values() []string {
	return []string{
		ReviewedAnswerErrorCodeInternalError,
		ReviewedAnswerErrorCodeMissingAnswer,
		ReviewedAnswerErrorCodeDatasetDoesNotExist,
		ReviewedAnswerErrorCodeInvalidDatasetArn,
		ReviewedAnswerErrorCodeDuplicatedAnswer,
		ReviewedAnswerErrorCodeInvalidData,
		ReviewedAnswerErrorCodeMissingRequiredFields,
	}
}

const (
	// RoleAdmin is a Role enum value
	RoleAdmin = "ADMIN"

	// RoleAuthor is a Role enum value
	RoleAuthor = "AUTHOR"

	// RoleReader is a Role enum value
	RoleReader = "READER"

	// RoleAdminPro is a Role enum value
	RoleAdminPro = "ADMIN_PRO"

	// RoleAuthorPro is a Role enum value
	RoleAuthorPro = "AUTHOR_PRO"

	// RoleReaderPro is a Role enum value
	RoleReaderPro = "READER_PRO"
)

// Role_Values returns all elements of the Role enum
func Role_Values() []string {
	return []string{
		RoleAdmin,
		RoleAuthor,
		RoleReader,
		RoleAdminPro,
		RoleAuthorPro,
		RoleReaderPro,
	}
}

const (
	// RowLevelPermissionFormatVersionVersion1 is a RowLevelPermissionFormatVersion enum value
	RowLevelPermissionFormatVersionVersion1 = "VERSION_1"

	// RowLevelPermissionFormatVersionVersion2 is a RowLevelPermissionFormatVersion enum value
	RowLevelPermissionFormatVersionVersion2 = "VERSION_2"
)

// RowLevelPermissionFormatVersion_Values returns all elements of the RowLevelPermissionFormatVersion enum
func RowLevelPermissionFormatVersion_Values() []string {
	return []string{
		RowLevelPermissionFormatVersionVersion1,
		RowLevelPermissionFormatVersionVersion2,
	}
}

const (
	// RowLevelPermissionPolicyGrantAccess is a RowLevelPermissionPolicy enum value
	RowLevelPermissionPolicyGrantAccess = "GRANT_ACCESS"

	// RowLevelPermissionPolicyDenyAccess is a RowLevelPermissionPolicy enum value
	RowLevelPermissionPolicyDenyAccess = "DENY_ACCESS"
)

// RowLevelPermissionPolicy_Values returns all elements of the RowLevelPermissionPolicy enum
func RowLevelPermissionPolicy_Values() []string {
	return []string{
		RowLevelPermissionPolicyGrantAccess,
		RowLevelPermissionPolicyDenyAccess,
	}
}

const (
	// SectionPageBreakStatusEnabled is a SectionPageBreakStatus enum value
	SectionPageBreakStatusEnabled = "ENABLED"

	// SectionPageBreakStatusDisabled is a SectionPageBreakStatus enum value
	SectionPageBreakStatusDisabled = "DISABLED"
)

// SectionPageBreakStatus_Values returns all elements of the SectionPageBreakStatus enum
func SectionPageBreakStatus_Values() []string {
	return []string{
		SectionPageBreakStatusEnabled,
		SectionPageBreakStatusDisabled,
	}
}

const (
	// SelectAllValueOptionsAllValues is a SelectAllValueOptions enum value
	SelectAllValueOptionsAllValues = "ALL_VALUES"
)

// SelectAllValueOptions_Values returns all elements of the SelectAllValueOptions enum
func SelectAllValueOptions_Values() []string {
	return []string{
		SelectAllValueOptionsAllValues,
	}
}

const (
	// SelectedFieldOptionsAllFields is a SelectedFieldOptions enum value
	SelectedFieldOptionsAllFields = "ALL_FIELDS"
)

// SelectedFieldOptions_Values returns all elements of the SelectedFieldOptions enum
func SelectedFieldOptions_Values() []string {
	return []string{
		SelectedFieldOptionsAllFields,
	}
}

const (
	// SelectedTooltipTypeBasic is a SelectedTooltipType enum value
	SelectedTooltipTypeBasic = "BASIC"

	// SelectedTooltipTypeDetailed is a SelectedTooltipType enum value
	SelectedTooltipTypeDetailed = "DETAILED"
)

// SelectedTooltipType_Values returns all elements of the SelectedTooltipType enum
func SelectedTooltipType_Values() []string {
	return []string{
		SelectedTooltipTypeBasic,
		SelectedTooltipTypeDetailed,
	}
}

const (
	// ServiceTypeRedshift is a ServiceType enum value
	ServiceTypeRedshift = "REDSHIFT"
)

// ServiceType_Values returns all elements of the ServiceType enum
func ServiceType_Values() []string {
	return []string{
		ServiceTypeRedshift,
	}
}

const (
	// SharingModelAccount is a SharingModel enum value
	SharingModelAccount = "ACCOUNT"

	// SharingModelNamespace is a SharingModel enum value
	SharingModelNamespace = "NAMESPACE"
)

// SharingModel_Values returns all elements of the SharingModel enum
func SharingModel_Values() []string {
	return []string{
		SharingModelAccount,
		SharingModelNamespace,
	}
}

const (
	// SheetContentTypePaginated is a SheetContentType enum value
	SheetContentTypePaginated = "PAGINATED"

	// SheetContentTypeInteractive is a SheetContentType enum value
	SheetContentTypeInteractive = "INTERACTIVE"
)

// SheetContentType_Values returns all elements of the SheetContentType enum
func SheetContentType_Values() []string {
	return []string{
		SheetContentTypePaginated,
		SheetContentTypeInteractive,
	}
}

const (
	// SheetControlDateTimePickerTypeSingleValued is a SheetControlDateTimePickerType enum value
	SheetControlDateTimePickerTypeSingleValued = "SINGLE_VALUED"

	// SheetControlDateTimePickerTypeDateRange is a SheetControlDateTimePickerType enum value
	SheetControlDateTimePickerTypeDateRange = "DATE_RANGE"
)

// SheetControlDateTimePickerType_Values returns all elements of the SheetControlDateTimePickerType enum
func SheetControlDateTimePickerType_Values() []string {
	return []string{
		SheetControlDateTimePickerTypeSingleValued,
		SheetControlDateTimePickerTypeDateRange,
	}
}

const (
	// SheetControlListTypeMultiSelect is a SheetControlListType enum value
	SheetControlListTypeMultiSelect = "MULTI_SELECT"

	// SheetControlListTypeSingleSelect is a SheetControlListType enum value
	SheetControlListTypeSingleSelect = "SINGLE_SELECT"
)

// SheetControlListType_Values returns all elements of the SheetControlListType enum
func SheetControlListType_Values() []string {
	return []string{
		SheetControlListTypeMultiSelect,
		SheetControlListTypeSingleSelect,
	}
}

const (
	// SheetControlSliderTypeSinglePoint is a SheetControlSliderType enum value
	SheetControlSliderTypeSinglePoint = "SINGLE_POINT"

	// SheetControlSliderTypeRange is a SheetControlSliderType enum value
	SheetControlSliderTypeRange = "RANGE"
)

// SheetControlSliderType_Values returns all elements of the SheetControlSliderType enum
func SheetControlSliderType_Values() []string {
	return []string{
		SheetControlSliderTypeSinglePoint,
		SheetControlSliderTypeRange,
	}
}

const (
	// SimpleAttributeAggregationFunctionUniqueValue is a SimpleAttributeAggregationFunction enum value
	SimpleAttributeAggregationFunctionUniqueValue = "UNIQUE_VALUE"
)

// SimpleAttributeAggregationFunction_Values returns all elements of the SimpleAttributeAggregationFunction enum
func SimpleAttributeAggregationFunction_Values() []string {
	return []string{
		SimpleAttributeAggregationFunctionUniqueValue,
	}
}

const (
	// SimpleNumericalAggregationFunctionSum is a SimpleNumericalAggregationFunction enum value
	SimpleNumericalAggregationFunctionSum = "SUM"

	// SimpleNumericalAggregationFunctionAverage is a SimpleNumericalAggregationFunction enum value
	SimpleNumericalAggregationFunctionAverage = "AVERAGE"

	// SimpleNumericalAggregationFunctionMin is a SimpleNumericalAggregationFunction enum value
	SimpleNumericalAggregationFunctionMin = "MIN"

	// SimpleNumericalAggregationFunctionMax is a SimpleNumericalAggregationFunction enum value
	SimpleNumericalAggregationFunctionMax = "MAX"

	// SimpleNumericalAggregationFunctionCount is a SimpleNumericalAggregationFunction enum value
	SimpleNumericalAggregationFunctionCount = "COUNT"

	// SimpleNumericalAggregationFunctionDistinctCount is a SimpleNumericalAggregationFunction enum value
	SimpleNumericalAggregationFunctionDistinctCount = "DISTINCT_COUNT"

	// SimpleNumericalAggregationFunctionVar is a SimpleNumericalAggregationFunction enum value
	SimpleNumericalAggregationFunctionVar = "VAR"

	// SimpleNumericalAggregationFunctionVarp is a SimpleNumericalAggregationFunction enum value
	SimpleNumericalAggregationFunctionVarp = "VARP"

	// SimpleNumericalAggregationFunctionStdev is a SimpleNumericalAggregationFunction enum value
	SimpleNumericalAggregationFunctionStdev = "STDEV"

	// SimpleNumericalAggregationFunctionStdevp is a SimpleNumericalAggregationFunction enum value
	SimpleNumericalAggregationFunctionStdevp = "STDEVP"

	// SimpleNumericalAggregationFunctionMedian is a SimpleNumericalAggregationFunction enum value
	SimpleNumericalAggregationFunctionMedian = "MEDIAN"
)

// SimpleNumericalAggregationFunction_Values returns all elements of the SimpleNumericalAggregationFunction enum
func SimpleNumericalAggregationFunction_Values() []string {
	return []string{
		SimpleNumericalAggregationFunctionSum,
		SimpleNumericalAggregationFunctionAverage,
		SimpleNumericalAggregationFunctionMin,
		SimpleNumericalAggregationFunctionMax,
		SimpleNumericalAggregationFunctionCount,
		SimpleNumericalAggregationFunctionDistinctCount,
		SimpleNumericalAggregationFunctionVar,
		SimpleNumericalAggregationFunctionVarp,
		SimpleNumericalAggregationFunctionStdev,
		SimpleNumericalAggregationFunctionStdevp,
		SimpleNumericalAggregationFunctionMedian,
	}
}

const (
	// SimpleTotalAggregationFunctionDefault is a SimpleTotalAggregationFunction enum value
	SimpleTotalAggregationFunctionDefault = "DEFAULT"

	// SimpleTotalAggregationFunctionSum is a SimpleTotalAggregationFunction enum value
	SimpleTotalAggregationFunctionSum = "SUM"

	// SimpleTotalAggregationFunctionAverage is a SimpleTotalAggregationFunction enum value
	SimpleTotalAggregationFunctionAverage = "AVERAGE"

	// SimpleTotalAggregationFunctionMin is a SimpleTotalAggregationFunction enum value
	SimpleTotalAggregationFunctionMin = "MIN"

	// SimpleTotalAggregationFunctionMax is a SimpleTotalAggregationFunction enum value
	SimpleTotalAggregationFunctionMax = "MAX"

	// SimpleTotalAggregationFunctionNone is a SimpleTotalAggregationFunction enum value
	SimpleTotalAggregationFunctionNone = "NONE"
)

// SimpleTotalAggregationFunction_Values returns all elements of the SimpleTotalAggregationFunction enum
func SimpleTotalAggregationFunction_Values() []string {
	return []string{
		SimpleTotalAggregationFunctionDefault,
		SimpleTotalAggregationFunctionSum,
		SimpleTotalAggregationFunctionAverage,
		SimpleTotalAggregationFunctionMin,
		SimpleTotalAggregationFunctionMax,
		SimpleTotalAggregationFunctionNone,
	}
}

const (
	// SingleYAxisOptionPrimaryYAxis is a SingleYAxisOption enum value
	SingleYAxisOptionPrimaryYAxis = "PRIMARY_Y_AXIS"
)

// SingleYAxisOption_Values returns all elements of the SingleYAxisOption enum
func SingleYAxisOption_Values() []string {
	return []string{
		SingleYAxisOptionPrimaryYAxis,
	}
}

const (
	// SmallMultiplesAxisPlacementOutside is a SmallMultiplesAxisPlacement enum value
	SmallMultiplesAxisPlacementOutside = "OUTSIDE"

	// SmallMultiplesAxisPlacementInside is a SmallMultiplesAxisPlacement enum value
	SmallMultiplesAxisPlacementInside = "INSIDE"
)

// SmallMultiplesAxisPlacement_Values returns all elements of the SmallMultiplesAxisPlacement enum
func SmallMultiplesAxisPlacement_Values() []string {
	return []string{
		SmallMultiplesAxisPlacementOutside,
		SmallMultiplesAxisPlacementInside,
	}
}

const (
	// SmallMultiplesAxisScaleShared is a SmallMultiplesAxisScale enum value
	SmallMultiplesAxisScaleShared = "SHARED"

	// SmallMultiplesAxisScaleIndependent is a SmallMultiplesAxisScale enum value
	SmallMultiplesAxisScaleIndependent = "INDEPENDENT"
)

// SmallMultiplesAxisScale_Values returns all elements of the SmallMultiplesAxisScale enum
func SmallMultiplesAxisScale_Values() []string {
	return []string{
		SmallMultiplesAxisScaleShared,
		SmallMultiplesAxisScaleIndependent,
	}
}

const (
	// SnapshotFileFormatTypeCsv is a SnapshotFileFormatType enum value
	SnapshotFileFormatTypeCsv = "CSV"

	// SnapshotFileFormatTypePdf is a SnapshotFileFormatType enum value
	SnapshotFileFormatTypePdf = "PDF"

	// SnapshotFileFormatTypeExcel is a SnapshotFileFormatType enum value
	SnapshotFileFormatTypeExcel = "EXCEL"
)

// SnapshotFileFormatType_Values returns all elements of the SnapshotFileFormatType enum
func SnapshotFileFormatType_Values() []string {
	return []string{
		SnapshotFileFormatTypeCsv,
		SnapshotFileFormatTypePdf,
		SnapshotFileFormatTypeExcel,
	}
}

const (
	// SnapshotFileSheetSelectionScopeAllVisuals is a SnapshotFileSheetSelectionScope enum value
	SnapshotFileSheetSelectionScopeAllVisuals = "ALL_VISUALS"

	// SnapshotFileSheetSelectionScopeSelectedVisuals is a SnapshotFileSheetSelectionScope enum value
	SnapshotFileSheetSelectionScopeSelectedVisuals = "SELECTED_VISUALS"
)

// SnapshotFileSheetSelectionScope_Values returns all elements of the SnapshotFileSheetSelectionScope enum
func SnapshotFileSheetSelectionScope_Values() []string {
	return []string{
		SnapshotFileSheetSelectionScopeAllVisuals,
		SnapshotFileSheetSelectionScopeSelectedVisuals,
	}
}

const (
	// SnapshotJobStatusQueued is a SnapshotJobStatus enum value
	SnapshotJobStatusQueued = "QUEUED"

	// SnapshotJobStatusRunning is a SnapshotJobStatus enum value
	SnapshotJobStatusRunning = "RUNNING"

	// SnapshotJobStatusCompleted is a SnapshotJobStatus enum value
	SnapshotJobStatusCompleted = "COMPLETED"

	// SnapshotJobStatusFailed is a SnapshotJobStatus enum value
	SnapshotJobStatusFailed = "FAILED"
)

// SnapshotJobStatus_Values returns all elements of the SnapshotJobStatus enum
func SnapshotJobStatus_Values() []string {
	return []string{
		SnapshotJobStatusQueued,
		SnapshotJobStatusRunning,
		SnapshotJobStatusCompleted,
		SnapshotJobStatusFailed,
	}
}

const (
	// SortDirectionAsc is a SortDirection enum value
	SortDirectionAsc = "ASC"

	// SortDirectionDesc is a SortDirection enum value
	SortDirectionDesc = "DESC"
)

// SortDirection_Values returns all elements of the SortDirection enum
func SortDirection_Values() []string {
	return []string{
		SortDirectionAsc,
		SortDirectionDesc,
	}
}

const (
	// SpecialValueEmpty is a SpecialValue enum value
	SpecialValueEmpty = "EMPTY"

	// SpecialValueNull is a SpecialValue enum value
	SpecialValueNull = "NULL"

	// SpecialValueOther is a SpecialValue enum value
	SpecialValueOther = "OTHER"
)

// SpecialValue_Values returns all elements of the SpecialValue enum
func SpecialValue_Values() []string {
	return []string{
		SpecialValueEmpty,
		SpecialValueNull,
		SpecialValueOther,
	}
}

const (
	// StarburstProductTypeGalaxy is a StarburstProductType enum value
	StarburstProductTypeGalaxy = "GALAXY"

	// StarburstProductTypeEnterprise is a StarburstProductType enum value
	StarburstProductTypeEnterprise = "ENTERPRISE"
)

// StarburstProductType_Values returns all elements of the StarburstProductType enum
func StarburstProductType_Values() []string {
	return []string{
		StarburstProductTypeGalaxy,
		StarburstProductTypeEnterprise,
	}
}

const (
	// StatusEnabled is a Status enum value
	StatusEnabled = "ENABLED"

	// StatusDisabled is a Status enum value
	StatusDisabled = "DISABLED"
)

// Status_Values returns all elements of the Status enum
func Status_Values() []string {
	return []string{
		StatusEnabled,
		StatusDisabled,
	}
}

const (
	// StyledCellTypeTotal is a StyledCellType enum value
	StyledCellTypeTotal = "TOTAL"

	// StyledCellTypeMetricHeader is a StyledCellType enum value
	StyledCellTypeMetricHeader = "METRIC_HEADER"

	// StyledCellTypeValue is a StyledCellType enum value
	StyledCellTypeValue = "VALUE"
)

// StyledCellType_Values returns all elements of the StyledCellType enum
func StyledCellType_Values() []string {
	return []string{
		StyledCellTypeTotal,
		StyledCellTypeMetricHeader,
		StyledCellTypeValue,
	}
}

const (
	// TableBorderStyleNone is a TableBorderStyle enum value
	TableBorderStyleNone = "NONE"

	// TableBorderStyleSolid is a TableBorderStyle enum value
	TableBorderStyleSolid = "SOLID"
)

// TableBorderStyle_Values returns all elements of the TableBorderStyle enum
func TableBorderStyle_Values() []string {
	return []string{
		TableBorderStyleNone,
		TableBorderStyleSolid,
	}
}

const (
	// TableCellImageScalingConfigurationFitToCellHeight is a TableCellImageScalingConfiguration enum value
	TableCellImageScalingConfigurationFitToCellHeight = "FIT_TO_CELL_HEIGHT"

	// TableCellImageScalingConfigurationFitToCellWidth is a TableCellImageScalingConfiguration enum value
	TableCellImageScalingConfigurationFitToCellWidth = "FIT_TO_CELL_WIDTH"

	// TableCellImageScalingConfigurationDoNotScale is a TableCellImageScalingConfiguration enum value
	TableCellImageScalingConfigurationDoNotScale = "DO_NOT_SCALE"
)

// TableCellImageScalingConfiguration_Values returns all elements of the TableCellImageScalingConfiguration enum
func TableCellImageScalingConfiguration_Values() []string {
	return []string{
		TableCellImageScalingConfigurationFitToCellHeight,
		TableCellImageScalingConfigurationFitToCellWidth,
		TableCellImageScalingConfigurationDoNotScale,
	}
}

const (
	// TableFieldIconSetTypeLink is a TableFieldIconSetType enum value
	TableFieldIconSetTypeLink = "LINK"
)

// TableFieldIconSetType_Values returns all elements of the TableFieldIconSetType enum
func TableFieldIconSetType_Values() []string {
	return []string{
		TableFieldIconSetTypeLink,
	}
}

const (
	// TableOrientationVertical is a TableOrientation enum value
	TableOrientationVertical = "VERTICAL"

	// TableOrientationHorizontal is a TableOrientation enum value
	TableOrientationHorizontal = "HORIZONTAL"
)

// TableOrientation_Values returns all elements of the TableOrientation enum
func TableOrientation_Values() []string {
	return []string{
		TableOrientationVertical,
		TableOrientationHorizontal,
	}
}

const (
	// TableTotalsPlacementStart is a TableTotalsPlacement enum value
	TableTotalsPlacementStart = "START"

	// TableTotalsPlacementEnd is a TableTotalsPlacement enum value
	TableTotalsPlacementEnd = "END"

	// TableTotalsPlacementAuto is a TableTotalsPlacement enum value
	TableTotalsPlacementAuto = "AUTO"
)

// TableTotalsPlacement_Values returns all elements of the TableTotalsPlacement enum
func TableTotalsPlacement_Values() []string {
	return []string{
		TableTotalsPlacementStart,
		TableTotalsPlacementEnd,
		TableTotalsPlacementAuto,
	}
}

const (
	// TableTotalsScrollStatusPinned is a TableTotalsScrollStatus enum value
	TableTotalsScrollStatusPinned = "PINNED"

	// TableTotalsScrollStatusScrolled is a TableTotalsScrollStatus enum value
	TableTotalsScrollStatusScrolled = "SCROLLED"
)

// TableTotalsScrollStatus_Values returns all elements of the TableTotalsScrollStatus enum
func TableTotalsScrollStatus_Values() []string {
	return []string{
		TableTotalsScrollStatusPinned,
		TableTotalsScrollStatusScrolled,
	}
}

const (
	// TargetVisualOptionsAllVisuals is a TargetVisualOptions enum value
	TargetVisualOptionsAllVisuals = "ALL_VISUALS"
)

// TargetVisualOptions_Values returns all elements of the TargetVisualOptions enum
func TargetVisualOptions_Values() []string {
	return []string{
		TargetVisualOptionsAllVisuals,
	}
}

const (
	// TemplateErrorTypeSourceNotFound is a TemplateErrorType enum value
	TemplateErrorTypeSourceNotFound = "SOURCE_NOT_FOUND"

	// TemplateErrorTypeDataSetNotFound is a TemplateErrorType enum value
	TemplateErrorTypeDataSetNotFound = "DATA_SET_NOT_FOUND"

	// TemplateErrorTypeInternalFailure is a TemplateErrorType enum value
	TemplateErrorTypeInternalFailure = "INTERNAL_FAILURE"

	// TemplateErrorTypeAccessDenied is a TemplateErrorType enum value
	TemplateErrorTypeAccessDenied = "ACCESS_DENIED"
)

// TemplateErrorType_Values returns all elements of the TemplateErrorType enum
func TemplateErrorType_Values() []string {
	return []string{
		TemplateErrorTypeSourceNotFound,
		TemplateErrorTypeDataSetNotFound,
		TemplateErrorTypeInternalFailure,
		TemplateErrorTypeAccessDenied,
	}
}

const (
	// TextQualifierDoubleQuote is a TextQualifier enum value
	TextQualifierDoubleQuote = "DOUBLE_QUOTE"

	// TextQualifierSingleQuote is a TextQualifier enum value
	TextQualifierSingleQuote = "SINGLE_QUOTE"
)

// TextQualifier_Values returns all elements of the TextQualifier enum
func TextQualifier_Values() []string {
	return []string{
		TextQualifierDoubleQuote,
		TextQualifierSingleQuote,
	}
}

const (
	// TextWrapNone is a TextWrap enum value
	TextWrapNone = "NONE"

	// TextWrapWrap is a TextWrap enum value
	TextWrapWrap = "WRAP"
)

// TextWrap_Values returns all elements of the TextWrap enum
func TextWrap_Values() []string {
	return []string{
		TextWrapNone,
		TextWrapWrap,
	}
}

const (
	// ThemeErrorTypeInternalFailure is a ThemeErrorType enum value
	ThemeErrorTypeInternalFailure = "INTERNAL_FAILURE"
)

// ThemeErrorType_Values returns all elements of the ThemeErrorType enum
func ThemeErrorType_Values() []string {
	return []string{
		ThemeErrorTypeInternalFailure,
	}
}

const (
	// ThemeTypeQuicksight is a ThemeType enum value
	ThemeTypeQuicksight = "QUICKSIGHT"

	// ThemeTypeCustom is a ThemeType enum value
	ThemeTypeCustom = "CUSTOM"

	// ThemeTypeAll is a ThemeType enum value
	ThemeTypeAll = "ALL"
)

// ThemeType_Values returns all elements of the ThemeType enum
func ThemeType_Values() []string {
	return []string{
		ThemeTypeQuicksight,
		ThemeTypeCustom,
		ThemeTypeAll,
	}
}

const (
	// TimeGranularityYear is a TimeGranularity enum value
	TimeGranularityYear = "YEAR"

	// TimeGranularityQuarter is a TimeGranularity enum value
	TimeGranularityQuarter = "QUARTER"

	// TimeGranularityMonth is a TimeGranularity enum value
	TimeGranularityMonth = "MONTH"

	// TimeGranularityWeek is a TimeGranularity enum value
	TimeGranularityWeek = "WEEK"

	// TimeGranularityDay is a TimeGranularity enum value
	TimeGranularityDay = "DAY"

	// TimeGranularityHour is a TimeGranularity enum value
	TimeGranularityHour = "HOUR"

	// TimeGranularityMinute is a TimeGranularity enum value
	TimeGranularityMinute = "MINUTE"

	// TimeGranularitySecond is a TimeGranularity enum value
	TimeGranularitySecond = "SECOND"

	// TimeGranularityMillisecond is a TimeGranularity enum value
	TimeGranularityMillisecond = "MILLISECOND"
)

// TimeGranularity_Values returns all elements of the TimeGranularity enum
func TimeGranularity_Values() []string {
	return []string{
		TimeGranularityYear,
		TimeGranularityQuarter,
		TimeGranularityMonth,
		TimeGranularityWeek,
		TimeGranularityDay,
		TimeGranularityHour,
		TimeGranularityMinute,
		TimeGranularitySecond,
		TimeGranularityMillisecond,
	}
}

const (
	// TooltipTargetBoth is a TooltipTarget enum value
	TooltipTargetBoth = "BOTH"

	// TooltipTargetBar is a TooltipTarget enum value
	TooltipTargetBar = "BAR"

	// TooltipTargetLine is a TooltipTarget enum value
	TooltipTargetLine = "LINE"
)

// TooltipTarget_Values returns all elements of the TooltipTarget enum
func TooltipTarget_Values() []string {
	return []string{
		TooltipTargetBoth,
		TooltipTargetBar,
		TooltipTargetLine,
	}
}

const (
	// TooltipTitleTypeNone is a TooltipTitleType enum value
	TooltipTitleTypeNone = "NONE"

	// TooltipTitleTypePrimaryValue is a TooltipTitleType enum value
	TooltipTitleTypePrimaryValue = "PRIMARY_VALUE"
)

// TooltipTitleType_Values returns all elements of the TooltipTitleType enum
func TooltipTitleType_Values() []string {
	return []string{
		TooltipTitleTypeNone,
		TooltipTitleTypePrimaryValue,
	}
}

const (
	// TopBottomComputationTypeTop is a TopBottomComputationType enum value
	TopBottomComputationTypeTop = "TOP"

	// TopBottomComputationTypeBottom is a TopBottomComputationType enum value
	TopBottomComputationTypeBottom = "BOTTOM"
)

// TopBottomComputationType_Values returns all elements of the TopBottomComputationType enum
func TopBottomComputationType_Values() []string {
	return []string{
		TopBottomComputationTypeTop,
		TopBottomComputationTypeBottom,
	}
}

const (
	// TopBottomSortOrderPercentDifference is a TopBottomSortOrder enum value
	TopBottomSortOrderPercentDifference = "PERCENT_DIFFERENCE"

	// TopBottomSortOrderAbsoluteDifference is a TopBottomSortOrder enum value
	TopBottomSortOrderAbsoluteDifference = "ABSOLUTE_DIFFERENCE"
)

// TopBottomSortOrder_Values returns all elements of the TopBottomSortOrder enum
func TopBottomSortOrder_Values() []string {
	return []string{
		TopBottomSortOrderPercentDifference,
		TopBottomSortOrderAbsoluteDifference,
	}
}

const (
	// TopicIRFilterFunctionContains is a TopicIRFilterFunction enum value
	TopicIRFilterFunctionContains = "CONTAINS"

	// TopicIRFilterFunctionExact is a TopicIRFilterFunction enum value
	TopicIRFilterFunctionExact = "EXACT"

	// TopicIRFilterFunctionStartsWith is a TopicIRFilterFunction enum value
	TopicIRFilterFunctionStartsWith = "STARTS_WITH"

	// TopicIRFilterFunctionEndsWith is a TopicIRFilterFunction enum value
	TopicIRFilterFunctionEndsWith = "ENDS_WITH"

	// TopicIRFilterFunctionContainsString is a TopicIRFilterFunction enum value
	TopicIRFilterFunctionContainsString = "CONTAINS_STRING"

	// TopicIRFilterFunctionPrevious is a TopicIRFilterFunction enum value
	TopicIRFilterFunctionPrevious = "PREVIOUS"

	// TopicIRFilterFunctionThis is a TopicIRFilterFunction enum value
	TopicIRFilterFunctionThis = "THIS"

	// TopicIRFilterFunctionLast is a TopicIRFilterFunction enum value
	TopicIRFilterFunctionLast = "LAST"

	// TopicIRFilterFunctionNext is a TopicIRFilterFunction enum value
	TopicIRFilterFunctionNext = "NEXT"

	// TopicIRFilterFunctionNow is a TopicIRFilterFunction enum value
	TopicIRFilterFunctionNow = "NOW"
)

// TopicIRFilterFunction_Values returns all elements of the TopicIRFilterFunction enum
func TopicIRFilterFunction_Values() []string {
	return []string{
		TopicIRFilterFunctionContains,
		TopicIRFilterFunctionExact,
		TopicIRFilterFunctionStartsWith,
		TopicIRFilterFunctionEndsWith,
		TopicIRFilterFunctionContainsString,
		TopicIRFilterFunctionPrevious,
		TopicIRFilterFunctionThis,
		TopicIRFilterFunctionLast,
		TopicIRFilterFunctionNext,
		TopicIRFilterFunctionNow,
	}
}

const (
	// TopicIRFilterTypeCategoryFilter is a TopicIRFilterType enum value
	TopicIRFilterTypeCategoryFilter = "CATEGORY_FILTER"

	// TopicIRFilterTypeNumericEqualityFilter is a TopicIRFilterType enum value
	TopicIRFilterTypeNumericEqualityFilter = "NUMERIC_EQUALITY_FILTER"

	// TopicIRFilterTypeNumericRangeFilter is a TopicIRFilterType enum value
	TopicIRFilterTypeNumericRangeFilter = "NUMERIC_RANGE_FILTER"

	// TopicIRFilterTypeDateRangeFilter is a TopicIRFilterType enum value
	TopicIRFilterTypeDateRangeFilter = "DATE_RANGE_FILTER"

	// TopicIRFilterTypeRelativeDateFilter is a TopicIRFilterType enum value
	TopicIRFilterTypeRelativeDateFilter = "RELATIVE_DATE_FILTER"

	// TopicIRFilterTypeTopBottomFilter is a TopicIRFilterType enum value
	TopicIRFilterTypeTopBottomFilter = "TOP_BOTTOM_FILTER"

	// TopicIRFilterTypeEquals is a TopicIRFilterType enum value
	TopicIRFilterTypeEquals = "EQUALS"

	// TopicIRFilterTypeRankLimitFilter is a TopicIRFilterType enum value
	TopicIRFilterTypeRankLimitFilter = "RANK_LIMIT_FILTER"

	// TopicIRFilterTypeAcceptAllFilter is a TopicIRFilterType enum value
	TopicIRFilterTypeAcceptAllFilter = "ACCEPT_ALL_FILTER"
)

// TopicIRFilterType_Values returns all elements of the TopicIRFilterType enum
func TopicIRFilterType_Values() []string {
	return []string{
		TopicIRFilterTypeCategoryFilter,
		TopicIRFilterTypeNumericEqualityFilter,
		TopicIRFilterTypeNumericRangeFilter,
		TopicIRFilterTypeDateRangeFilter,
		TopicIRFilterTypeRelativeDateFilter,
		TopicIRFilterTypeTopBottomFilter,
		TopicIRFilterTypeEquals,
		TopicIRFilterTypeRankLimitFilter,
		TopicIRFilterTypeAcceptAllFilter,
	}
}

const (
	// TopicNumericSeparatorSymbolComma is a TopicNumericSeparatorSymbol enum value
	TopicNumericSeparatorSymbolComma = "COMMA"

	// TopicNumericSeparatorSymbolDot is a TopicNumericSeparatorSymbol enum value
	TopicNumericSeparatorSymbolDot = "DOT"
)

// TopicNumericSeparatorSymbol_Values returns all elements of the TopicNumericSeparatorSymbol enum
func TopicNumericSeparatorSymbol_Values() []string {
	return []string{
		TopicNumericSeparatorSymbolComma,
		TopicNumericSeparatorSymbolDot,
	}
}

const (
	// TopicRefreshStatusInitialized is a TopicRefreshStatus enum value
	TopicRefreshStatusInitialized = "INITIALIZED"

	// TopicRefreshStatusRunning is a TopicRefreshStatus enum value
	TopicRefreshStatusRunning = "RUNNING"

	// TopicRefreshStatusFailed is a TopicRefreshStatus enum value
	TopicRefreshStatusFailed = "FAILED"

	// TopicRefreshStatusCompleted is a TopicRefreshStatus enum value
	TopicRefreshStatusCompleted = "COMPLETED"

	// TopicRefreshStatusCancelled is a TopicRefreshStatus enum value
	TopicRefreshStatusCancelled = "CANCELLED"
)

// TopicRefreshStatus_Values returns all elements of the TopicRefreshStatus enum
func TopicRefreshStatus_Values() []string {
	return []string{
		TopicRefreshStatusInitialized,
		TopicRefreshStatusRunning,
		TopicRefreshStatusFailed,
		TopicRefreshStatusCompleted,
		TopicRefreshStatusCancelled,
	}
}

const (
	// TopicRelativeDateFilterFunctionPrevious is a TopicRelativeDateFilterFunction enum value
	TopicRelativeDateFilterFunctionPrevious = "PREVIOUS"

	// TopicRelativeDateFilterFunctionThis is a TopicRelativeDateFilterFunction enum value
	TopicRelativeDateFilterFunctionThis = "THIS"

	// TopicRelativeDateFilterFunctionLast is a TopicRelativeDateFilterFunction enum value
	TopicRelativeDateFilterFunctionLast = "LAST"

	// TopicRelativeDateFilterFunctionNext is a TopicRelativeDateFilterFunction enum value
	TopicRelativeDateFilterFunctionNext = "NEXT"

	// TopicRelativeDateFilterFunctionNow is a TopicRelativeDateFilterFunction enum value
	TopicRelativeDateFilterFunctionNow = "NOW"
)

// TopicRelativeDateFilterFunction_Values returns all elements of the TopicRelativeDateFilterFunction enum
func TopicRelativeDateFilterFunction_Values() []string {
	return []string{
		TopicRelativeDateFilterFunctionPrevious,
		TopicRelativeDateFilterFunctionThis,
		TopicRelativeDateFilterFunctionLast,
		TopicRelativeDateFilterFunctionNext,
		TopicRelativeDateFilterFunctionNow,
	}
}

const (
	// TopicScheduleTypeHourly is a TopicScheduleType enum value
	TopicScheduleTypeHourly = "HOURLY"

	// TopicScheduleTypeDaily is a TopicScheduleType enum value
	TopicScheduleTypeDaily = "DAILY"

	// TopicScheduleTypeWeekly is a TopicScheduleType enum value
	TopicScheduleTypeWeekly = "WEEKLY"

	// TopicScheduleTypeMonthly is a TopicScheduleType enum value
	TopicScheduleTypeMonthly = "MONTHLY"
)

// TopicScheduleType_Values returns all elements of the TopicScheduleType enum
func TopicScheduleType_Values() []string {
	return []string{
		TopicScheduleTypeHourly,
		TopicScheduleTypeDaily,
		TopicScheduleTypeWeekly,
		TopicScheduleTypeMonthly,
	}
}

const (
	// TopicSortDirectionAscending is a TopicSortDirection enum value
	TopicSortDirectionAscending = "ASCENDING"

	// TopicSortDirectionDescending is a TopicSortDirection enum value
	TopicSortDirectionDescending = "DESCENDING"
)

// TopicSortDirection_Values returns all elements of the TopicSortDirection enum
func TopicSortDirection_Values() []string {
	return []string{
		TopicSortDirectionAscending,
		TopicSortDirectionDescending,
	}
}

const (
	// TopicTimeGranularitySecond is a TopicTimeGranularity enum value
	TopicTimeGranularitySecond = "SECOND"

	// TopicTimeGranularityMinute is a TopicTimeGranularity enum value
	TopicTimeGranularityMinute = "MINUTE"

	// TopicTimeGranularityHour is a TopicTimeGranularity enum value
	TopicTimeGranularityHour = "HOUR"

	// TopicTimeGranularityDay is a TopicTimeGranularity enum value
	TopicTimeGranularityDay = "DAY"

	// TopicTimeGranularityWeek is a TopicTimeGranularity enum value
	TopicTimeGranularityWeek = "WEEK"

	// TopicTimeGranularityMonth is a TopicTimeGranularity enum value
	TopicTimeGranularityMonth = "MONTH"

	// TopicTimeGranularityQuarter is a TopicTimeGranularity enum value
	TopicTimeGranularityQuarter = "QUARTER"

	// TopicTimeGranularityYear is a TopicTimeGranularity enum value
	TopicTimeGranularityYear = "YEAR"
)

// TopicTimeGranularity_Values returns all elements of the TopicTimeGranularity enum
func TopicTimeGranularity_Values() []string {
	return []string{
		TopicTimeGranularitySecond,
		TopicTimeGranularityMinute,
		TopicTimeGranularityHour,
		TopicTimeGranularityDay,
		TopicTimeGranularityWeek,
		TopicTimeGranularityMonth,
		TopicTimeGranularityQuarter,
		TopicTimeGranularityYear,
	}
}

const (
	// TopicUserExperienceVersionLegacy is a TopicUserExperienceVersion enum value
	TopicUserExperienceVersionLegacy = "LEGACY"

	// TopicUserExperienceVersionNewReaderExperience is a TopicUserExperienceVersion enum value
	TopicUserExperienceVersionNewReaderExperience = "NEW_READER_EXPERIENCE"
)

// TopicUserExperienceVersion_Values returns all elements of the TopicUserExperienceVersion enum
func TopicUserExperienceVersion_Values() []string {
	return []string{
		TopicUserExperienceVersionLegacy,
		TopicUserExperienceVersionNewReaderExperience,
	}
}

const (
	// URLTargetConfigurationNewTab is a URLTargetConfiguration enum value
	URLTargetConfigurationNewTab = "NEW_TAB"

	// URLTargetConfigurationNewWindow is a URLTargetConfiguration enum value
	URLTargetConfigurationNewWindow = "NEW_WINDOW"

	// URLTargetConfigurationSameTab is a URLTargetConfiguration enum value
	URLTargetConfigurationSameTab = "SAME_TAB"
)

// URLTargetConfiguration_Values returns all elements of the URLTargetConfiguration enum
func URLTargetConfiguration_Values() []string {
	return []string{
		URLTargetConfigurationNewTab,
		URLTargetConfigurationNewWindow,
		URLTargetConfigurationSameTab,
	}
}

const (
	// UndefinedSpecifiedValueTypeLeast is a UndefinedSpecifiedValueType enum value
	UndefinedSpecifiedValueTypeLeast = "LEAST"

	// UndefinedSpecifiedValueTypeMost is a UndefinedSpecifiedValueType enum value
	UndefinedSpecifiedValueTypeMost = "MOST"
)

// UndefinedSpecifiedValueType_Values returns all elements of the UndefinedSpecifiedValueType enum
func UndefinedSpecifiedValueType_Values() []string {
	return []string{
		UndefinedSpecifiedValueTypeLeast,
		UndefinedSpecifiedValueTypeMost,
	}
}

const (
	// UserRoleAdmin is a UserRole enum value
	UserRoleAdmin = "ADMIN"

	// UserRoleAuthor is a UserRole enum value
	UserRoleAuthor = "AUTHOR"

	// UserRoleReader is a UserRole enum value
	UserRoleReader = "READER"

	// UserRoleRestrictedAuthor is a UserRole enum value
	UserRoleRestrictedAuthor = "RESTRICTED_AUTHOR"

	// UserRoleRestrictedReader is a UserRole enum value
	UserRoleRestrictedReader = "RESTRICTED_READER"

	// UserRoleAdminPro is a UserRole enum value
	UserRoleAdminPro = "ADMIN_PRO"

	// UserRoleAuthorPro is a UserRole enum value
	UserRoleAuthorPro = "AUTHOR_PRO"

	// UserRoleReaderPro is a UserRole enum value
	UserRoleReaderPro = "READER_PRO"
)

// UserRole_Values returns all elements of the UserRole enum
func UserRole_Values() []string {
	return []string{
		UserRoleAdmin,
		UserRoleAuthor,
		UserRoleReader,
		UserRoleRestrictedAuthor,
		UserRoleRestrictedReader,
		UserRoleAdminPro,
		UserRoleAuthorPro,
		UserRoleReaderPro,
	}
}

const (
	// VPCConnectionAvailabilityStatusAvailable is a VPCConnectionAvailabilityStatus enum value
	VPCConnectionAvailabilityStatusAvailable = "AVAILABLE"

	// VPCConnectionAvailabilityStatusUnavailable is a VPCConnectionAvailabilityStatus enum value
	VPCConnectionAvailabilityStatusUnavailable = "UNAVAILABLE"

	// VPCConnectionAvailabilityStatusPartiallyAvailable is a VPCConnectionAvailabilityStatus enum value
	VPCConnectionAvailabilityStatusPartiallyAvailable = "PARTIALLY_AVAILABLE"
)

// VPCConnectionAvailabilityStatus_Values returns all elements of the VPCConnectionAvailabilityStatus enum
func VPCConnectionAvailabilityStatus_Values() []string {
	return []string{
		VPCConnectionAvailabilityStatusAvailable,
		VPCConnectionAvailabilityStatusUnavailable,
		VPCConnectionAvailabilityStatusPartiallyAvailable,
	}
}

const (
	// VPCConnectionResourceStatusCreationInProgress is a VPCConnectionResourceStatus enum value
	VPCConnectionResourceStatusCreationInProgress = "CREATION_IN_PROGRESS"

	// VPCConnectionResourceStatusCreationSuccessful is a VPCConnectionResourceStatus enum value
	VPCConnectionResourceStatusCreationSuccessful = "CREATION_SUCCESSFUL"

	// VPCConnectionResourceStatusCreationFailed is a VPCConnectionResourceStatus enum value
	VPCConnectionResourceStatusCreationFailed = "CREATION_FAILED"

	// VPCConnectionResourceStatusUpdateInProgress is a VPCConnectionResourceStatus enum value
	VPCConnectionResourceStatusUpdateInProgress = "UPDATE_IN_PROGRESS"

	// VPCConnectionResourceStatusUpdateSuccessful is a VPCConnectionResourceStatus enum value
	VPCConnectionResourceStatusUpdateSuccessful = "UPDATE_SUCCESSFUL"

	// VPCConnectionResourceStatusUpdateFailed is a VPCConnectionResourceStatus enum value
	VPCConnectionResourceStatusUpdateFailed = "UPDATE_FAILED"

	// VPCConnectionResourceStatusDeletionInProgress is a VPCConnectionResourceStatus enum value
	VPCConnectionResourceStatusDeletionInProgress = "DELETION_IN_PROGRESS"

	// VPCConnectionResourceStatusDeletionFailed is a VPCConnectionResourceStatus enum value
	VPCConnectionResourceStatusDeletionFailed = "DELETION_FAILED"

	// VPCConnectionResourceStatusDeleted is a VPCConnectionResourceStatus enum value
	VPCConnectionResourceStatusDeleted = "DELETED"
)

// VPCConnectionResourceStatus_Values returns all elements of the VPCConnectionResourceStatus enum
func VPCConnectionResourceStatus_Values() []string {
	return []string{
		VPCConnectionResourceStatusCreationInProgress,
		VPCConnectionResourceStatusCreationSuccessful,
		VPCConnectionResourceStatusCreationFailed,
		VPCConnectionResourceStatusUpdateInProgress,
		VPCConnectionResourceStatusUpdateSuccessful,
		VPCConnectionResourceStatusUpdateFailed,
		VPCConnectionResourceStatusDeletionInProgress,
		VPCConnectionResourceStatusDeletionFailed,
		VPCConnectionResourceStatusDeleted,
	}
}

const (
	// ValidationStrategyModeStrict is a ValidationStrategyMode enum value
	ValidationStrategyModeStrict = "STRICT"

	// ValidationStrategyModeLenient is a ValidationStrategyMode enum value
	ValidationStrategyModeLenient = "LENIENT"
)

// ValidationStrategyMode_Values returns all elements of the ValidationStrategyMode enum
func ValidationStrategyMode_Values() []string {
	return []string{
		ValidationStrategyModeStrict,
		ValidationStrategyModeLenient,
	}
}

const (
	// ValueWhenUnsetOptionRecommendedValue is a ValueWhenUnsetOption enum value
	ValueWhenUnsetOptionRecommendedValue = "RECOMMENDED_VALUE"

	// ValueWhenUnsetOptionNull is a ValueWhenUnsetOption enum value
	ValueWhenUnsetOptionNull = "NULL"
)

// ValueWhenUnsetOption_Values returns all elements of the ValueWhenUnsetOption enum
func ValueWhenUnsetOption_Values() []string {
	return []string{
		ValueWhenUnsetOptionRecommendedValue,
		ValueWhenUnsetOptionNull,
	}
}

const (
	// VerticalTextAlignmentTop is a VerticalTextAlignment enum value
	VerticalTextAlignmentTop = "TOP"

	// VerticalTextAlignmentMiddle is a VerticalTextAlignment enum value
	VerticalTextAlignmentMiddle = "MIDDLE"

	// VerticalTextAlignmentBottom is a VerticalTextAlignment enum value
	VerticalTextAlignmentBottom = "BOTTOM"

	// VerticalTextAlignmentAuto is a VerticalTextAlignment enum value
	VerticalTextAlignmentAuto = "AUTO"
)

// VerticalTextAlignment_Values returns all elements of the VerticalTextAlignment enum
func VerticalTextAlignment_Values() []string {
	return []string{
		VerticalTextAlignmentTop,
		VerticalTextAlignmentMiddle,
		VerticalTextAlignmentBottom,
		VerticalTextAlignmentAuto,
	}
}

const (
	// VisibilityHidden is a Visibility enum value
	VisibilityHidden = "HIDDEN"

	// VisibilityVisible is a Visibility enum value
	VisibilityVisible = "VISIBLE"
)

// Visibility_Values returns all elements of the Visibility enum
func Visibility_Values() []string {
	return []string{
		VisibilityHidden,
		VisibilityVisible,
	}
}

const (
	// VisualCustomActionTriggerDataPointClick is a VisualCustomActionTrigger enum value
	VisualCustomActionTriggerDataPointClick = "DATA_POINT_CLICK"

	// VisualCustomActionTriggerDataPointMenu is a VisualCustomActionTrigger enum value
	VisualCustomActionTriggerDataPointMenu = "DATA_POINT_MENU"
)

// VisualCustomActionTrigger_Values returns all elements of the VisualCustomActionTrigger enum
func VisualCustomActionTrigger_Values() []string {
	return []string{
		VisualCustomActionTriggerDataPointClick,
		VisualCustomActionTriggerDataPointMenu,
	}
}

const (
	// VisualRolePrimary is a VisualRole enum value
	VisualRolePrimary = "PRIMARY"

	// VisualRoleComplimentary is a VisualRole enum value
	VisualRoleComplimentary = "COMPLIMENTARY"

	// VisualRoleMultiIntent is a VisualRole enum value
	VisualRoleMultiIntent = "MULTI_INTENT"

	// VisualRoleFallback is a VisualRole enum value
	VisualRoleFallback = "FALLBACK"

	// VisualRoleFragment is a VisualRole enum value
	VisualRoleFragment = "FRAGMENT"
)

// VisualRole_Values returns all elements of the VisualRole enum
func VisualRole_Values() []string {
	return []string{
		VisualRolePrimary,
		VisualRoleComplimentary,
		VisualRoleMultiIntent,
		VisualRoleFallback,
		VisualRoleFragment,
	}
}

const (
	// WidgetStatusEnabled is a WidgetStatus enum value
	WidgetStatusEnabled = "ENABLED"

	// WidgetStatusDisabled is a WidgetStatus enum value
	WidgetStatusDisabled = "DISABLED"
)

// WidgetStatus_Values returns all elements of the WidgetStatus enum
func WidgetStatus_Values() []string {
	return []string{
		WidgetStatusEnabled,
		WidgetStatusDisabled,
	}
}

const (
	// WordCloudCloudLayoutFluid is a WordCloudCloudLayout enum value
	WordCloudCloudLayoutFluid = "FLUID"

	// WordCloudCloudLayoutNormal is a WordCloudCloudLayout enum value
	WordCloudCloudLayoutNormal = "NORMAL"
)

// WordCloudCloudLayout_Values returns all elements of the WordCloudCloudLayout enum
func WordCloudCloudLayout_Values() []string {
	return []string{
		WordCloudCloudLayoutFluid,
		WordCloudCloudLayoutNormal,
	}
}

const (
	// WordCloudWordCasingLowerCase is a WordCloudWordCasing enum value
	WordCloudWordCasingLowerCase = "LOWER_CASE"

	// WordCloudWordCasingExistingCase is a WordCloudWordCasing enum value
	WordCloudWordCasingExistingCase = "EXISTING_CASE"
)

// WordCloudWordCasing_Values returns all elements of the WordCloudWordCasing enum
func WordCloudWordCasing_Values() []string {
	return []string{
		WordCloudWordCasingLowerCase,
		WordCloudWordCasingExistingCase,
	}
}

const (
	// WordCloudWordOrientationHorizontal is a WordCloudWordOrientation enum value
	WordCloudWordOrientationHorizontal = "HORIZONTAL"

	// WordCloudWordOrientationHorizontalAndVertical is a WordCloudWordOrientation enum value
	WordCloudWordOrientationHorizontalAndVertical = "HORIZONTAL_AND_VERTICAL"
)

// WordCloudWordOrientation_Values returns all elements of the WordCloudWordOrientation enum
func WordCloudWordOrientation_Values() []string {
	return []string{
		WordCloudWordOrientationHorizontal,
		WordCloudWordOrientationHorizontalAndVertical,
	}
}

const (
	// WordCloudWordPaddingNone is a WordCloudWordPadding enum value
	WordCloudWordPaddingNone = "NONE"

	// WordCloudWordPaddingSmall is a WordCloudWordPadding enum value
	WordCloudWordPaddingSmall = "SMALL"

	// WordCloudWordPaddingMedium is a WordCloudWordPadding enum value
	WordCloudWordPaddingMedium = "MEDIUM"

	// WordCloudWordPaddingLarge is a WordCloudWordPadding enum value
	WordCloudWordPaddingLarge = "LARGE"
)

// WordCloudWordPadding_Values returns all elements of the WordCloudWordPadding enum
func WordCloudWordPadding_Values() []string {
	return []string{
		WordCloudWordPaddingNone,
		WordCloudWordPaddingSmall,
		WordCloudWordPaddingMedium,
		WordCloudWordPaddingLarge,
	}
}

const (
	// WordCloudWordScalingEmphasize is a WordCloudWordScaling enum value
	WordCloudWordScalingEmphasize = "EMPHASIZE"

	// WordCloudWordScalingNormal is a WordCloudWordScaling enum value
	WordCloudWordScalingNormal = "NORMAL"
)

// WordCloudWordScaling_Values returns all elements of the WordCloudWordScaling enum
func WordCloudWordScaling_Values() []string {
	return []string{
		WordCloudWordScalingEmphasize,
		WordCloudWordScalingNormal,
	}
}
