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

package glue

import (
	"fmt"
	"time"

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

const opBatchCreatePartition = "BatchCreatePartition"

// BatchCreatePartitionRequest generates a "aws/request.Request" representing the
// client's request for the BatchCreatePartition 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 BatchCreatePartition for more information on using the BatchCreatePartition
// 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 BatchCreatePartitionRequest method.
//	req, resp := client.BatchCreatePartitionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchCreatePartition
func (c *Glue) BatchCreatePartitionRequest(input *BatchCreatePartitionInput) (req *request.Request, output *BatchCreatePartitionOutput) {
	op := &request.Operation{
		Name:       opBatchCreatePartition,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchCreatePartitionInput{}
	}

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

// BatchCreatePartition API operation for AWS Glue.
//
// Creates one or more partitions in a batch 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 AWS Glue's
// API operation BatchCreatePartition for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchCreatePartition
func (c *Glue) BatchCreatePartition(input *BatchCreatePartitionInput) (*BatchCreatePartitionOutput, error) {
	req, out := c.BatchCreatePartitionRequest(input)
	return out, req.Send()
}

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

const opBatchDeleteConnection = "BatchDeleteConnection"

// BatchDeleteConnectionRequest generates a "aws/request.Request" representing the
// client's request for the BatchDeleteConnection 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 BatchDeleteConnection for more information on using the BatchDeleteConnection
// 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 BatchDeleteConnectionRequest method.
//	req, resp := client.BatchDeleteConnectionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchDeleteConnection
func (c *Glue) BatchDeleteConnectionRequest(input *BatchDeleteConnectionInput) (req *request.Request, output *BatchDeleteConnectionOutput) {
	op := &request.Operation{
		Name:       opBatchDeleteConnection,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchDeleteConnectionInput{}
	}

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

// BatchDeleteConnection API operation for AWS Glue.
//
// Deletes a list of connection definitions from the Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation BatchDeleteConnection for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchDeleteConnection
func (c *Glue) BatchDeleteConnection(input *BatchDeleteConnectionInput) (*BatchDeleteConnectionOutput, error) {
	req, out := c.BatchDeleteConnectionRequest(input)
	return out, req.Send()
}

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

const opBatchDeletePartition = "BatchDeletePartition"

// BatchDeletePartitionRequest generates a "aws/request.Request" representing the
// client's request for the BatchDeletePartition 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 BatchDeletePartition for more information on using the BatchDeletePartition
// 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 BatchDeletePartitionRequest method.
//	req, resp := client.BatchDeletePartitionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchDeletePartition
func (c *Glue) BatchDeletePartitionRequest(input *BatchDeletePartitionInput) (req *request.Request, output *BatchDeletePartitionOutput) {
	op := &request.Operation{
		Name:       opBatchDeletePartition,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchDeletePartitionInput{}
	}

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

// BatchDeletePartition API operation for AWS Glue.
//
// Deletes one or more partitions in a batch 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 AWS Glue's
// API operation BatchDeletePartition for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchDeletePartition
func (c *Glue) BatchDeletePartition(input *BatchDeletePartitionInput) (*BatchDeletePartitionOutput, error) {
	req, out := c.BatchDeletePartitionRequest(input)
	return out, req.Send()
}

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

const opBatchDeleteTable = "BatchDeleteTable"

// BatchDeleteTableRequest generates a "aws/request.Request" representing the
// client's request for the BatchDeleteTable 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 BatchDeleteTable for more information on using the BatchDeleteTable
// 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 BatchDeleteTableRequest method.
//	req, resp := client.BatchDeleteTableRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchDeleteTable
func (c *Glue) BatchDeleteTableRequest(input *BatchDeleteTableInput) (req *request.Request, output *BatchDeleteTableOutput) {
	op := &request.Operation{
		Name:       opBatchDeleteTable,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchDeleteTableInput{}
	}

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

// BatchDeleteTable API operation for AWS Glue.
//
// Deletes multiple tables at once.
//
// After completing this operation, you no longer have access to the table versions
// and partitions that belong to the deleted table. Glue deletes these "orphaned"
// resources asynchronously in a timely manner, at the discretion of the service.
//
// To ensure the immediate deletion of all related resources, before calling
// BatchDeleteTable, use DeleteTableVersion or BatchDeleteTableVersion, and
// DeletePartition or BatchDeletePartition, to delete any resources that belong
// to the table.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation BatchDeleteTable for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
//   - ResourceNotReadyException
//     A resource was not ready for a transaction.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchDeleteTable
func (c *Glue) BatchDeleteTable(input *BatchDeleteTableInput) (*BatchDeleteTableOutput, error) {
	req, out := c.BatchDeleteTableRequest(input)
	return out, req.Send()
}

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

const opBatchDeleteTableVersion = "BatchDeleteTableVersion"

// BatchDeleteTableVersionRequest generates a "aws/request.Request" representing the
// client's request for the BatchDeleteTableVersion 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 BatchDeleteTableVersion for more information on using the BatchDeleteTableVersion
// 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 BatchDeleteTableVersionRequest method.
//	req, resp := client.BatchDeleteTableVersionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchDeleteTableVersion
func (c *Glue) BatchDeleteTableVersionRequest(input *BatchDeleteTableVersionInput) (req *request.Request, output *BatchDeleteTableVersionOutput) {
	op := &request.Operation{
		Name:       opBatchDeleteTableVersion,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchDeleteTableVersionInput{}
	}

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

// BatchDeleteTableVersion API operation for AWS Glue.
//
// Deletes a specified batch of versions of a table.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation BatchDeleteTableVersion for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchDeleteTableVersion
func (c *Glue) BatchDeleteTableVersion(input *BatchDeleteTableVersionInput) (*BatchDeleteTableVersionOutput, error) {
	req, out := c.BatchDeleteTableVersionRequest(input)
	return out, req.Send()
}

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

const opBatchGetBlueprints = "BatchGetBlueprints"

// BatchGetBlueprintsRequest generates a "aws/request.Request" representing the
// client's request for the BatchGetBlueprints 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 BatchGetBlueprints for more information on using the BatchGetBlueprints
// 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 BatchGetBlueprintsRequest method.
//	req, resp := client.BatchGetBlueprintsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetBlueprints
func (c *Glue) BatchGetBlueprintsRequest(input *BatchGetBlueprintsInput) (req *request.Request, output *BatchGetBlueprintsOutput) {
	op := &request.Operation{
		Name:       opBatchGetBlueprints,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchGetBlueprintsInput{}
	}

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

// BatchGetBlueprints API operation for AWS Glue.
//
// Retrieves information about a list of blueprints.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation BatchGetBlueprints for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetBlueprints
func (c *Glue) BatchGetBlueprints(input *BatchGetBlueprintsInput) (*BatchGetBlueprintsOutput, error) {
	req, out := c.BatchGetBlueprintsRequest(input)
	return out, req.Send()
}

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

const opBatchGetCrawlers = "BatchGetCrawlers"

// BatchGetCrawlersRequest generates a "aws/request.Request" representing the
// client's request for the BatchGetCrawlers 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 BatchGetCrawlers for more information on using the BatchGetCrawlers
// 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 BatchGetCrawlersRequest method.
//	req, resp := client.BatchGetCrawlersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetCrawlers
func (c *Glue) BatchGetCrawlersRequest(input *BatchGetCrawlersInput) (req *request.Request, output *BatchGetCrawlersOutput) {
	op := &request.Operation{
		Name:       opBatchGetCrawlers,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchGetCrawlersInput{}
	}

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

// BatchGetCrawlers API operation for AWS Glue.
//
// Returns a list of resource metadata for a given list of crawler names. After
// calling the ListCrawlers operation, you can call this operation to access
// the data to which you have been granted permissions. This operation supports
// all IAM permissions, including permission conditions that uses tags.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation BatchGetCrawlers for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetCrawlers
func (c *Glue) BatchGetCrawlers(input *BatchGetCrawlersInput) (*BatchGetCrawlersOutput, error) {
	req, out := c.BatchGetCrawlersRequest(input)
	return out, req.Send()
}

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

const opBatchGetCustomEntityTypes = "BatchGetCustomEntityTypes"

// BatchGetCustomEntityTypesRequest generates a "aws/request.Request" representing the
// client's request for the BatchGetCustomEntityTypes 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 BatchGetCustomEntityTypes for more information on using the BatchGetCustomEntityTypes
// 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 BatchGetCustomEntityTypesRequest method.
//	req, resp := client.BatchGetCustomEntityTypesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetCustomEntityTypes
func (c *Glue) BatchGetCustomEntityTypesRequest(input *BatchGetCustomEntityTypesInput) (req *request.Request, output *BatchGetCustomEntityTypesOutput) {
	op := &request.Operation{
		Name:       opBatchGetCustomEntityTypes,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchGetCustomEntityTypesInput{}
	}

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

// BatchGetCustomEntityTypes API operation for AWS Glue.
//
// Retrieves the details for the custom patterns specified by a list of names.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation BatchGetCustomEntityTypes for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetCustomEntityTypes
func (c *Glue) BatchGetCustomEntityTypes(input *BatchGetCustomEntityTypesInput) (*BatchGetCustomEntityTypesOutput, error) {
	req, out := c.BatchGetCustomEntityTypesRequest(input)
	return out, req.Send()
}

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

const opBatchGetDataQualityResult = "BatchGetDataQualityResult"

// BatchGetDataQualityResultRequest generates a "aws/request.Request" representing the
// client's request for the BatchGetDataQualityResult 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 BatchGetDataQualityResult for more information on using the BatchGetDataQualityResult
// 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 BatchGetDataQualityResultRequest method.
//	req, resp := client.BatchGetDataQualityResultRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetDataQualityResult
func (c *Glue) BatchGetDataQualityResultRequest(input *BatchGetDataQualityResultInput) (req *request.Request, output *BatchGetDataQualityResultOutput) {
	op := &request.Operation{
		Name:       opBatchGetDataQualityResult,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchGetDataQualityResultInput{}
	}

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

// BatchGetDataQualityResult API operation for AWS Glue.
//
// Retrieves a list of data quality results for the specified result IDs.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation BatchGetDataQualityResult for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetDataQualityResult
func (c *Glue) BatchGetDataQualityResult(input *BatchGetDataQualityResultInput) (*BatchGetDataQualityResultOutput, error) {
	req, out := c.BatchGetDataQualityResultRequest(input)
	return out, req.Send()
}

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

const opBatchGetDevEndpoints = "BatchGetDevEndpoints"

// BatchGetDevEndpointsRequest generates a "aws/request.Request" representing the
// client's request for the BatchGetDevEndpoints 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 BatchGetDevEndpoints for more information on using the BatchGetDevEndpoints
// 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 BatchGetDevEndpointsRequest method.
//	req, resp := client.BatchGetDevEndpointsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetDevEndpoints
func (c *Glue) BatchGetDevEndpointsRequest(input *BatchGetDevEndpointsInput) (req *request.Request, output *BatchGetDevEndpointsOutput) {
	op := &request.Operation{
		Name:       opBatchGetDevEndpoints,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchGetDevEndpointsInput{}
	}

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

// BatchGetDevEndpoints API operation for AWS Glue.
//
// Returns a list of resource metadata for a given list of development endpoint
// names. After calling the ListDevEndpoints operation, you can call this operation
// to access the data to which you have been granted permissions. This operation
// supports all IAM permissions, including permission conditions that uses tags.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation BatchGetDevEndpoints for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetDevEndpoints
func (c *Glue) BatchGetDevEndpoints(input *BatchGetDevEndpointsInput) (*BatchGetDevEndpointsOutput, error) {
	req, out := c.BatchGetDevEndpointsRequest(input)
	return out, req.Send()
}

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

const opBatchGetJobs = "BatchGetJobs"

// BatchGetJobsRequest generates a "aws/request.Request" representing the
// client's request for the BatchGetJobs 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 BatchGetJobs for more information on using the BatchGetJobs
// 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 BatchGetJobsRequest method.
//	req, resp := client.BatchGetJobsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetJobs
func (c *Glue) BatchGetJobsRequest(input *BatchGetJobsInput) (req *request.Request, output *BatchGetJobsOutput) {
	op := &request.Operation{
		Name:       opBatchGetJobs,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchGetJobsInput{}
	}

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

// BatchGetJobs API operation for AWS Glue.
//
// Returns a list of resource metadata for a given list of job names. After
// calling the ListJobs operation, you can call this operation to access the
// data to which you have been granted permissions. This operation supports
// all IAM permissions, including permission conditions that uses tags.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation BatchGetJobs for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetJobs
func (c *Glue) BatchGetJobs(input *BatchGetJobsInput) (*BatchGetJobsOutput, error) {
	req, out := c.BatchGetJobsRequest(input)
	return out, req.Send()
}

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

const opBatchGetPartition = "BatchGetPartition"

// BatchGetPartitionRequest generates a "aws/request.Request" representing the
// client's request for the BatchGetPartition 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 BatchGetPartition for more information on using the BatchGetPartition
// 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 BatchGetPartitionRequest method.
//	req, resp := client.BatchGetPartitionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetPartition
func (c *Glue) BatchGetPartitionRequest(input *BatchGetPartitionInput) (req *request.Request, output *BatchGetPartitionOutput) {
	op := &request.Operation{
		Name:       opBatchGetPartition,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchGetPartitionInput{}
	}

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

// BatchGetPartition API operation for AWS Glue.
//
// Retrieves partitions in a batch request.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation BatchGetPartition for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - EncryptionException
//     An encryption operation failed.
//
//   - InvalidStateException
//     An error that indicates your data is in an invalid state.
//
//   - FederationSourceException
//     A federation source failed.
//
//   - FederationSourceRetryableException
//     A federation source failed, but the operation may be retried.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetPartition
func (c *Glue) BatchGetPartition(input *BatchGetPartitionInput) (*BatchGetPartitionOutput, error) {
	req, out := c.BatchGetPartitionRequest(input)
	return out, req.Send()
}

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

const opBatchGetTableOptimizer = "BatchGetTableOptimizer"

// BatchGetTableOptimizerRequest generates a "aws/request.Request" representing the
// client's request for the BatchGetTableOptimizer 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 BatchGetTableOptimizer for more information on using the BatchGetTableOptimizer
// 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 BatchGetTableOptimizerRequest method.
//	req, resp := client.BatchGetTableOptimizerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetTableOptimizer
func (c *Glue) BatchGetTableOptimizerRequest(input *BatchGetTableOptimizerInput) (req *request.Request, output *BatchGetTableOptimizerOutput) {
	op := &request.Operation{
		Name:       opBatchGetTableOptimizer,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchGetTableOptimizerInput{}
	}

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

// BatchGetTableOptimizer API operation for AWS Glue.
//
// Returns the configuration for the specified table optimizers.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation BatchGetTableOptimizer for usage and error information.
//
// Returned Error Types:
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetTableOptimizer
func (c *Glue) BatchGetTableOptimizer(input *BatchGetTableOptimizerInput) (*BatchGetTableOptimizerOutput, error) {
	req, out := c.BatchGetTableOptimizerRequest(input)
	return out, req.Send()
}

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

const opBatchGetTriggers = "BatchGetTriggers"

// BatchGetTriggersRequest generates a "aws/request.Request" representing the
// client's request for the BatchGetTriggers 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 BatchGetTriggers for more information on using the BatchGetTriggers
// 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 BatchGetTriggersRequest method.
//	req, resp := client.BatchGetTriggersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetTriggers
func (c *Glue) BatchGetTriggersRequest(input *BatchGetTriggersInput) (req *request.Request, output *BatchGetTriggersOutput) {
	op := &request.Operation{
		Name:       opBatchGetTriggers,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchGetTriggersInput{}
	}

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

// BatchGetTriggers API operation for AWS Glue.
//
// Returns a list of resource metadata for a given list of trigger names. After
// calling the ListTriggers operation, you can call this operation to access
// the data to which you have been granted permissions. This operation supports
// all IAM permissions, including permission conditions that uses tags.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation BatchGetTriggers for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetTriggers
func (c *Glue) BatchGetTriggers(input *BatchGetTriggersInput) (*BatchGetTriggersOutput, error) {
	req, out := c.BatchGetTriggersRequest(input)
	return out, req.Send()
}

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

const opBatchGetWorkflows = "BatchGetWorkflows"

// BatchGetWorkflowsRequest generates a "aws/request.Request" representing the
// client's request for the BatchGetWorkflows 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 BatchGetWorkflows for more information on using the BatchGetWorkflows
// 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 BatchGetWorkflowsRequest method.
//	req, resp := client.BatchGetWorkflowsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetWorkflows
func (c *Glue) BatchGetWorkflowsRequest(input *BatchGetWorkflowsInput) (req *request.Request, output *BatchGetWorkflowsOutput) {
	op := &request.Operation{
		Name:       opBatchGetWorkflows,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchGetWorkflowsInput{}
	}

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

// BatchGetWorkflows API operation for AWS Glue.
//
// Returns a list of resource metadata for a given list of workflow names. After
// calling the ListWorkflows operation, you can call this operation to access
// the data to which you have been granted permissions. This operation supports
// all IAM permissions, including permission conditions that uses tags.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation BatchGetWorkflows for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchGetWorkflows
func (c *Glue) BatchGetWorkflows(input *BatchGetWorkflowsInput) (*BatchGetWorkflowsOutput, error) {
	req, out := c.BatchGetWorkflowsRequest(input)
	return out, req.Send()
}

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

const opBatchStopJobRun = "BatchStopJobRun"

// BatchStopJobRunRequest generates a "aws/request.Request" representing the
// client's request for the BatchStopJobRun 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 BatchStopJobRun for more information on using the BatchStopJobRun
// 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 BatchStopJobRunRequest method.
//	req, resp := client.BatchStopJobRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchStopJobRun
func (c *Glue) BatchStopJobRunRequest(input *BatchStopJobRunInput) (req *request.Request, output *BatchStopJobRunOutput) {
	op := &request.Operation{
		Name:       opBatchStopJobRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchStopJobRunInput{}
	}

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

// BatchStopJobRun API operation for AWS Glue.
//
// Stops one or more job runs for a specified job definition.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation BatchStopJobRun for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchStopJobRun
func (c *Glue) BatchStopJobRun(input *BatchStopJobRunInput) (*BatchStopJobRunOutput, error) {
	req, out := c.BatchStopJobRunRequest(input)
	return out, req.Send()
}

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

const opBatchUpdatePartition = "BatchUpdatePartition"

// BatchUpdatePartitionRequest generates a "aws/request.Request" representing the
// client's request for the BatchUpdatePartition 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 BatchUpdatePartition for more information on using the BatchUpdatePartition
// 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 BatchUpdatePartitionRequest method.
//	req, resp := client.BatchUpdatePartitionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchUpdatePartition
func (c *Glue) BatchUpdatePartitionRequest(input *BatchUpdatePartitionInput) (req *request.Request, output *BatchUpdatePartitionOutput) {
	op := &request.Operation{
		Name:       opBatchUpdatePartition,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &BatchUpdatePartitionInput{}
	}

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

// BatchUpdatePartition API operation for AWS Glue.
//
// Updates one or more partitions in a batch 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 AWS Glue's
// API operation BatchUpdatePartition for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/BatchUpdatePartition
func (c *Glue) BatchUpdatePartition(input *BatchUpdatePartitionInput) (*BatchUpdatePartitionOutput, error) {
	req, out := c.BatchUpdatePartitionRequest(input)
	return out, req.Send()
}

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

const opCancelDataQualityRuleRecommendationRun = "CancelDataQualityRuleRecommendationRun"

// CancelDataQualityRuleRecommendationRunRequest generates a "aws/request.Request" representing the
// client's request for the CancelDataQualityRuleRecommendationRun 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 CancelDataQualityRuleRecommendationRun for more information on using the CancelDataQualityRuleRecommendationRun
// 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 CancelDataQualityRuleRecommendationRunRequest method.
//	req, resp := client.CancelDataQualityRuleRecommendationRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CancelDataQualityRuleRecommendationRun
func (c *Glue) CancelDataQualityRuleRecommendationRunRequest(input *CancelDataQualityRuleRecommendationRunInput) (req *request.Request, output *CancelDataQualityRuleRecommendationRunOutput) {
	op := &request.Operation{
		Name:       opCancelDataQualityRuleRecommendationRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CancelDataQualityRuleRecommendationRunInput{}
	}

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

// CancelDataQualityRuleRecommendationRun API operation for AWS Glue.
//
// Cancels the specified recommendation run that was being used to generate
// 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 AWS Glue's
// API operation CancelDataQualityRuleRecommendationRun for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CancelDataQualityRuleRecommendationRun
func (c *Glue) CancelDataQualityRuleRecommendationRun(input *CancelDataQualityRuleRecommendationRunInput) (*CancelDataQualityRuleRecommendationRunOutput, error) {
	req, out := c.CancelDataQualityRuleRecommendationRunRequest(input)
	return out, req.Send()
}

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

const opCancelDataQualityRulesetEvaluationRun = "CancelDataQualityRulesetEvaluationRun"

// CancelDataQualityRulesetEvaluationRunRequest generates a "aws/request.Request" representing the
// client's request for the CancelDataQualityRulesetEvaluationRun 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 CancelDataQualityRulesetEvaluationRun for more information on using the CancelDataQualityRulesetEvaluationRun
// 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 CancelDataQualityRulesetEvaluationRunRequest method.
//	req, resp := client.CancelDataQualityRulesetEvaluationRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CancelDataQualityRulesetEvaluationRun
func (c *Glue) CancelDataQualityRulesetEvaluationRunRequest(input *CancelDataQualityRulesetEvaluationRunInput) (req *request.Request, output *CancelDataQualityRulesetEvaluationRunOutput) {
	op := &request.Operation{
		Name:       opCancelDataQualityRulesetEvaluationRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CancelDataQualityRulesetEvaluationRunInput{}
	}

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

// CancelDataQualityRulesetEvaluationRun API operation for AWS Glue.
//
// Cancels a run where a ruleset is being evaluated against 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 AWS Glue's
// API operation CancelDataQualityRulesetEvaluationRun for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CancelDataQualityRulesetEvaluationRun
func (c *Glue) CancelDataQualityRulesetEvaluationRun(input *CancelDataQualityRulesetEvaluationRunInput) (*CancelDataQualityRulesetEvaluationRunOutput, error) {
	req, out := c.CancelDataQualityRulesetEvaluationRunRequest(input)
	return out, req.Send()
}

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

const opCancelMLTaskRun = "CancelMLTaskRun"

// CancelMLTaskRunRequest generates a "aws/request.Request" representing the
// client's request for the CancelMLTaskRun 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 CancelMLTaskRun for more information on using the CancelMLTaskRun
// 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 CancelMLTaskRunRequest method.
//	req, resp := client.CancelMLTaskRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CancelMLTaskRun
func (c *Glue) CancelMLTaskRunRequest(input *CancelMLTaskRunInput) (req *request.Request, output *CancelMLTaskRunOutput) {
	op := &request.Operation{
		Name:       opCancelMLTaskRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CancelMLTaskRunInput{}
	}

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

// CancelMLTaskRun API operation for AWS Glue.
//
// Cancels (stops) a task run. Machine learning task runs are asynchronous tasks
// that Glue runs on your behalf as part of various machine learning workflows.
// You can cancel a machine learning task run at any time by calling CancelMLTaskRun
// with a task run's parent transform's TransformID and the task run's TaskRunId.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CancelMLTaskRun for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CancelMLTaskRun
func (c *Glue) CancelMLTaskRun(input *CancelMLTaskRunInput) (*CancelMLTaskRunOutput, error) {
	req, out := c.CancelMLTaskRunRequest(input)
	return out, req.Send()
}

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

const opCancelStatement = "CancelStatement"

// CancelStatementRequest generates a "aws/request.Request" representing the
// client's request for the CancelStatement 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 CancelStatement for more information on using the CancelStatement
// 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 CancelStatementRequest method.
//	req, resp := client.CancelStatementRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CancelStatement
func (c *Glue) CancelStatementRequest(input *CancelStatementInput) (req *request.Request, output *CancelStatementOutput) {
	op := &request.Operation{
		Name:       opCancelStatement,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CancelStatementInput{}
	}

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

// CancelStatement API operation for AWS Glue.
//
// Cancels the statement.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CancelStatement for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - IllegalSessionStateException
//     The session is in an invalid state to perform a requested operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CancelStatement
func (c *Glue) CancelStatement(input *CancelStatementInput) (*CancelStatementOutput, error) {
	req, out := c.CancelStatementRequest(input)
	return out, req.Send()
}

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

const opCheckSchemaVersionValidity = "CheckSchemaVersionValidity"

// CheckSchemaVersionValidityRequest generates a "aws/request.Request" representing the
// client's request for the CheckSchemaVersionValidity 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 CheckSchemaVersionValidity for more information on using the CheckSchemaVersionValidity
// 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 CheckSchemaVersionValidityRequest method.
//	req, resp := client.CheckSchemaVersionValidityRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CheckSchemaVersionValidity
func (c *Glue) CheckSchemaVersionValidityRequest(input *CheckSchemaVersionValidityInput) (req *request.Request, output *CheckSchemaVersionValidityOutput) {
	op := &request.Operation{
		Name:       opCheckSchemaVersionValidity,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CheckSchemaVersionValidityInput{}
	}

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

// CheckSchemaVersionValidity API operation for AWS Glue.
//
// Validates the supplied schema. This call has no side effects, it simply validates
// using the supplied schema using DataFormat as the format. Since it does not
// take a schema set name, no compatibility checks are performed.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CheckSchemaVersionValidity for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CheckSchemaVersionValidity
func (c *Glue) CheckSchemaVersionValidity(input *CheckSchemaVersionValidityInput) (*CheckSchemaVersionValidityOutput, error) {
	req, out := c.CheckSchemaVersionValidityRequest(input)
	return out, req.Send()
}

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

const opCreateBlueprint = "CreateBlueprint"

// CreateBlueprintRequest generates a "aws/request.Request" representing the
// client's request for the CreateBlueprint 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 CreateBlueprint for more information on using the CreateBlueprint
// 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 CreateBlueprintRequest method.
//	req, resp := client.CreateBlueprintRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateBlueprint
func (c *Glue) CreateBlueprintRequest(input *CreateBlueprintInput) (req *request.Request, output *CreateBlueprintOutput) {
	op := &request.Operation{
		Name:       opCreateBlueprint,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateBlueprintInput{}
	}

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

// CreateBlueprint API operation for AWS Glue.
//
// Registers a blueprint with Glue.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateBlueprint for usage and error information.
//
// Returned Error Types:
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateBlueprint
func (c *Glue) CreateBlueprint(input *CreateBlueprintInput) (*CreateBlueprintOutput, error) {
	req, out := c.CreateBlueprintRequest(input)
	return out, req.Send()
}

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

const opCreateClassifier = "CreateClassifier"

// CreateClassifierRequest generates a "aws/request.Request" representing the
// client's request for the CreateClassifier 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 CreateClassifier for more information on using the CreateClassifier
// 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 CreateClassifierRequest method.
//	req, resp := client.CreateClassifierRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateClassifier
func (c *Glue) CreateClassifierRequest(input *CreateClassifierInput) (req *request.Request, output *CreateClassifierOutput) {
	op := &request.Operation{
		Name:       opCreateClassifier,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateClassifierInput{}
	}

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

// CreateClassifier API operation for AWS Glue.
//
// Creates a classifier in the user's account. This can be a GrokClassifier,
// an XMLClassifier, a JsonClassifier, or a CsvClassifier, depending on which
// field of the request is present.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateClassifier for usage and error information.
//
// Returned Error Types:
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateClassifier
func (c *Glue) CreateClassifier(input *CreateClassifierInput) (*CreateClassifierOutput, error) {
	req, out := c.CreateClassifierRequest(input)
	return out, req.Send()
}

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

const opCreateConnection = "CreateConnection"

// CreateConnectionRequest generates a "aws/request.Request" representing the
// client's request for the CreateConnection 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 CreateConnection for more information on using the CreateConnection
// 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 CreateConnectionRequest method.
//	req, resp := client.CreateConnectionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateConnection
func (c *Glue) CreateConnectionRequest(input *CreateConnectionInput) (req *request.Request, output *CreateConnectionOutput) {
	op := &request.Operation{
		Name:       opCreateConnection,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateConnectionInput{}
	}

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

// CreateConnection API operation for AWS Glue.
//
// Creates a connection definition in the Data Catalog.
//
// Connections used for creating federated resources require the IAM glue:PassConnection
// permission.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateConnection for usage and error information.
//
// Returned Error Types:
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateConnection
func (c *Glue) CreateConnection(input *CreateConnectionInput) (*CreateConnectionOutput, error) {
	req, out := c.CreateConnectionRequest(input)
	return out, req.Send()
}

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

const opCreateCrawler = "CreateCrawler"

// CreateCrawlerRequest generates a "aws/request.Request" representing the
// client's request for the CreateCrawler 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 CreateCrawler for more information on using the CreateCrawler
// 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 CreateCrawlerRequest method.
//	req, resp := client.CreateCrawlerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateCrawler
func (c *Glue) CreateCrawlerRequest(input *CreateCrawlerInput) (req *request.Request, output *CreateCrawlerOutput) {
	op := &request.Operation{
		Name:       opCreateCrawler,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateCrawlerInput{}
	}

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

// CreateCrawler API operation for AWS Glue.
//
// Creates a new crawler with specified targets, role, configuration, and optional
// schedule. At least one crawl target must be specified, in the s3Targets field,
// the jdbcTargets field, or the DynamoDBTargets field.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateCrawler for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateCrawler
func (c *Glue) CreateCrawler(input *CreateCrawlerInput) (*CreateCrawlerOutput, error) {
	req, out := c.CreateCrawlerRequest(input)
	return out, req.Send()
}

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

const opCreateCustomEntityType = "CreateCustomEntityType"

// CreateCustomEntityTypeRequest generates a "aws/request.Request" representing the
// client's request for the CreateCustomEntityType 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 CreateCustomEntityType for more information on using the CreateCustomEntityType
// 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 CreateCustomEntityTypeRequest method.
//	req, resp := client.CreateCustomEntityTypeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateCustomEntityType
func (c *Glue) CreateCustomEntityTypeRequest(input *CreateCustomEntityTypeInput) (req *request.Request, output *CreateCustomEntityTypeOutput) {
	op := &request.Operation{
		Name:       opCreateCustomEntityType,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateCustomEntityTypeInput{}
	}

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

// CreateCustomEntityType API operation for AWS Glue.
//
// Creates a custom pattern that is used to detect sensitive data across the
// columns and rows of your structured data.
//
// Each custom pattern you create specifies a regular expression and an optional
// list of context words. If no context words are passed only a regular expression
// is checked.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateCustomEntityType for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - IdempotentParameterMismatchException
//     The same unique identifier was associated with two different records.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateCustomEntityType
func (c *Glue) CreateCustomEntityType(input *CreateCustomEntityTypeInput) (*CreateCustomEntityTypeOutput, error) {
	req, out := c.CreateCustomEntityTypeRequest(input)
	return out, req.Send()
}

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

const opCreateDataQualityRuleset = "CreateDataQualityRuleset"

// CreateDataQualityRulesetRequest generates a "aws/request.Request" representing the
// client's request for the CreateDataQualityRuleset 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 CreateDataQualityRuleset for more information on using the CreateDataQualityRuleset
// 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 CreateDataQualityRulesetRequest method.
//	req, resp := client.CreateDataQualityRulesetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateDataQualityRuleset
func (c *Glue) CreateDataQualityRulesetRequest(input *CreateDataQualityRulesetInput) (req *request.Request, output *CreateDataQualityRulesetOutput) {
	op := &request.Operation{
		Name:       opCreateDataQualityRuleset,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDataQualityRulesetInput{}
	}

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

// CreateDataQualityRuleset API operation for AWS Glue.
//
// Creates a data quality ruleset with DQDL rules applied to a specified Glue
// table.
//
// You create the ruleset using the Data Quality Definition Language (DQDL).
// For more information, see the Glue developer 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 AWS Glue's
// API operation CreateDataQualityRuleset for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateDataQualityRuleset
func (c *Glue) CreateDataQualityRuleset(input *CreateDataQualityRulesetInput) (*CreateDataQualityRulesetOutput, error) {
	req, out := c.CreateDataQualityRulesetRequest(input)
	return out, req.Send()
}

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

const opCreateDatabase = "CreateDatabase"

// CreateDatabaseRequest generates a "aws/request.Request" representing the
// client's request for the CreateDatabase 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 CreateDatabase for more information on using the CreateDatabase
// 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 CreateDatabaseRequest method.
//	req, resp := client.CreateDatabaseRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateDatabase
func (c *Glue) CreateDatabaseRequest(input *CreateDatabaseInput) (req *request.Request, output *CreateDatabaseOutput) {
	op := &request.Operation{
		Name:       opCreateDatabase,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDatabaseInput{}
	}

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

// CreateDatabase API operation for AWS Glue.
//
// Creates a new database in a Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateDatabase for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
//   - FederatedResourceAlreadyExistsException
//     A federated resource already exists.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateDatabase
func (c *Glue) CreateDatabase(input *CreateDatabaseInput) (*CreateDatabaseOutput, error) {
	req, out := c.CreateDatabaseRequest(input)
	return out, req.Send()
}

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

const opCreateDevEndpoint = "CreateDevEndpoint"

// CreateDevEndpointRequest generates a "aws/request.Request" representing the
// client's request for the CreateDevEndpoint 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 CreateDevEndpoint for more information on using the CreateDevEndpoint
// 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 CreateDevEndpointRequest method.
//	req, resp := client.CreateDevEndpointRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateDevEndpoint
func (c *Glue) CreateDevEndpointRequest(input *CreateDevEndpointInput) (req *request.Request, output *CreateDevEndpointOutput) {
	op := &request.Operation{
		Name:       opCreateDevEndpoint,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateDevEndpointInput{}
	}

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

// CreateDevEndpoint API operation for AWS Glue.
//
// Creates a new development endpoint.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateDevEndpoint for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - IdempotentParameterMismatchException
//     The same unique identifier was associated with two different records.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - ValidationException
//     A value could not be validated.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateDevEndpoint
func (c *Glue) CreateDevEndpoint(input *CreateDevEndpointInput) (*CreateDevEndpointOutput, error) {
	req, out := c.CreateDevEndpointRequest(input)
	return out, req.Send()
}

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

const opCreateJob = "CreateJob"

// CreateJobRequest generates a "aws/request.Request" representing the
// client's request for the CreateJob 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 CreateJob for more information on using the CreateJob
// 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 CreateJobRequest method.
//	req, resp := client.CreateJobRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateJob
func (c *Glue) CreateJobRequest(input *CreateJobInput) (req *request.Request, output *CreateJobOutput) {
	op := &request.Operation{
		Name:       opCreateJob,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateJobInput{}
	}

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

// CreateJob API operation for AWS Glue.
//
// Creates a new job definition.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateJob for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - IdempotentParameterMismatchException
//     The same unique identifier was associated with two different records.
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateJob
func (c *Glue) CreateJob(input *CreateJobInput) (*CreateJobOutput, error) {
	req, out := c.CreateJobRequest(input)
	return out, req.Send()
}

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

const opCreateMLTransform = "CreateMLTransform"

// CreateMLTransformRequest generates a "aws/request.Request" representing the
// client's request for the CreateMLTransform 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 CreateMLTransform for more information on using the CreateMLTransform
// 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 CreateMLTransformRequest method.
//	req, resp := client.CreateMLTransformRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateMLTransform
func (c *Glue) CreateMLTransformRequest(input *CreateMLTransformInput) (req *request.Request, output *CreateMLTransformOutput) {
	op := &request.Operation{
		Name:       opCreateMLTransform,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateMLTransformInput{}
	}

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

// CreateMLTransform API operation for AWS Glue.
//
// Creates an Glue machine learning transform. This operation creates the transform
// and all the necessary parameters to train it.
//
// Call this operation as the first step in the process of using a machine learning
// transform (such as the FindMatches transform) for deduplicating data. You
// can provide an optional Description, in addition to the parameters that you
// want to use for your algorithm.
//
// You must also specify certain parameters for the tasks that Glue runs on
// your behalf as part of learning from your data and creating a high-quality
// machine learning transform. These parameters include Role, and optionally,
// AllocatedCapacity, Timeout, and MaxRetries. For more information, see Jobs
// (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.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 AWS Glue's
// API operation CreateMLTransform for usage and error information.
//
// Returned Error Types:
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - IdempotentParameterMismatchException
//     The same unique identifier was associated with two different records.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateMLTransform
func (c *Glue) CreateMLTransform(input *CreateMLTransformInput) (*CreateMLTransformOutput, error) {
	req, out := c.CreateMLTransformRequest(input)
	return out, req.Send()
}

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

const opCreatePartition = "CreatePartition"

// CreatePartitionRequest generates a "aws/request.Request" representing the
// client's request for the CreatePartition 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 CreatePartition for more information on using the CreatePartition
// 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 CreatePartitionRequest method.
//	req, resp := client.CreatePartitionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreatePartition
func (c *Glue) CreatePartitionRequest(input *CreatePartitionInput) (req *request.Request, output *CreatePartitionOutput) {
	op := &request.Operation{
		Name:       opCreatePartition,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreatePartitionInput{}
	}

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

// CreatePartition API operation for AWS Glue.
//
// Creates a new partition.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreatePartition for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreatePartition
func (c *Glue) CreatePartition(input *CreatePartitionInput) (*CreatePartitionOutput, error) {
	req, out := c.CreatePartitionRequest(input)
	return out, req.Send()
}

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

const opCreatePartitionIndex = "CreatePartitionIndex"

// CreatePartitionIndexRequest generates a "aws/request.Request" representing the
// client's request for the CreatePartitionIndex 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 CreatePartitionIndex for more information on using the CreatePartitionIndex
// 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 CreatePartitionIndexRequest method.
//	req, resp := client.CreatePartitionIndexRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreatePartitionIndex
func (c *Glue) CreatePartitionIndexRequest(input *CreatePartitionIndexInput) (req *request.Request, output *CreatePartitionIndexOutput) {
	op := &request.Operation{
		Name:       opCreatePartitionIndex,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreatePartitionIndexInput{}
	}

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

// CreatePartitionIndex API operation for AWS Glue.
//
// Creates a specified partition index in an existing table.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreatePartitionIndex for usage and error information.
//
// Returned Error Types:
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreatePartitionIndex
func (c *Glue) CreatePartitionIndex(input *CreatePartitionIndexInput) (*CreatePartitionIndexOutput, error) {
	req, out := c.CreatePartitionIndexRequest(input)
	return out, req.Send()
}

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

const opCreateRegistry = "CreateRegistry"

// CreateRegistryRequest generates a "aws/request.Request" representing the
// client's request for the CreateRegistry 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 CreateRegistry for more information on using the CreateRegistry
// 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 CreateRegistryRequest method.
//	req, resp := client.CreateRegistryRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateRegistry
func (c *Glue) CreateRegistryRequest(input *CreateRegistryInput) (req *request.Request, output *CreateRegistryOutput) {
	op := &request.Operation{
		Name:       opCreateRegistry,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateRegistryInput{}
	}

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

// CreateRegistry API operation for AWS Glue.
//
// Creates a new registry which may be used to hold a collection of schemas.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateRegistry for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateRegistry
func (c *Glue) CreateRegistry(input *CreateRegistryInput) (*CreateRegistryOutput, error) {
	req, out := c.CreateRegistryRequest(input)
	return out, req.Send()
}

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

const opCreateSchema = "CreateSchema"

// CreateSchemaRequest generates a "aws/request.Request" representing the
// client's request for the CreateSchema 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 CreateSchema for more information on using the CreateSchema
// 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 CreateSchemaRequest method.
//	req, resp := client.CreateSchemaRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateSchema
func (c *Glue) CreateSchemaRequest(input *CreateSchemaInput) (req *request.Request, output *CreateSchemaOutput) {
	op := &request.Operation{
		Name:       opCreateSchema,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateSchemaInput{}
	}

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

// CreateSchema API operation for AWS Glue.
//
// Creates a new schema set and registers the schema definition. Returns an
// error if the schema set already exists without actually registering the version.
//
// When the schema set is created, a version checkpoint will be set to the first
// version. Compatibility mode "DISABLED" restricts any additional schema versions
// from being added after the first schema version. For all other compatibility
// modes, validation of compatibility settings will be applied only from the
// second version onwards when the RegisterSchemaVersion API is used.
//
// When this API is called without a RegistryId, this will create an entry for
// a "default-registry" in the registry database tables, if it is not already
// present.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateSchema for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateSchema
func (c *Glue) CreateSchema(input *CreateSchemaInput) (*CreateSchemaOutput, error) {
	req, out := c.CreateSchemaRequest(input)
	return out, req.Send()
}

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

const opCreateScript = "CreateScript"

// CreateScriptRequest generates a "aws/request.Request" representing the
// client's request for the CreateScript 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 CreateScript for more information on using the CreateScript
// 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 CreateScriptRequest method.
//	req, resp := client.CreateScriptRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateScript
func (c *Glue) CreateScriptRequest(input *CreateScriptInput) (req *request.Request, output *CreateScriptOutput) {
	op := &request.Operation{
		Name:       opCreateScript,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateScriptInput{}
	}

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

// CreateScript API operation for AWS Glue.
//
// Transforms a directed acyclic graph (DAG) into code.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateScript for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateScript
func (c *Glue) CreateScript(input *CreateScriptInput) (*CreateScriptOutput, error) {
	req, out := c.CreateScriptRequest(input)
	return out, req.Send()
}

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

const opCreateSecurityConfiguration = "CreateSecurityConfiguration"

// CreateSecurityConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the CreateSecurityConfiguration 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 CreateSecurityConfiguration for more information on using the CreateSecurityConfiguration
// 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 CreateSecurityConfigurationRequest method.
//	req, resp := client.CreateSecurityConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateSecurityConfiguration
func (c *Glue) CreateSecurityConfigurationRequest(input *CreateSecurityConfigurationInput) (req *request.Request, output *CreateSecurityConfigurationOutput) {
	op := &request.Operation{
		Name:       opCreateSecurityConfiguration,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateSecurityConfigurationInput{}
	}

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

// CreateSecurityConfiguration API operation for AWS Glue.
//
// Creates a new security configuration. A security configuration is a set of
// security properties that can be used by Glue. You can use a security configuration
// to encrypt data at rest. For information about using security configurations
// in Glue, see Encrypting Data Written by Crawlers, Jobs, and Development Endpoints
// (https://docs.aws.amazon.com/glue/latest/dg/encryption-security-configuration.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 AWS Glue's
// API operation CreateSecurityConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateSecurityConfiguration
func (c *Glue) CreateSecurityConfiguration(input *CreateSecurityConfigurationInput) (*CreateSecurityConfigurationOutput, error) {
	req, out := c.CreateSecurityConfigurationRequest(input)
	return out, req.Send()
}

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

const opCreateSession = "CreateSession"

// CreateSessionRequest generates a "aws/request.Request" representing the
// client's request for the CreateSession 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 CreateSession for more information on using the CreateSession
// 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 CreateSessionRequest method.
//	req, resp := client.CreateSessionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateSession
func (c *Glue) CreateSessionRequest(input *CreateSessionInput) (req *request.Request, output *CreateSessionOutput) {
	op := &request.Operation{
		Name:       opCreateSession,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateSessionInput{}
	}

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

// CreateSession API operation for AWS Glue.
//
// Creates a new session.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateSession for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - IdempotentParameterMismatchException
//     The same unique identifier was associated with two different records.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - ValidationException
//     A value could not be validated.
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateSession
func (c *Glue) CreateSession(input *CreateSessionInput) (*CreateSessionOutput, error) {
	req, out := c.CreateSessionRequest(input)
	return out, req.Send()
}

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

const opCreateTable = "CreateTable"

// CreateTableRequest generates a "aws/request.Request" representing the
// client's request for the CreateTable 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 CreateTable for more information on using the CreateTable
// 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 CreateTableRequest method.
//	req, resp := client.CreateTableRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateTable
func (c *Glue) CreateTableRequest(input *CreateTableInput) (req *request.Request, output *CreateTableOutput) {
	op := &request.Operation{
		Name:       opCreateTable,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateTableInput{}
	}

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

// CreateTable API operation for AWS Glue.
//
// Creates a new table definition in the Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateTable for usage and error information.
//
// Returned Error Types:
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
//   - ResourceNotReadyException
//     A resource was not ready for a transaction.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateTable
func (c *Glue) CreateTable(input *CreateTableInput) (*CreateTableOutput, error) {
	req, out := c.CreateTableRequest(input)
	return out, req.Send()
}

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

const opCreateTableOptimizer = "CreateTableOptimizer"

// CreateTableOptimizerRequest generates a "aws/request.Request" representing the
// client's request for the CreateTableOptimizer 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 CreateTableOptimizer for more information on using the CreateTableOptimizer
// 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 CreateTableOptimizerRequest method.
//	req, resp := client.CreateTableOptimizerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateTableOptimizer
func (c *Glue) CreateTableOptimizerRequest(input *CreateTableOptimizerInput) (req *request.Request, output *CreateTableOptimizerOutput) {
	op := &request.Operation{
		Name:       opCreateTableOptimizer,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateTableOptimizerInput{}
	}

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

// CreateTableOptimizer API operation for AWS Glue.
//
// Creates a new table optimizer for a specific function. compaction is the
// only currently supported optimizer type.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateTableOptimizer for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateTableOptimizer
func (c *Glue) CreateTableOptimizer(input *CreateTableOptimizerInput) (*CreateTableOptimizerOutput, error) {
	req, out := c.CreateTableOptimizerRequest(input)
	return out, req.Send()
}

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

const opCreateTrigger = "CreateTrigger"

// CreateTriggerRequest generates a "aws/request.Request" representing the
// client's request for the CreateTrigger 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 CreateTrigger for more information on using the CreateTrigger
// 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 CreateTriggerRequest method.
//	req, resp := client.CreateTriggerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateTrigger
func (c *Glue) CreateTriggerRequest(input *CreateTriggerInput) (req *request.Request, output *CreateTriggerOutput) {
	op := &request.Operation{
		Name:       opCreateTrigger,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateTriggerInput{}
	}

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

// CreateTrigger API operation for AWS Glue.
//
// Creates a new trigger.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateTrigger for usage and error information.
//
// Returned Error Types:
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - IdempotentParameterMismatchException
//     The same unique identifier was associated with two different records.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateTrigger
func (c *Glue) CreateTrigger(input *CreateTriggerInput) (*CreateTriggerOutput, error) {
	req, out := c.CreateTriggerRequest(input)
	return out, req.Send()
}

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

const opCreateUsageProfile = "CreateUsageProfile"

// CreateUsageProfileRequest generates a "aws/request.Request" representing the
// client's request for the CreateUsageProfile 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 CreateUsageProfile for more information on using the CreateUsageProfile
// 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 CreateUsageProfileRequest method.
//	req, resp := client.CreateUsageProfileRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateUsageProfile
func (c *Glue) CreateUsageProfileRequest(input *CreateUsageProfileInput) (req *request.Request, output *CreateUsageProfileOutput) {
	op := &request.Operation{
		Name:       opCreateUsageProfile,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateUsageProfileInput{}
	}

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

// CreateUsageProfile API operation for AWS Glue.
//
// Creates an Glue usage profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateUsageProfile for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - OperationNotSupportedException
//     The operation is not available in the region.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateUsageProfile
func (c *Glue) CreateUsageProfile(input *CreateUsageProfileInput) (*CreateUsageProfileOutput, error) {
	req, out := c.CreateUsageProfileRequest(input)
	return out, req.Send()
}

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

const opCreateUserDefinedFunction = "CreateUserDefinedFunction"

// CreateUserDefinedFunctionRequest generates a "aws/request.Request" representing the
// client's request for the CreateUserDefinedFunction 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 CreateUserDefinedFunction for more information on using the CreateUserDefinedFunction
// 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 CreateUserDefinedFunctionRequest method.
//	req, resp := client.CreateUserDefinedFunctionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateUserDefinedFunction
func (c *Glue) CreateUserDefinedFunctionRequest(input *CreateUserDefinedFunctionInput) (req *request.Request, output *CreateUserDefinedFunctionOutput) {
	op := &request.Operation{
		Name:       opCreateUserDefinedFunction,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateUserDefinedFunctionInput{}
	}

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

// CreateUserDefinedFunction API operation for AWS Glue.
//
// Creates a new function definition in the Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateUserDefinedFunction for usage and error information.
//
// Returned Error Types:
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateUserDefinedFunction
func (c *Glue) CreateUserDefinedFunction(input *CreateUserDefinedFunctionInput) (*CreateUserDefinedFunctionOutput, error) {
	req, out := c.CreateUserDefinedFunctionRequest(input)
	return out, req.Send()
}

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

const opCreateWorkflow = "CreateWorkflow"

// CreateWorkflowRequest generates a "aws/request.Request" representing the
// client's request for the CreateWorkflow 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 CreateWorkflow for more information on using the CreateWorkflow
// 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 CreateWorkflowRequest method.
//	req, resp := client.CreateWorkflowRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateWorkflow
func (c *Glue) CreateWorkflowRequest(input *CreateWorkflowInput) (req *request.Request, output *CreateWorkflowOutput) {
	op := &request.Operation{
		Name:       opCreateWorkflow,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &CreateWorkflowInput{}
	}

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

// CreateWorkflow API operation for AWS Glue.
//
// Creates a new workflow.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation CreateWorkflow for usage and error information.
//
// Returned Error Types:
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateWorkflow
func (c *Glue) CreateWorkflow(input *CreateWorkflowInput) (*CreateWorkflowOutput, error) {
	req, out := c.CreateWorkflowRequest(input)
	return out, req.Send()
}

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

const opDeleteBlueprint = "DeleteBlueprint"

// DeleteBlueprintRequest generates a "aws/request.Request" representing the
// client's request for the DeleteBlueprint 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 DeleteBlueprint for more information on using the DeleteBlueprint
// 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 DeleteBlueprintRequest method.
//	req, resp := client.DeleteBlueprintRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteBlueprint
func (c *Glue) DeleteBlueprintRequest(input *DeleteBlueprintInput) (req *request.Request, output *DeleteBlueprintOutput) {
	op := &request.Operation{
		Name:       opDeleteBlueprint,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteBlueprintInput{}
	}

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

// DeleteBlueprint API operation for AWS Glue.
//
// Deletes an existing blueprint.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteBlueprint for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteBlueprint
func (c *Glue) DeleteBlueprint(input *DeleteBlueprintInput) (*DeleteBlueprintOutput, error) {
	req, out := c.DeleteBlueprintRequest(input)
	return out, req.Send()
}

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

const opDeleteClassifier = "DeleteClassifier"

// DeleteClassifierRequest generates a "aws/request.Request" representing the
// client's request for the DeleteClassifier 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 DeleteClassifier for more information on using the DeleteClassifier
// 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 DeleteClassifierRequest method.
//	req, resp := client.DeleteClassifierRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteClassifier
func (c *Glue) DeleteClassifierRequest(input *DeleteClassifierInput) (req *request.Request, output *DeleteClassifierOutput) {
	op := &request.Operation{
		Name:       opDeleteClassifier,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteClassifierInput{}
	}

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

// DeleteClassifier API operation for AWS Glue.
//
// Removes a classifier from the Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteClassifier for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteClassifier
func (c *Glue) DeleteClassifier(input *DeleteClassifierInput) (*DeleteClassifierOutput, error) {
	req, out := c.DeleteClassifierRequest(input)
	return out, req.Send()
}

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

const opDeleteColumnStatisticsForPartition = "DeleteColumnStatisticsForPartition"

// DeleteColumnStatisticsForPartitionRequest generates a "aws/request.Request" representing the
// client's request for the DeleteColumnStatisticsForPartition 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 DeleteColumnStatisticsForPartition for more information on using the DeleteColumnStatisticsForPartition
// 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 DeleteColumnStatisticsForPartitionRequest method.
//	req, resp := client.DeleteColumnStatisticsForPartitionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteColumnStatisticsForPartition
func (c *Glue) DeleteColumnStatisticsForPartitionRequest(input *DeleteColumnStatisticsForPartitionInput) (req *request.Request, output *DeleteColumnStatisticsForPartitionOutput) {
	op := &request.Operation{
		Name:       opDeleteColumnStatisticsForPartition,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteColumnStatisticsForPartitionInput{}
	}

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

// DeleteColumnStatisticsForPartition API operation for AWS Glue.
//
// Delete the partition column statistics of a column.
//
// The Identity and Access Management (IAM) permission required for this operation
// is DeletePartition.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteColumnStatisticsForPartition for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteColumnStatisticsForPartition
func (c *Glue) DeleteColumnStatisticsForPartition(input *DeleteColumnStatisticsForPartitionInput) (*DeleteColumnStatisticsForPartitionOutput, error) {
	req, out := c.DeleteColumnStatisticsForPartitionRequest(input)
	return out, req.Send()
}

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

const opDeleteColumnStatisticsForTable = "DeleteColumnStatisticsForTable"

// DeleteColumnStatisticsForTableRequest generates a "aws/request.Request" representing the
// client's request for the DeleteColumnStatisticsForTable 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 DeleteColumnStatisticsForTable for more information on using the DeleteColumnStatisticsForTable
// 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 DeleteColumnStatisticsForTableRequest method.
//	req, resp := client.DeleteColumnStatisticsForTableRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteColumnStatisticsForTable
func (c *Glue) DeleteColumnStatisticsForTableRequest(input *DeleteColumnStatisticsForTableInput) (req *request.Request, output *DeleteColumnStatisticsForTableOutput) {
	op := &request.Operation{
		Name:       opDeleteColumnStatisticsForTable,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteColumnStatisticsForTableInput{}
	}

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

// DeleteColumnStatisticsForTable API operation for AWS Glue.
//
// Retrieves table statistics of columns.
//
// The Identity and Access Management (IAM) permission required for this operation
// is DeleteTable.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteColumnStatisticsForTable for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteColumnStatisticsForTable
func (c *Glue) DeleteColumnStatisticsForTable(input *DeleteColumnStatisticsForTableInput) (*DeleteColumnStatisticsForTableOutput, error) {
	req, out := c.DeleteColumnStatisticsForTableRequest(input)
	return out, req.Send()
}

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

const opDeleteConnection = "DeleteConnection"

// DeleteConnectionRequest generates a "aws/request.Request" representing the
// client's request for the DeleteConnection 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 DeleteConnection for more information on using the DeleteConnection
// 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 DeleteConnectionRequest method.
//	req, resp := client.DeleteConnectionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteConnection
func (c *Glue) DeleteConnectionRequest(input *DeleteConnectionInput) (req *request.Request, output *DeleteConnectionOutput) {
	op := &request.Operation{
		Name:       opDeleteConnection,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteConnectionInput{}
	}

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

// DeleteConnection API operation for AWS Glue.
//
// Deletes a connection from the Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteConnection for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteConnection
func (c *Glue) DeleteConnection(input *DeleteConnectionInput) (*DeleteConnectionOutput, error) {
	req, out := c.DeleteConnectionRequest(input)
	return out, req.Send()
}

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

const opDeleteCrawler = "DeleteCrawler"

// DeleteCrawlerRequest generates a "aws/request.Request" representing the
// client's request for the DeleteCrawler 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 DeleteCrawler for more information on using the DeleteCrawler
// 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 DeleteCrawlerRequest method.
//	req, resp := client.DeleteCrawlerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteCrawler
func (c *Glue) DeleteCrawlerRequest(input *DeleteCrawlerInput) (req *request.Request, output *DeleteCrawlerOutput) {
	op := &request.Operation{
		Name:       opDeleteCrawler,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteCrawlerInput{}
	}

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

// DeleteCrawler API operation for AWS Glue.
//
// Removes a specified crawler from the Glue Data Catalog, unless the crawler
// state is RUNNING.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteCrawler for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - CrawlerRunningException
//     The operation cannot be performed because the crawler is already running.
//
//   - SchedulerTransitioningException
//     The specified scheduler is transitioning.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteCrawler
func (c *Glue) DeleteCrawler(input *DeleteCrawlerInput) (*DeleteCrawlerOutput, error) {
	req, out := c.DeleteCrawlerRequest(input)
	return out, req.Send()
}

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

const opDeleteCustomEntityType = "DeleteCustomEntityType"

// DeleteCustomEntityTypeRequest generates a "aws/request.Request" representing the
// client's request for the DeleteCustomEntityType 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 DeleteCustomEntityType for more information on using the DeleteCustomEntityType
// 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 DeleteCustomEntityTypeRequest method.
//	req, resp := client.DeleteCustomEntityTypeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteCustomEntityType
func (c *Glue) DeleteCustomEntityTypeRequest(input *DeleteCustomEntityTypeInput) (req *request.Request, output *DeleteCustomEntityTypeOutput) {
	op := &request.Operation{
		Name:       opDeleteCustomEntityType,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteCustomEntityTypeInput{}
	}

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

// DeleteCustomEntityType API operation for AWS Glue.
//
// Deletes a custom pattern by specifying its name.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteCustomEntityType for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteCustomEntityType
func (c *Glue) DeleteCustomEntityType(input *DeleteCustomEntityTypeInput) (*DeleteCustomEntityTypeOutput, error) {
	req, out := c.DeleteCustomEntityTypeRequest(input)
	return out, req.Send()
}

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

const opDeleteDataQualityRuleset = "DeleteDataQualityRuleset"

// DeleteDataQualityRulesetRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDataQualityRuleset 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 DeleteDataQualityRuleset for more information on using the DeleteDataQualityRuleset
// 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 DeleteDataQualityRulesetRequest method.
//	req, resp := client.DeleteDataQualityRulesetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteDataQualityRuleset
func (c *Glue) DeleteDataQualityRulesetRequest(input *DeleteDataQualityRulesetInput) (req *request.Request, output *DeleteDataQualityRulesetOutput) {
	op := &request.Operation{
		Name:       opDeleteDataQualityRuleset,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDataQualityRulesetInput{}
	}

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

// DeleteDataQualityRuleset API operation for AWS Glue.
//
// Deletes a data quality ruleset.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteDataQualityRuleset for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteDataQualityRuleset
func (c *Glue) DeleteDataQualityRuleset(input *DeleteDataQualityRulesetInput) (*DeleteDataQualityRulesetOutput, error) {
	req, out := c.DeleteDataQualityRulesetRequest(input)
	return out, req.Send()
}

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

const opDeleteDatabase = "DeleteDatabase"

// DeleteDatabaseRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDatabase 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 DeleteDatabase for more information on using the DeleteDatabase
// 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 DeleteDatabaseRequest method.
//	req, resp := client.DeleteDatabaseRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteDatabase
func (c *Glue) DeleteDatabaseRequest(input *DeleteDatabaseInput) (req *request.Request, output *DeleteDatabaseOutput) {
	op := &request.Operation{
		Name:       opDeleteDatabase,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDatabaseInput{}
	}

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

// DeleteDatabase API operation for AWS Glue.
//
// Removes a specified database from a Data Catalog.
//
// After completing this operation, you no longer have access to the tables
// (and all table versions and partitions that might belong to the tables) and
// the user-defined functions in the deleted database. Glue deletes these "orphaned"
// resources asynchronously in a timely manner, at the discretion of the service.
//
// To ensure the immediate deletion of all related resources, before calling
// DeleteDatabase, use DeleteTableVersion or BatchDeleteTableVersion, DeletePartition
// or BatchDeletePartition, DeleteUserDefinedFunction, and DeleteTable or BatchDeleteTable,
// to delete any resources that belong to the database.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteDatabase for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteDatabase
func (c *Glue) DeleteDatabase(input *DeleteDatabaseInput) (*DeleteDatabaseOutput, error) {
	req, out := c.DeleteDatabaseRequest(input)
	return out, req.Send()
}

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

const opDeleteDevEndpoint = "DeleteDevEndpoint"

// DeleteDevEndpointRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDevEndpoint 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 DeleteDevEndpoint for more information on using the DeleteDevEndpoint
// 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 DeleteDevEndpointRequest method.
//	req, resp := client.DeleteDevEndpointRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteDevEndpoint
func (c *Glue) DeleteDevEndpointRequest(input *DeleteDevEndpointInput) (req *request.Request, output *DeleteDevEndpointOutput) {
	op := &request.Operation{
		Name:       opDeleteDevEndpoint,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteDevEndpointInput{}
	}

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

// DeleteDevEndpoint API operation for AWS Glue.
//
// Deletes a specified development endpoint.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteDevEndpoint for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteDevEndpoint
func (c *Glue) DeleteDevEndpoint(input *DeleteDevEndpointInput) (*DeleteDevEndpointOutput, error) {
	req, out := c.DeleteDevEndpointRequest(input)
	return out, req.Send()
}

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

const opDeleteJob = "DeleteJob"

// DeleteJobRequest generates a "aws/request.Request" representing the
// client's request for the DeleteJob 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 DeleteJob for more information on using the DeleteJob
// 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 DeleteJobRequest method.
//	req, resp := client.DeleteJobRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteJob
func (c *Glue) DeleteJobRequest(input *DeleteJobInput) (req *request.Request, output *DeleteJobOutput) {
	op := &request.Operation{
		Name:       opDeleteJob,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteJobInput{}
	}

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

// DeleteJob API operation for AWS Glue.
//
// Deletes a specified job definition. If the job definition is not found, no
// exception is thrown.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteJob for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteJob
func (c *Glue) DeleteJob(input *DeleteJobInput) (*DeleteJobOutput, error) {
	req, out := c.DeleteJobRequest(input)
	return out, req.Send()
}

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

const opDeleteMLTransform = "DeleteMLTransform"

// DeleteMLTransformRequest generates a "aws/request.Request" representing the
// client's request for the DeleteMLTransform 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 DeleteMLTransform for more information on using the DeleteMLTransform
// 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 DeleteMLTransformRequest method.
//	req, resp := client.DeleteMLTransformRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteMLTransform
func (c *Glue) DeleteMLTransformRequest(input *DeleteMLTransformInput) (req *request.Request, output *DeleteMLTransformOutput) {
	op := &request.Operation{
		Name:       opDeleteMLTransform,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteMLTransformInput{}
	}

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

// DeleteMLTransform API operation for AWS Glue.
//
// Deletes an Glue machine learning transform. Machine learning transforms are
// a special type of transform that use machine learning to learn the details
// of the transformation to be performed by learning from examples provided
// by humans. These transformations are then saved by Glue. If you no longer
// need a transform, you can delete it by calling DeleteMLTransforms. However,
// any Glue jobs that still reference the deleted transform will no longer succeed.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteMLTransform for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteMLTransform
func (c *Glue) DeleteMLTransform(input *DeleteMLTransformInput) (*DeleteMLTransformOutput, error) {
	req, out := c.DeleteMLTransformRequest(input)
	return out, req.Send()
}

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

const opDeletePartition = "DeletePartition"

// DeletePartitionRequest generates a "aws/request.Request" representing the
// client's request for the DeletePartition 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 DeletePartition for more information on using the DeletePartition
// 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 DeletePartitionRequest method.
//	req, resp := client.DeletePartitionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeletePartition
func (c *Glue) DeletePartitionRequest(input *DeletePartitionInput) (req *request.Request, output *DeletePartitionOutput) {
	op := &request.Operation{
		Name:       opDeletePartition,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeletePartitionInput{}
	}

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

// DeletePartition API operation for AWS Glue.
//
// Deletes a specified partition.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeletePartition for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeletePartition
func (c *Glue) DeletePartition(input *DeletePartitionInput) (*DeletePartitionOutput, error) {
	req, out := c.DeletePartitionRequest(input)
	return out, req.Send()
}

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

const opDeletePartitionIndex = "DeletePartitionIndex"

// DeletePartitionIndexRequest generates a "aws/request.Request" representing the
// client's request for the DeletePartitionIndex 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 DeletePartitionIndex for more information on using the DeletePartitionIndex
// 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 DeletePartitionIndexRequest method.
//	req, resp := client.DeletePartitionIndexRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeletePartitionIndex
func (c *Glue) DeletePartitionIndexRequest(input *DeletePartitionIndexInput) (req *request.Request, output *DeletePartitionIndexOutput) {
	op := &request.Operation{
		Name:       opDeletePartitionIndex,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeletePartitionIndexInput{}
	}

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

// DeletePartitionIndex API operation for AWS Glue.
//
// Deletes a specified partition index from an existing table.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeletePartitionIndex for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - ConflictException
//     The CreatePartitions API was called on a table that has indexes enabled.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeletePartitionIndex
func (c *Glue) DeletePartitionIndex(input *DeletePartitionIndexInput) (*DeletePartitionIndexOutput, error) {
	req, out := c.DeletePartitionIndexRequest(input)
	return out, req.Send()
}

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

const opDeleteRegistry = "DeleteRegistry"

// DeleteRegistryRequest generates a "aws/request.Request" representing the
// client's request for the DeleteRegistry 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 DeleteRegistry for more information on using the DeleteRegistry
// 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 DeleteRegistryRequest method.
//	req, resp := client.DeleteRegistryRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteRegistry
func (c *Glue) DeleteRegistryRequest(input *DeleteRegistryInput) (req *request.Request, output *DeleteRegistryOutput) {
	op := &request.Operation{
		Name:       opDeleteRegistry,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteRegistryInput{}
	}

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

// DeleteRegistry API operation for AWS Glue.
//
// Delete the entire registry including schema and all of its versions. To get
// the status of the delete operation, you can call the GetRegistry API after
// the asynchronous call. Deleting a registry will deactivate all online operations
// for the registry such as the UpdateRegistry, CreateSchema, UpdateSchema,
// and RegisterSchemaVersion APIs.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteRegistry for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteRegistry
func (c *Glue) DeleteRegistry(input *DeleteRegistryInput) (*DeleteRegistryOutput, error) {
	req, out := c.DeleteRegistryRequest(input)
	return out, req.Send()
}

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

const opDeleteResourcePolicy = "DeleteResourcePolicy"

// DeleteResourcePolicyRequest generates a "aws/request.Request" representing the
// client's request for the DeleteResourcePolicy 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 DeleteResourcePolicy for more information on using the DeleteResourcePolicy
// 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 DeleteResourcePolicyRequest method.
//	req, resp := client.DeleteResourcePolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteResourcePolicy
func (c *Glue) DeleteResourcePolicyRequest(input *DeleteResourcePolicyInput) (req *request.Request, output *DeleteResourcePolicyOutput) {
	op := &request.Operation{
		Name:       opDeleteResourcePolicy,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteResourcePolicyInput{}
	}

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

// DeleteResourcePolicy API operation for AWS Glue.
//
// Deletes a specified policy.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteResourcePolicy for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - ConditionCheckFailureException
//     A specified condition was not satisfied.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteResourcePolicy
func (c *Glue) DeleteResourcePolicy(input *DeleteResourcePolicyInput) (*DeleteResourcePolicyOutput, error) {
	req, out := c.DeleteResourcePolicyRequest(input)
	return out, req.Send()
}

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

const opDeleteSchema = "DeleteSchema"

// DeleteSchemaRequest generates a "aws/request.Request" representing the
// client's request for the DeleteSchema 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 DeleteSchema for more information on using the DeleteSchema
// 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 DeleteSchemaRequest method.
//	req, resp := client.DeleteSchemaRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteSchema
func (c *Glue) DeleteSchemaRequest(input *DeleteSchemaInput) (req *request.Request, output *DeleteSchemaOutput) {
	op := &request.Operation{
		Name:       opDeleteSchema,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteSchemaInput{}
	}

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

// DeleteSchema API operation for AWS Glue.
//
// Deletes the entire schema set, including the schema set and all of its versions.
// To get the status of the delete operation, you can call GetSchema API after
// the asynchronous call. Deleting a registry will deactivate all online operations
// for the schema, such as the GetSchemaByDefinition, and RegisterSchemaVersion
// APIs.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteSchema for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteSchema
func (c *Glue) DeleteSchema(input *DeleteSchemaInput) (*DeleteSchemaOutput, error) {
	req, out := c.DeleteSchemaRequest(input)
	return out, req.Send()
}

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

const opDeleteSchemaVersions = "DeleteSchemaVersions"

// DeleteSchemaVersionsRequest generates a "aws/request.Request" representing the
// client's request for the DeleteSchemaVersions 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 DeleteSchemaVersions for more information on using the DeleteSchemaVersions
// 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 DeleteSchemaVersionsRequest method.
//	req, resp := client.DeleteSchemaVersionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteSchemaVersions
func (c *Glue) DeleteSchemaVersionsRequest(input *DeleteSchemaVersionsInput) (req *request.Request, output *DeleteSchemaVersionsOutput) {
	op := &request.Operation{
		Name:       opDeleteSchemaVersions,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteSchemaVersionsInput{}
	}

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

// DeleteSchemaVersions API operation for AWS Glue.
//
// Remove versions from the specified schema. A version number or range may
// be supplied. If the compatibility mode forbids deleting of a version that
// is necessary, such as BACKWARDS_FULL, an error is returned. Calling the GetSchemaVersions
// API after this call will list the status of the deleted versions.
//
// When the range of version numbers contain check pointed version, the API
// will return a 409 conflict and will not proceed with the deletion. You have
// to remove the checkpoint first using the DeleteSchemaCheckpoint API before
// using this API.
//
// You cannot use the DeleteSchemaVersions API to delete the first schema version
// in the schema set. The first schema version can only be deleted by the DeleteSchema
// API. This operation will also delete the attached SchemaVersionMetadata under
// the schema versions. Hard deletes will be enforced on the database.
//
// If the compatibility mode forbids deleting of a version that is necessary,
// such as BACKWARDS_FULL, an error 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 AWS Glue's
// API operation DeleteSchemaVersions for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteSchemaVersions
func (c *Glue) DeleteSchemaVersions(input *DeleteSchemaVersionsInput) (*DeleteSchemaVersionsOutput, error) {
	req, out := c.DeleteSchemaVersionsRequest(input)
	return out, req.Send()
}

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

const opDeleteSecurityConfiguration = "DeleteSecurityConfiguration"

// DeleteSecurityConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the DeleteSecurityConfiguration 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 DeleteSecurityConfiguration for more information on using the DeleteSecurityConfiguration
// 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 DeleteSecurityConfigurationRequest method.
//	req, resp := client.DeleteSecurityConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteSecurityConfiguration
func (c *Glue) DeleteSecurityConfigurationRequest(input *DeleteSecurityConfigurationInput) (req *request.Request, output *DeleteSecurityConfigurationOutput) {
	op := &request.Operation{
		Name:       opDeleteSecurityConfiguration,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteSecurityConfigurationInput{}
	}

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

// DeleteSecurityConfiguration API operation for AWS Glue.
//
// Deletes a specified security configuration.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteSecurityConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteSecurityConfiguration
func (c *Glue) DeleteSecurityConfiguration(input *DeleteSecurityConfigurationInput) (*DeleteSecurityConfigurationOutput, error) {
	req, out := c.DeleteSecurityConfigurationRequest(input)
	return out, req.Send()
}

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

const opDeleteSession = "DeleteSession"

// DeleteSessionRequest generates a "aws/request.Request" representing the
// client's request for the DeleteSession 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 DeleteSession for more information on using the DeleteSession
// 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 DeleteSessionRequest method.
//	req, resp := client.DeleteSessionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteSession
func (c *Glue) DeleteSessionRequest(input *DeleteSessionInput) (req *request.Request, output *DeleteSessionOutput) {
	op := &request.Operation{
		Name:       opDeleteSession,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteSessionInput{}
	}

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

// DeleteSession API operation for AWS Glue.
//
// Deletes the session.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteSession for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - IllegalSessionStateException
//     The session is in an invalid state to perform a requested operation.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteSession
func (c *Glue) DeleteSession(input *DeleteSessionInput) (*DeleteSessionOutput, error) {
	req, out := c.DeleteSessionRequest(input)
	return out, req.Send()
}

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

const opDeleteTable = "DeleteTable"

// DeleteTableRequest generates a "aws/request.Request" representing the
// client's request for the DeleteTable 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 DeleteTable for more information on using the DeleteTable
// 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 DeleteTableRequest method.
//	req, resp := client.DeleteTableRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteTable
func (c *Glue) DeleteTableRequest(input *DeleteTableInput) (req *request.Request, output *DeleteTableOutput) {
	op := &request.Operation{
		Name:       opDeleteTable,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteTableInput{}
	}

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

// DeleteTable API operation for AWS Glue.
//
// Removes a table definition from the Data Catalog.
//
// After completing this operation, you no longer have access to the table versions
// and partitions that belong to the deleted table. Glue deletes these "orphaned"
// resources asynchronously in a timely manner, at the discretion of the service.
//
// To ensure the immediate deletion of all related resources, before calling
// DeleteTable, use DeleteTableVersion or BatchDeleteTableVersion, and DeletePartition
// or BatchDeletePartition, to delete any resources that belong to the table.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteTable for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
//   - ResourceNotReadyException
//     A resource was not ready for a transaction.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteTable
func (c *Glue) DeleteTable(input *DeleteTableInput) (*DeleteTableOutput, error) {
	req, out := c.DeleteTableRequest(input)
	return out, req.Send()
}

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

const opDeleteTableOptimizer = "DeleteTableOptimizer"

// DeleteTableOptimizerRequest generates a "aws/request.Request" representing the
// client's request for the DeleteTableOptimizer 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 DeleteTableOptimizer for more information on using the DeleteTableOptimizer
// 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 DeleteTableOptimizerRequest method.
//	req, resp := client.DeleteTableOptimizerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteTableOptimizer
func (c *Glue) DeleteTableOptimizerRequest(input *DeleteTableOptimizerInput) (req *request.Request, output *DeleteTableOptimizerOutput) {
	op := &request.Operation{
		Name:       opDeleteTableOptimizer,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteTableOptimizerInput{}
	}

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

// DeleteTableOptimizer API operation for AWS Glue.
//
// Deletes an optimizer and all associated metadata for a table. The optimization
// will no longer be performed on the table.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteTableOptimizer for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteTableOptimizer
func (c *Glue) DeleteTableOptimizer(input *DeleteTableOptimizerInput) (*DeleteTableOptimizerOutput, error) {
	req, out := c.DeleteTableOptimizerRequest(input)
	return out, req.Send()
}

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

const opDeleteTableVersion = "DeleteTableVersion"

// DeleteTableVersionRequest generates a "aws/request.Request" representing the
// client's request for the DeleteTableVersion 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 DeleteTableVersion for more information on using the DeleteTableVersion
// 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 DeleteTableVersionRequest method.
//	req, resp := client.DeleteTableVersionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteTableVersion
func (c *Glue) DeleteTableVersionRequest(input *DeleteTableVersionInput) (req *request.Request, output *DeleteTableVersionOutput) {
	op := &request.Operation{
		Name:       opDeleteTableVersion,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteTableVersionInput{}
	}

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

// DeleteTableVersion API operation for AWS Glue.
//
// Deletes a specified version of a table.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteTableVersion for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteTableVersion
func (c *Glue) DeleteTableVersion(input *DeleteTableVersionInput) (*DeleteTableVersionOutput, error) {
	req, out := c.DeleteTableVersionRequest(input)
	return out, req.Send()
}

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

const opDeleteTrigger = "DeleteTrigger"

// DeleteTriggerRequest generates a "aws/request.Request" representing the
// client's request for the DeleteTrigger 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 DeleteTrigger for more information on using the DeleteTrigger
// 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 DeleteTriggerRequest method.
//	req, resp := client.DeleteTriggerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteTrigger
func (c *Glue) DeleteTriggerRequest(input *DeleteTriggerInput) (req *request.Request, output *DeleteTriggerOutput) {
	op := &request.Operation{
		Name:       opDeleteTrigger,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteTriggerInput{}
	}

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

// DeleteTrigger API operation for AWS Glue.
//
// Deletes a specified trigger. If the trigger is not found, no exception is
// thrown.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteTrigger for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteTrigger
func (c *Glue) DeleteTrigger(input *DeleteTriggerInput) (*DeleteTriggerOutput, error) {
	req, out := c.DeleteTriggerRequest(input)
	return out, req.Send()
}

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

const opDeleteUsageProfile = "DeleteUsageProfile"

// DeleteUsageProfileRequest generates a "aws/request.Request" representing the
// client's request for the DeleteUsageProfile 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 DeleteUsageProfile for more information on using the DeleteUsageProfile
// 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 DeleteUsageProfileRequest method.
//	req, resp := client.DeleteUsageProfileRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteUsageProfile
func (c *Glue) DeleteUsageProfileRequest(input *DeleteUsageProfileInput) (req *request.Request, output *DeleteUsageProfileOutput) {
	op := &request.Operation{
		Name:       opDeleteUsageProfile,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteUsageProfileInput{}
	}

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

// DeleteUsageProfile API operation for AWS Glue.
//
// Deletes the Glue specified usage profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteUsageProfile for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - OperationNotSupportedException
//     The operation is not available in the region.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteUsageProfile
func (c *Glue) DeleteUsageProfile(input *DeleteUsageProfileInput) (*DeleteUsageProfileOutput, error) {
	req, out := c.DeleteUsageProfileRequest(input)
	return out, req.Send()
}

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

const opDeleteUserDefinedFunction = "DeleteUserDefinedFunction"

// DeleteUserDefinedFunctionRequest generates a "aws/request.Request" representing the
// client's request for the DeleteUserDefinedFunction 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 DeleteUserDefinedFunction for more information on using the DeleteUserDefinedFunction
// 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 DeleteUserDefinedFunctionRequest method.
//	req, resp := client.DeleteUserDefinedFunctionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteUserDefinedFunction
func (c *Glue) DeleteUserDefinedFunctionRequest(input *DeleteUserDefinedFunctionInput) (req *request.Request, output *DeleteUserDefinedFunctionOutput) {
	op := &request.Operation{
		Name:       opDeleteUserDefinedFunction,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteUserDefinedFunctionInput{}
	}

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

// DeleteUserDefinedFunction API operation for AWS Glue.
//
// Deletes an existing function definition from the Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteUserDefinedFunction for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteUserDefinedFunction
func (c *Glue) DeleteUserDefinedFunction(input *DeleteUserDefinedFunctionInput) (*DeleteUserDefinedFunctionOutput, error) {
	req, out := c.DeleteUserDefinedFunctionRequest(input)
	return out, req.Send()
}

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

const opDeleteWorkflow = "DeleteWorkflow"

// DeleteWorkflowRequest generates a "aws/request.Request" representing the
// client's request for the DeleteWorkflow 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 DeleteWorkflow for more information on using the DeleteWorkflow
// 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 DeleteWorkflowRequest method.
//	req, resp := client.DeleteWorkflowRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteWorkflow
func (c *Glue) DeleteWorkflowRequest(input *DeleteWorkflowInput) (req *request.Request, output *DeleteWorkflowOutput) {
	op := &request.Operation{
		Name:       opDeleteWorkflow,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &DeleteWorkflowInput{}
	}

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

// DeleteWorkflow API operation for AWS Glue.
//
// Deletes a workflow.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation DeleteWorkflow for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteWorkflow
func (c *Glue) DeleteWorkflow(input *DeleteWorkflowInput) (*DeleteWorkflowOutput, error) {
	req, out := c.DeleteWorkflowRequest(input)
	return out, req.Send()
}

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

const opGetBlueprint = "GetBlueprint"

// GetBlueprintRequest generates a "aws/request.Request" representing the
// client's request for the GetBlueprint 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 GetBlueprint for more information on using the GetBlueprint
// 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 GetBlueprintRequest method.
//	req, resp := client.GetBlueprintRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetBlueprint
func (c *Glue) GetBlueprintRequest(input *GetBlueprintInput) (req *request.Request, output *GetBlueprintOutput) {
	op := &request.Operation{
		Name:       opGetBlueprint,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetBlueprintInput{}
	}

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

// GetBlueprint API operation for AWS Glue.
//
// Retrieves the details of a blueprint.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetBlueprint for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetBlueprint
func (c *Glue) GetBlueprint(input *GetBlueprintInput) (*GetBlueprintOutput, error) {
	req, out := c.GetBlueprintRequest(input)
	return out, req.Send()
}

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

const opGetBlueprintRun = "GetBlueprintRun"

// GetBlueprintRunRequest generates a "aws/request.Request" representing the
// client's request for the GetBlueprintRun 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 GetBlueprintRun for more information on using the GetBlueprintRun
// 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 GetBlueprintRunRequest method.
//	req, resp := client.GetBlueprintRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetBlueprintRun
func (c *Glue) GetBlueprintRunRequest(input *GetBlueprintRunInput) (req *request.Request, output *GetBlueprintRunOutput) {
	op := &request.Operation{
		Name:       opGetBlueprintRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetBlueprintRunInput{}
	}

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

// GetBlueprintRun API operation for AWS Glue.
//
// Retrieves the details of a blueprint run.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetBlueprintRun for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetBlueprintRun
func (c *Glue) GetBlueprintRun(input *GetBlueprintRunInput) (*GetBlueprintRunOutput, error) {
	req, out := c.GetBlueprintRunRequest(input)
	return out, req.Send()
}

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

const opGetBlueprintRuns = "GetBlueprintRuns"

// GetBlueprintRunsRequest generates a "aws/request.Request" representing the
// client's request for the GetBlueprintRuns 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 GetBlueprintRuns for more information on using the GetBlueprintRuns
// 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 GetBlueprintRunsRequest method.
//	req, resp := client.GetBlueprintRunsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetBlueprintRuns
func (c *Glue) GetBlueprintRunsRequest(input *GetBlueprintRunsInput) (req *request.Request, output *GetBlueprintRunsOutput) {
	op := &request.Operation{
		Name:       opGetBlueprintRuns,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetBlueprintRunsInput{}
	}

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

// GetBlueprintRuns API operation for AWS Glue.
//
// Retrieves the details of blueprint runs for a specified blueprint.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetBlueprintRuns for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetBlueprintRuns
func (c *Glue) GetBlueprintRuns(input *GetBlueprintRunsInput) (*GetBlueprintRunsOutput, error) {
	req, out := c.GetBlueprintRunsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetCatalogImportStatus = "GetCatalogImportStatus"

// GetCatalogImportStatusRequest generates a "aws/request.Request" representing the
// client's request for the GetCatalogImportStatus 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 GetCatalogImportStatus for more information on using the GetCatalogImportStatus
// 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 GetCatalogImportStatusRequest method.
//	req, resp := client.GetCatalogImportStatusRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetCatalogImportStatus
func (c *Glue) GetCatalogImportStatusRequest(input *GetCatalogImportStatusInput) (req *request.Request, output *GetCatalogImportStatusOutput) {
	op := &request.Operation{
		Name:       opGetCatalogImportStatus,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetCatalogImportStatusInput{}
	}

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

// GetCatalogImportStatus API operation for AWS Glue.
//
// Retrieves the status of a migration 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 AWS Glue's
// API operation GetCatalogImportStatus for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetCatalogImportStatus
func (c *Glue) GetCatalogImportStatus(input *GetCatalogImportStatusInput) (*GetCatalogImportStatusOutput, error) {
	req, out := c.GetCatalogImportStatusRequest(input)
	return out, req.Send()
}

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

const opGetClassifier = "GetClassifier"

// GetClassifierRequest generates a "aws/request.Request" representing the
// client's request for the GetClassifier 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 GetClassifier for more information on using the GetClassifier
// 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 GetClassifierRequest method.
//	req, resp := client.GetClassifierRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetClassifier
func (c *Glue) GetClassifierRequest(input *GetClassifierInput) (req *request.Request, output *GetClassifierOutput) {
	op := &request.Operation{
		Name:       opGetClassifier,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetClassifierInput{}
	}

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

// GetClassifier API operation for AWS Glue.
//
// Retrieve a classifier by name.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetClassifier for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetClassifier
func (c *Glue) GetClassifier(input *GetClassifierInput) (*GetClassifierOutput, error) {
	req, out := c.GetClassifierRequest(input)
	return out, req.Send()
}

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

const opGetClassifiers = "GetClassifiers"

// GetClassifiersRequest generates a "aws/request.Request" representing the
// client's request for the GetClassifiers 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 GetClassifiers for more information on using the GetClassifiers
// 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 GetClassifiersRequest method.
//	req, resp := client.GetClassifiersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetClassifiers
func (c *Glue) GetClassifiersRequest(input *GetClassifiersInput) (req *request.Request, output *GetClassifiersOutput) {
	op := &request.Operation{
		Name:       opGetClassifiers,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetClassifiersInput{}
	}

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

// GetClassifiers API operation for AWS Glue.
//
// Lists all classifier objects in the Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetClassifiers for usage and error information.
//
// Returned Error Types:
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetClassifiers
func (c *Glue) GetClassifiers(input *GetClassifiersInput) (*GetClassifiersOutput, error) {
	req, out := c.GetClassifiersRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetColumnStatisticsForPartition = "GetColumnStatisticsForPartition"

// GetColumnStatisticsForPartitionRequest generates a "aws/request.Request" representing the
// client's request for the GetColumnStatisticsForPartition 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 GetColumnStatisticsForPartition for more information on using the GetColumnStatisticsForPartition
// 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 GetColumnStatisticsForPartitionRequest method.
//	req, resp := client.GetColumnStatisticsForPartitionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetColumnStatisticsForPartition
func (c *Glue) GetColumnStatisticsForPartitionRequest(input *GetColumnStatisticsForPartitionInput) (req *request.Request, output *GetColumnStatisticsForPartitionOutput) {
	op := &request.Operation{
		Name:       opGetColumnStatisticsForPartition,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetColumnStatisticsForPartitionInput{}
	}

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

// GetColumnStatisticsForPartition API operation for AWS Glue.
//
// Retrieves partition statistics of columns.
//
// The Identity and Access Management (IAM) permission required for this operation
// is GetPartition.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetColumnStatisticsForPartition for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetColumnStatisticsForPartition
func (c *Glue) GetColumnStatisticsForPartition(input *GetColumnStatisticsForPartitionInput) (*GetColumnStatisticsForPartitionOutput, error) {
	req, out := c.GetColumnStatisticsForPartitionRequest(input)
	return out, req.Send()
}

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

const opGetColumnStatisticsForTable = "GetColumnStatisticsForTable"

// GetColumnStatisticsForTableRequest generates a "aws/request.Request" representing the
// client's request for the GetColumnStatisticsForTable 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 GetColumnStatisticsForTable for more information on using the GetColumnStatisticsForTable
// 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 GetColumnStatisticsForTableRequest method.
//	req, resp := client.GetColumnStatisticsForTableRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetColumnStatisticsForTable
func (c *Glue) GetColumnStatisticsForTableRequest(input *GetColumnStatisticsForTableInput) (req *request.Request, output *GetColumnStatisticsForTableOutput) {
	op := &request.Operation{
		Name:       opGetColumnStatisticsForTable,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetColumnStatisticsForTableInput{}
	}

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

// GetColumnStatisticsForTable API operation for AWS Glue.
//
// Retrieves table statistics of columns.
//
// The Identity and Access Management (IAM) permission required for this operation
// is GetTable.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetColumnStatisticsForTable for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetColumnStatisticsForTable
func (c *Glue) GetColumnStatisticsForTable(input *GetColumnStatisticsForTableInput) (*GetColumnStatisticsForTableOutput, error) {
	req, out := c.GetColumnStatisticsForTableRequest(input)
	return out, req.Send()
}

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

const opGetColumnStatisticsTaskRun = "GetColumnStatisticsTaskRun"

// GetColumnStatisticsTaskRunRequest generates a "aws/request.Request" representing the
// client's request for the GetColumnStatisticsTaskRun 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 GetColumnStatisticsTaskRun for more information on using the GetColumnStatisticsTaskRun
// 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 GetColumnStatisticsTaskRunRequest method.
//	req, resp := client.GetColumnStatisticsTaskRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetColumnStatisticsTaskRun
func (c *Glue) GetColumnStatisticsTaskRunRequest(input *GetColumnStatisticsTaskRunInput) (req *request.Request, output *GetColumnStatisticsTaskRunOutput) {
	op := &request.Operation{
		Name:       opGetColumnStatisticsTaskRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetColumnStatisticsTaskRunInput{}
	}

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

// GetColumnStatisticsTaskRun API operation for AWS Glue.
//
// Get the associated metadata/information for a task run, given a task run
// 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 AWS Glue's
// API operation GetColumnStatisticsTaskRun for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetColumnStatisticsTaskRun
func (c *Glue) GetColumnStatisticsTaskRun(input *GetColumnStatisticsTaskRunInput) (*GetColumnStatisticsTaskRunOutput, error) {
	req, out := c.GetColumnStatisticsTaskRunRequest(input)
	return out, req.Send()
}

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

const opGetColumnStatisticsTaskRuns = "GetColumnStatisticsTaskRuns"

// GetColumnStatisticsTaskRunsRequest generates a "aws/request.Request" representing the
// client's request for the GetColumnStatisticsTaskRuns 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 GetColumnStatisticsTaskRuns for more information on using the GetColumnStatisticsTaskRuns
// 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 GetColumnStatisticsTaskRunsRequest method.
//	req, resp := client.GetColumnStatisticsTaskRunsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetColumnStatisticsTaskRuns
func (c *Glue) GetColumnStatisticsTaskRunsRequest(input *GetColumnStatisticsTaskRunsInput) (req *request.Request, output *GetColumnStatisticsTaskRunsOutput) {
	op := &request.Operation{
		Name:       opGetColumnStatisticsTaskRuns,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetColumnStatisticsTaskRunsInput{}
	}

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

// GetColumnStatisticsTaskRuns API operation for AWS Glue.
//
// Retrieves information about all runs associated with the specified table.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetColumnStatisticsTaskRuns for usage and error information.
//
// Returned Error Types:
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetColumnStatisticsTaskRuns
func (c *Glue) GetColumnStatisticsTaskRuns(input *GetColumnStatisticsTaskRunsInput) (*GetColumnStatisticsTaskRunsOutput, error) {
	req, out := c.GetColumnStatisticsTaskRunsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetConnection = "GetConnection"

// GetConnectionRequest generates a "aws/request.Request" representing the
// client's request for the GetConnection 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 GetConnection for more information on using the GetConnection
// 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 GetConnectionRequest method.
//	req, resp := client.GetConnectionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetConnection
func (c *Glue) GetConnectionRequest(input *GetConnectionInput) (req *request.Request, output *GetConnectionOutput) {
	op := &request.Operation{
		Name:       opGetConnection,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetConnectionInput{}
	}

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

// GetConnection API operation for AWS Glue.
//
// Retrieves a connection definition from the Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetConnection for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetConnection
func (c *Glue) GetConnection(input *GetConnectionInput) (*GetConnectionOutput, error) {
	req, out := c.GetConnectionRequest(input)
	return out, req.Send()
}

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

const opGetConnections = "GetConnections"

// GetConnectionsRequest generates a "aws/request.Request" representing the
// client's request for the GetConnections 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 GetConnections for more information on using the GetConnections
// 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 GetConnectionsRequest method.
//	req, resp := client.GetConnectionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetConnections
func (c *Glue) GetConnectionsRequest(input *GetConnectionsInput) (req *request.Request, output *GetConnectionsOutput) {
	op := &request.Operation{
		Name:       opGetConnections,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetConnectionsInput{}
	}

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

// GetConnections API operation for AWS Glue.
//
// Retrieves a list of connection definitions from the Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetConnections for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetConnections
func (c *Glue) GetConnections(input *GetConnectionsInput) (*GetConnectionsOutput, error) {
	req, out := c.GetConnectionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetCrawler = "GetCrawler"

// GetCrawlerRequest generates a "aws/request.Request" representing the
// client's request for the GetCrawler 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 GetCrawler for more information on using the GetCrawler
// 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 GetCrawlerRequest method.
//	req, resp := client.GetCrawlerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetCrawler
func (c *Glue) GetCrawlerRequest(input *GetCrawlerInput) (req *request.Request, output *GetCrawlerOutput) {
	op := &request.Operation{
		Name:       opGetCrawler,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetCrawlerInput{}
	}

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

// GetCrawler API operation for AWS Glue.
//
// Retrieves metadata for a specified crawler.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetCrawler for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetCrawler
func (c *Glue) GetCrawler(input *GetCrawlerInput) (*GetCrawlerOutput, error) {
	req, out := c.GetCrawlerRequest(input)
	return out, req.Send()
}

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

const opGetCrawlerMetrics = "GetCrawlerMetrics"

// GetCrawlerMetricsRequest generates a "aws/request.Request" representing the
// client's request for the GetCrawlerMetrics 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 GetCrawlerMetrics for more information on using the GetCrawlerMetrics
// 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 GetCrawlerMetricsRequest method.
//	req, resp := client.GetCrawlerMetricsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetCrawlerMetrics
func (c *Glue) GetCrawlerMetricsRequest(input *GetCrawlerMetricsInput) (req *request.Request, output *GetCrawlerMetricsOutput) {
	op := &request.Operation{
		Name:       opGetCrawlerMetrics,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetCrawlerMetricsInput{}
	}

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

// GetCrawlerMetrics API operation for AWS Glue.
//
// Retrieves metrics about specified crawlers.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetCrawlerMetrics for usage and error information.
//
// Returned Error Types:
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetCrawlerMetrics
func (c *Glue) GetCrawlerMetrics(input *GetCrawlerMetricsInput) (*GetCrawlerMetricsOutput, error) {
	req, out := c.GetCrawlerMetricsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetCrawlers = "GetCrawlers"

// GetCrawlersRequest generates a "aws/request.Request" representing the
// client's request for the GetCrawlers 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 GetCrawlers for more information on using the GetCrawlers
// 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 GetCrawlersRequest method.
//	req, resp := client.GetCrawlersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetCrawlers
func (c *Glue) GetCrawlersRequest(input *GetCrawlersInput) (req *request.Request, output *GetCrawlersOutput) {
	op := &request.Operation{
		Name:       opGetCrawlers,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetCrawlersInput{}
	}

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

// GetCrawlers API operation for AWS Glue.
//
// Retrieves metadata for all crawlers defined in the customer account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetCrawlers for usage and error information.
//
// Returned Error Types:
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetCrawlers
func (c *Glue) GetCrawlers(input *GetCrawlersInput) (*GetCrawlersOutput, error) {
	req, out := c.GetCrawlersRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetCustomEntityType = "GetCustomEntityType"

// GetCustomEntityTypeRequest generates a "aws/request.Request" representing the
// client's request for the GetCustomEntityType 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 GetCustomEntityType for more information on using the GetCustomEntityType
// 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 GetCustomEntityTypeRequest method.
//	req, resp := client.GetCustomEntityTypeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetCustomEntityType
func (c *Glue) GetCustomEntityTypeRequest(input *GetCustomEntityTypeInput) (req *request.Request, output *GetCustomEntityTypeOutput) {
	op := &request.Operation{
		Name:       opGetCustomEntityType,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetCustomEntityTypeInput{}
	}

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

// GetCustomEntityType API operation for AWS Glue.
//
// Retrieves the details of a custom pattern by specifying its name.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetCustomEntityType for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetCustomEntityType
func (c *Glue) GetCustomEntityType(input *GetCustomEntityTypeInput) (*GetCustomEntityTypeOutput, error) {
	req, out := c.GetCustomEntityTypeRequest(input)
	return out, req.Send()
}

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

const opGetDataCatalogEncryptionSettings = "GetDataCatalogEncryptionSettings"

// GetDataCatalogEncryptionSettingsRequest generates a "aws/request.Request" representing the
// client's request for the GetDataCatalogEncryptionSettings 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 GetDataCatalogEncryptionSettings for more information on using the GetDataCatalogEncryptionSettings
// 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 GetDataCatalogEncryptionSettingsRequest method.
//	req, resp := client.GetDataCatalogEncryptionSettingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDataCatalogEncryptionSettings
func (c *Glue) GetDataCatalogEncryptionSettingsRequest(input *GetDataCatalogEncryptionSettingsInput) (req *request.Request, output *GetDataCatalogEncryptionSettingsOutput) {
	op := &request.Operation{
		Name:       opGetDataCatalogEncryptionSettings,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetDataCatalogEncryptionSettingsInput{}
	}

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

// GetDataCatalogEncryptionSettings API operation for AWS Glue.
//
// Retrieves the security configuration for a specified catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetDataCatalogEncryptionSettings for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDataCatalogEncryptionSettings
func (c *Glue) GetDataCatalogEncryptionSettings(input *GetDataCatalogEncryptionSettingsInput) (*GetDataCatalogEncryptionSettingsOutput, error) {
	req, out := c.GetDataCatalogEncryptionSettingsRequest(input)
	return out, req.Send()
}

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

const opGetDataQualityResult = "GetDataQualityResult"

// GetDataQualityResultRequest generates a "aws/request.Request" representing the
// client's request for the GetDataQualityResult 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 GetDataQualityResult for more information on using the GetDataQualityResult
// 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 GetDataQualityResultRequest method.
//	req, resp := client.GetDataQualityResultRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDataQualityResult
func (c *Glue) GetDataQualityResultRequest(input *GetDataQualityResultInput) (req *request.Request, output *GetDataQualityResultOutput) {
	op := &request.Operation{
		Name:       opGetDataQualityResult,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetDataQualityResultInput{}
	}

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

// GetDataQualityResult API operation for AWS Glue.
//
// Retrieves the result of a data quality rule evaluation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetDataQualityResult for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDataQualityResult
func (c *Glue) GetDataQualityResult(input *GetDataQualityResultInput) (*GetDataQualityResultOutput, error) {
	req, out := c.GetDataQualityResultRequest(input)
	return out, req.Send()
}

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

const opGetDataQualityRuleRecommendationRun = "GetDataQualityRuleRecommendationRun"

// GetDataQualityRuleRecommendationRunRequest generates a "aws/request.Request" representing the
// client's request for the GetDataQualityRuleRecommendationRun 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 GetDataQualityRuleRecommendationRun for more information on using the GetDataQualityRuleRecommendationRun
// 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 GetDataQualityRuleRecommendationRunRequest method.
//	req, resp := client.GetDataQualityRuleRecommendationRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDataQualityRuleRecommendationRun
func (c *Glue) GetDataQualityRuleRecommendationRunRequest(input *GetDataQualityRuleRecommendationRunInput) (req *request.Request, output *GetDataQualityRuleRecommendationRunOutput) {
	op := &request.Operation{
		Name:       opGetDataQualityRuleRecommendationRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetDataQualityRuleRecommendationRunInput{}
	}

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

// GetDataQualityRuleRecommendationRun API operation for AWS Glue.
//
// Gets the specified recommendation run that was used to generate 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 AWS Glue's
// API operation GetDataQualityRuleRecommendationRun for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDataQualityRuleRecommendationRun
func (c *Glue) GetDataQualityRuleRecommendationRun(input *GetDataQualityRuleRecommendationRunInput) (*GetDataQualityRuleRecommendationRunOutput, error) {
	req, out := c.GetDataQualityRuleRecommendationRunRequest(input)
	return out, req.Send()
}

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

const opGetDataQualityRuleset = "GetDataQualityRuleset"

// GetDataQualityRulesetRequest generates a "aws/request.Request" representing the
// client's request for the GetDataQualityRuleset 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 GetDataQualityRuleset for more information on using the GetDataQualityRuleset
// 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 GetDataQualityRulesetRequest method.
//	req, resp := client.GetDataQualityRulesetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDataQualityRuleset
func (c *Glue) GetDataQualityRulesetRequest(input *GetDataQualityRulesetInput) (req *request.Request, output *GetDataQualityRulesetOutput) {
	op := &request.Operation{
		Name:       opGetDataQualityRuleset,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetDataQualityRulesetInput{}
	}

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

// GetDataQualityRuleset API operation for AWS Glue.
//
// Returns an existing ruleset by identifier or name.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetDataQualityRuleset for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDataQualityRuleset
func (c *Glue) GetDataQualityRuleset(input *GetDataQualityRulesetInput) (*GetDataQualityRulesetOutput, error) {
	req, out := c.GetDataQualityRulesetRequest(input)
	return out, req.Send()
}

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

const opGetDataQualityRulesetEvaluationRun = "GetDataQualityRulesetEvaluationRun"

// GetDataQualityRulesetEvaluationRunRequest generates a "aws/request.Request" representing the
// client's request for the GetDataQualityRulesetEvaluationRun 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 GetDataQualityRulesetEvaluationRun for more information on using the GetDataQualityRulesetEvaluationRun
// 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 GetDataQualityRulesetEvaluationRunRequest method.
//	req, resp := client.GetDataQualityRulesetEvaluationRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDataQualityRulesetEvaluationRun
func (c *Glue) GetDataQualityRulesetEvaluationRunRequest(input *GetDataQualityRulesetEvaluationRunInput) (req *request.Request, output *GetDataQualityRulesetEvaluationRunOutput) {
	op := &request.Operation{
		Name:       opGetDataQualityRulesetEvaluationRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetDataQualityRulesetEvaluationRunInput{}
	}

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

// GetDataQualityRulesetEvaluationRun API operation for AWS Glue.
//
// Retrieves a specific run where a ruleset is evaluated against 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 AWS Glue's
// API operation GetDataQualityRulesetEvaluationRun for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDataQualityRulesetEvaluationRun
func (c *Glue) GetDataQualityRulesetEvaluationRun(input *GetDataQualityRulesetEvaluationRunInput) (*GetDataQualityRulesetEvaluationRunOutput, error) {
	req, out := c.GetDataQualityRulesetEvaluationRunRequest(input)
	return out, req.Send()
}

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

const opGetDatabase = "GetDatabase"

// GetDatabaseRequest generates a "aws/request.Request" representing the
// client's request for the GetDatabase 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 GetDatabase for more information on using the GetDatabase
// 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 GetDatabaseRequest method.
//	req, resp := client.GetDatabaseRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDatabase
func (c *Glue) GetDatabaseRequest(input *GetDatabaseInput) (req *request.Request, output *GetDatabaseOutput) {
	op := &request.Operation{
		Name:       opGetDatabase,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetDatabaseInput{}
	}

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

// GetDatabase API operation for AWS Glue.
//
// Retrieves the definition of a specified database.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetDatabase for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
//   - FederationSourceException
//     A federation source failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDatabase
func (c *Glue) GetDatabase(input *GetDatabaseInput) (*GetDatabaseOutput, error) {
	req, out := c.GetDatabaseRequest(input)
	return out, req.Send()
}

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

const opGetDatabases = "GetDatabases"

// GetDatabasesRequest generates a "aws/request.Request" representing the
// client's request for the GetDatabases 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 GetDatabases for more information on using the GetDatabases
// 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 GetDatabasesRequest method.
//	req, resp := client.GetDatabasesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDatabases
func (c *Glue) GetDatabasesRequest(input *GetDatabasesInput) (req *request.Request, output *GetDatabasesOutput) {
	op := &request.Operation{
		Name:       opGetDatabases,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetDatabasesInput{}
	}

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

// GetDatabases API operation for AWS Glue.
//
// Retrieves all databases defined in a given Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetDatabases for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDatabases
func (c *Glue) GetDatabases(input *GetDatabasesInput) (*GetDatabasesOutput, error) {
	req, out := c.GetDatabasesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetDataflowGraph = "GetDataflowGraph"

// GetDataflowGraphRequest generates a "aws/request.Request" representing the
// client's request for the GetDataflowGraph 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 GetDataflowGraph for more information on using the GetDataflowGraph
// 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 GetDataflowGraphRequest method.
//	req, resp := client.GetDataflowGraphRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDataflowGraph
func (c *Glue) GetDataflowGraphRequest(input *GetDataflowGraphInput) (req *request.Request, output *GetDataflowGraphOutput) {
	op := &request.Operation{
		Name:       opGetDataflowGraph,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetDataflowGraphInput{}
	}

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

// GetDataflowGraph API operation for AWS Glue.
//
// Transforms a Python script into a directed acyclic graph (DAG).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetDataflowGraph for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDataflowGraph
func (c *Glue) GetDataflowGraph(input *GetDataflowGraphInput) (*GetDataflowGraphOutput, error) {
	req, out := c.GetDataflowGraphRequest(input)
	return out, req.Send()
}

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

const opGetDevEndpoint = "GetDevEndpoint"

// GetDevEndpointRequest generates a "aws/request.Request" representing the
// client's request for the GetDevEndpoint 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 GetDevEndpoint for more information on using the GetDevEndpoint
// 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 GetDevEndpointRequest method.
//	req, resp := client.GetDevEndpointRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDevEndpoint
func (c *Glue) GetDevEndpointRequest(input *GetDevEndpointInput) (req *request.Request, output *GetDevEndpointOutput) {
	op := &request.Operation{
		Name:       opGetDevEndpoint,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetDevEndpointInput{}
	}

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

// GetDevEndpoint API operation for AWS Glue.
//
// Retrieves information about a specified development endpoint.
//
// When you create a development endpoint in a virtual private cloud (VPC),
// Glue returns only a private IP address, and the public IP address field is
// not populated. When you create a non-VPC development endpoint, Glue returns
// only a public IP 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 AWS Glue's
// API operation GetDevEndpoint for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDevEndpoint
func (c *Glue) GetDevEndpoint(input *GetDevEndpointInput) (*GetDevEndpointOutput, error) {
	req, out := c.GetDevEndpointRequest(input)
	return out, req.Send()
}

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

const opGetDevEndpoints = "GetDevEndpoints"

// GetDevEndpointsRequest generates a "aws/request.Request" representing the
// client's request for the GetDevEndpoints 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 GetDevEndpoints for more information on using the GetDevEndpoints
// 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 GetDevEndpointsRequest method.
//	req, resp := client.GetDevEndpointsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDevEndpoints
func (c *Glue) GetDevEndpointsRequest(input *GetDevEndpointsInput) (req *request.Request, output *GetDevEndpointsOutput) {
	op := &request.Operation{
		Name:       opGetDevEndpoints,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetDevEndpointsInput{}
	}

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

// GetDevEndpoints API operation for AWS Glue.
//
// Retrieves all the development endpoints in this Amazon Web Services account.
//
// When you create a development endpoint in a virtual private cloud (VPC),
// Glue returns only a private IP address and the public IP address field is
// not populated. When you create a non-VPC development endpoint, Glue returns
// only a public IP 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 AWS Glue's
// API operation GetDevEndpoints for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetDevEndpoints
func (c *Glue) GetDevEndpoints(input *GetDevEndpointsInput) (*GetDevEndpointsOutput, error) {
	req, out := c.GetDevEndpointsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetJob = "GetJob"

// GetJobRequest generates a "aws/request.Request" representing the
// client's request for the GetJob 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 GetJob for more information on using the GetJob
// 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 GetJobRequest method.
//	req, resp := client.GetJobRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetJob
func (c *Glue) GetJobRequest(input *GetJobInput) (req *request.Request, output *GetJobOutput) {
	op := &request.Operation{
		Name:       opGetJob,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetJobInput{}
	}

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

// GetJob API operation for AWS Glue.
//
// Retrieves an existing job definition.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetJob for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetJob
func (c *Glue) GetJob(input *GetJobInput) (*GetJobOutput, error) {
	req, out := c.GetJobRequest(input)
	return out, req.Send()
}

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

const opGetJobBookmark = "GetJobBookmark"

// GetJobBookmarkRequest generates a "aws/request.Request" representing the
// client's request for the GetJobBookmark 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 GetJobBookmark for more information on using the GetJobBookmark
// 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 GetJobBookmarkRequest method.
//	req, resp := client.GetJobBookmarkRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetJobBookmark
func (c *Glue) GetJobBookmarkRequest(input *GetJobBookmarkInput) (req *request.Request, output *GetJobBookmarkOutput) {
	op := &request.Operation{
		Name:       opGetJobBookmark,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetJobBookmarkInput{}
	}

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

// GetJobBookmark API operation for AWS Glue.
//
// Returns information on a job bookmark entry.
//
// For more information about enabling and using job bookmarks, see:
//
//   - Tracking processed data using job bookmarks (https://docs.aws.amazon.com/glue/latest/dg/monitor-continuations.html)
//
//   - Job parameters used by Glue (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html)
//
//   - Job structure (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-Job)
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetJobBookmark for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ValidationException
//     A value could not be validated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetJobBookmark
func (c *Glue) GetJobBookmark(input *GetJobBookmarkInput) (*GetJobBookmarkOutput, error) {
	req, out := c.GetJobBookmarkRequest(input)
	return out, req.Send()
}

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

const opGetJobRun = "GetJobRun"

// GetJobRunRequest generates a "aws/request.Request" representing the
// client's request for the GetJobRun 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 GetJobRun for more information on using the GetJobRun
// 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 GetJobRunRequest method.
//	req, resp := client.GetJobRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetJobRun
func (c *Glue) GetJobRunRequest(input *GetJobRunInput) (req *request.Request, output *GetJobRunOutput) {
	op := &request.Operation{
		Name:       opGetJobRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetJobRunInput{}
	}

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

// GetJobRun API operation for AWS Glue.
//
// Retrieves the metadata for a given job run. Job run history is accessible
// for 90 days for your workflow and job run.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetJobRun for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetJobRun
func (c *Glue) GetJobRun(input *GetJobRunInput) (*GetJobRunOutput, error) {
	req, out := c.GetJobRunRequest(input)
	return out, req.Send()
}

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

const opGetJobRuns = "GetJobRuns"

// GetJobRunsRequest generates a "aws/request.Request" representing the
// client's request for the GetJobRuns 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 GetJobRuns for more information on using the GetJobRuns
// 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 GetJobRunsRequest method.
//	req, resp := client.GetJobRunsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetJobRuns
func (c *Glue) GetJobRunsRequest(input *GetJobRunsInput) (req *request.Request, output *GetJobRunsOutput) {
	op := &request.Operation{
		Name:       opGetJobRuns,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetJobRunsInput{}
	}

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

// GetJobRuns API operation for AWS Glue.
//
// Retrieves metadata for all runs of a given job definition.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetJobRuns for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetJobRuns
func (c *Glue) GetJobRuns(input *GetJobRunsInput) (*GetJobRunsOutput, error) {
	req, out := c.GetJobRunsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetJobs = "GetJobs"

// GetJobsRequest generates a "aws/request.Request" representing the
// client's request for the GetJobs 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 GetJobs for more information on using the GetJobs
// 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 GetJobsRequest method.
//	req, resp := client.GetJobsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetJobs
func (c *Glue) GetJobsRequest(input *GetJobsInput) (req *request.Request, output *GetJobsOutput) {
	op := &request.Operation{
		Name:       opGetJobs,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetJobsInput{}
	}

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

// GetJobs API operation for AWS Glue.
//
// Retrieves all current job definitions.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetJobs for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetJobs
func (c *Glue) GetJobs(input *GetJobsInput) (*GetJobsOutput, error) {
	req, out := c.GetJobsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetMLTaskRun = "GetMLTaskRun"

// GetMLTaskRunRequest generates a "aws/request.Request" representing the
// client's request for the GetMLTaskRun 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 GetMLTaskRun for more information on using the GetMLTaskRun
// 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 GetMLTaskRunRequest method.
//	req, resp := client.GetMLTaskRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetMLTaskRun
func (c *Glue) GetMLTaskRunRequest(input *GetMLTaskRunInput) (req *request.Request, output *GetMLTaskRunOutput) {
	op := &request.Operation{
		Name:       opGetMLTaskRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetMLTaskRunInput{}
	}

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

// GetMLTaskRun API operation for AWS Glue.
//
// Gets details for a specific task run on a machine learning transform. Machine
// learning task runs are asynchronous tasks that Glue runs on your behalf as
// part of various machine learning workflows. You can check the stats of any
// task run by calling GetMLTaskRun with the TaskRunID and its parent transform's
// TransformID.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetMLTaskRun for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetMLTaskRun
func (c *Glue) GetMLTaskRun(input *GetMLTaskRunInput) (*GetMLTaskRunOutput, error) {
	req, out := c.GetMLTaskRunRequest(input)
	return out, req.Send()
}

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

const opGetMLTaskRuns = "GetMLTaskRuns"

// GetMLTaskRunsRequest generates a "aws/request.Request" representing the
// client's request for the GetMLTaskRuns 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 GetMLTaskRuns for more information on using the GetMLTaskRuns
// 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 GetMLTaskRunsRequest method.
//	req, resp := client.GetMLTaskRunsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetMLTaskRuns
func (c *Glue) GetMLTaskRunsRequest(input *GetMLTaskRunsInput) (req *request.Request, output *GetMLTaskRunsOutput) {
	op := &request.Operation{
		Name:       opGetMLTaskRuns,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetMLTaskRunsInput{}
	}

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

// GetMLTaskRuns API operation for AWS Glue.
//
// Gets a list of runs for a machine learning transform. Machine learning task
// runs are asynchronous tasks that Glue runs on your behalf as part of various
// machine learning workflows. You can get a sortable, filterable list of machine
// learning task runs by calling GetMLTaskRuns with their parent transform's
// TransformID and other optional parameters as documented in this section.
//
// This operation returns a list of historic runs and must be paginated.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetMLTaskRuns for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetMLTaskRuns
func (c *Glue) GetMLTaskRuns(input *GetMLTaskRunsInput) (*GetMLTaskRunsOutput, error) {
	req, out := c.GetMLTaskRunsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetMLTransform = "GetMLTransform"

// GetMLTransformRequest generates a "aws/request.Request" representing the
// client's request for the GetMLTransform 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 GetMLTransform for more information on using the GetMLTransform
// 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 GetMLTransformRequest method.
//	req, resp := client.GetMLTransformRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetMLTransform
func (c *Glue) GetMLTransformRequest(input *GetMLTransformInput) (req *request.Request, output *GetMLTransformOutput) {
	op := &request.Operation{
		Name:       opGetMLTransform,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetMLTransformInput{}
	}

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

// GetMLTransform API operation for AWS Glue.
//
// Gets an Glue machine learning transform artifact and all its corresponding
// metadata. Machine learning transforms are a special type of transform that
// use machine learning to learn the details of the transformation to be performed
// by learning from examples provided by humans. These transformations are then
// saved by Glue. You can retrieve their metadata by calling GetMLTransform.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetMLTransform for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetMLTransform
func (c *Glue) GetMLTransform(input *GetMLTransformInput) (*GetMLTransformOutput, error) {
	req, out := c.GetMLTransformRequest(input)
	return out, req.Send()
}

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

const opGetMLTransforms = "GetMLTransforms"

// GetMLTransformsRequest generates a "aws/request.Request" representing the
// client's request for the GetMLTransforms 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 GetMLTransforms for more information on using the GetMLTransforms
// 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 GetMLTransformsRequest method.
//	req, resp := client.GetMLTransformsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetMLTransforms
func (c *Glue) GetMLTransformsRequest(input *GetMLTransformsInput) (req *request.Request, output *GetMLTransformsOutput) {
	op := &request.Operation{
		Name:       opGetMLTransforms,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetMLTransformsInput{}
	}

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

// GetMLTransforms API operation for AWS Glue.
//
// Gets a sortable, filterable list of existing Glue machine learning transforms.
// Machine learning transforms are a special type of transform that use machine
// learning to learn the details of the transformation to be performed by learning
// from examples provided by humans. These transformations are then saved by
// Glue, and you can retrieve their metadata by calling GetMLTransforms.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetMLTransforms for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetMLTransforms
func (c *Glue) GetMLTransforms(input *GetMLTransformsInput) (*GetMLTransformsOutput, error) {
	req, out := c.GetMLTransformsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetMapping = "GetMapping"

// GetMappingRequest generates a "aws/request.Request" representing the
// client's request for the GetMapping 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 GetMapping for more information on using the GetMapping
// 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 GetMappingRequest method.
//	req, resp := client.GetMappingRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetMapping
func (c *Glue) GetMappingRequest(input *GetMappingInput) (req *request.Request, output *GetMappingOutput) {
	op := &request.Operation{
		Name:       opGetMapping,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetMappingInput{}
	}

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

// GetMapping API operation for AWS Glue.
//
// Creates mappings.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetMapping for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetMapping
func (c *Glue) GetMapping(input *GetMappingInput) (*GetMappingOutput, error) {
	req, out := c.GetMappingRequest(input)
	return out, req.Send()
}

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

const opGetPartition = "GetPartition"

// GetPartitionRequest generates a "aws/request.Request" representing the
// client's request for the GetPartition 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 GetPartition for more information on using the GetPartition
// 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 GetPartitionRequest method.
//	req, resp := client.GetPartitionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetPartition
func (c *Glue) GetPartitionRequest(input *GetPartitionInput) (req *request.Request, output *GetPartitionOutput) {
	op := &request.Operation{
		Name:       opGetPartition,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetPartitionInput{}
	}

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

// GetPartition API operation for AWS Glue.
//
// Retrieves information about a specified partition.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetPartition for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
//   - FederationSourceException
//     A federation source failed.
//
//   - FederationSourceRetryableException
//     A federation source failed, but the operation may be retried.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetPartition
func (c *Glue) GetPartition(input *GetPartitionInput) (*GetPartitionOutput, error) {
	req, out := c.GetPartitionRequest(input)
	return out, req.Send()
}

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

const opGetPartitionIndexes = "GetPartitionIndexes"

// GetPartitionIndexesRequest generates a "aws/request.Request" representing the
// client's request for the GetPartitionIndexes 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 GetPartitionIndexes for more information on using the GetPartitionIndexes
// 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 GetPartitionIndexesRequest method.
//	req, resp := client.GetPartitionIndexesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetPartitionIndexes
func (c *Glue) GetPartitionIndexesRequest(input *GetPartitionIndexesInput) (req *request.Request, output *GetPartitionIndexesOutput) {
	op := &request.Operation{
		Name:       opGetPartitionIndexes,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetPartitionIndexesInput{}
	}

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

// GetPartitionIndexes API operation for AWS Glue.
//
// Retrieves the partition indexes associated with a table.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetPartitionIndexes for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - ConflictException
//     The CreatePartitions API was called on a table that has indexes enabled.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetPartitionIndexes
func (c *Glue) GetPartitionIndexes(input *GetPartitionIndexesInput) (*GetPartitionIndexesOutput, error) {
	req, out := c.GetPartitionIndexesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetPartitions = "GetPartitions"

// GetPartitionsRequest generates a "aws/request.Request" representing the
// client's request for the GetPartitions 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 GetPartitions for more information on using the GetPartitions
// 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 GetPartitionsRequest method.
//	req, resp := client.GetPartitionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetPartitions
func (c *Glue) GetPartitionsRequest(input *GetPartitionsInput) (req *request.Request, output *GetPartitionsOutput) {
	op := &request.Operation{
		Name:       opGetPartitions,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetPartitionsInput{}
	}

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

// GetPartitions API operation for AWS Glue.
//
// Retrieves information about the partitions in a table.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetPartitions for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - EncryptionException
//     An encryption operation failed.
//
//   - InvalidStateException
//     An error that indicates your data is in an invalid state.
//
//   - ResourceNotReadyException
//     A resource was not ready for a transaction.
//
//   - FederationSourceException
//     A federation source failed.
//
//   - FederationSourceRetryableException
//     A federation source failed, but the operation may be retried.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetPartitions
func (c *Glue) GetPartitions(input *GetPartitionsInput) (*GetPartitionsOutput, error) {
	req, out := c.GetPartitionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetPlan = "GetPlan"

// GetPlanRequest generates a "aws/request.Request" representing the
// client's request for the GetPlan 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 GetPlan for more information on using the GetPlan
// 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 GetPlanRequest method.
//	req, resp := client.GetPlanRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetPlan
func (c *Glue) GetPlanRequest(input *GetPlanInput) (req *request.Request, output *GetPlanOutput) {
	op := &request.Operation{
		Name:       opGetPlan,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetPlanInput{}
	}

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

// GetPlan API operation for AWS Glue.
//
// Gets code to perform a specified mapping.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetPlan for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetPlan
func (c *Glue) GetPlan(input *GetPlanInput) (*GetPlanOutput, error) {
	req, out := c.GetPlanRequest(input)
	return out, req.Send()
}

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

const opGetRegistry = "GetRegistry"

// GetRegistryRequest generates a "aws/request.Request" representing the
// client's request for the GetRegistry 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 GetRegistry for more information on using the GetRegistry
// 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 GetRegistryRequest method.
//	req, resp := client.GetRegistryRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetRegistry
func (c *Glue) GetRegistryRequest(input *GetRegistryInput) (req *request.Request, output *GetRegistryOutput) {
	op := &request.Operation{
		Name:       opGetRegistry,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetRegistryInput{}
	}

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

// GetRegistry API operation for AWS Glue.
//
// Describes the specified registry in detail.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetRegistry for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetRegistry
func (c *Glue) GetRegistry(input *GetRegistryInput) (*GetRegistryOutput, error) {
	req, out := c.GetRegistryRequest(input)
	return out, req.Send()
}

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

const opGetResourcePolicies = "GetResourcePolicies"

// GetResourcePoliciesRequest generates a "aws/request.Request" representing the
// client's request for the GetResourcePolicies 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 GetResourcePolicies for more information on using the GetResourcePolicies
// 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 GetResourcePoliciesRequest method.
//	req, resp := client.GetResourcePoliciesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetResourcePolicies
func (c *Glue) GetResourcePoliciesRequest(input *GetResourcePoliciesInput) (req *request.Request, output *GetResourcePoliciesOutput) {
	op := &request.Operation{
		Name:       opGetResourcePolicies,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetResourcePoliciesInput{}
	}

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

// GetResourcePolicies API operation for AWS Glue.
//
// Retrieves the resource policies set on individual resources by Resource Access
// Manager during cross-account permission grants. Also retrieves the Data Catalog
// resource policy.
//
// If you enabled metadata encryption in Data Catalog settings, and you do not
// have permission on the KMS key, the operation can't return the Data Catalog
// resource policy.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetResourcePolicies for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetResourcePolicies
func (c *Glue) GetResourcePolicies(input *GetResourcePoliciesInput) (*GetResourcePoliciesOutput, error) {
	req, out := c.GetResourcePoliciesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetResourcePolicy = "GetResourcePolicy"

// GetResourcePolicyRequest generates a "aws/request.Request" representing the
// client's request for the GetResourcePolicy 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 GetResourcePolicy for more information on using the GetResourcePolicy
// 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 GetResourcePolicyRequest method.
//	req, resp := client.GetResourcePolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetResourcePolicy
func (c *Glue) GetResourcePolicyRequest(input *GetResourcePolicyInput) (req *request.Request, output *GetResourcePolicyOutput) {
	op := &request.Operation{
		Name:       opGetResourcePolicy,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetResourcePolicyInput{}
	}

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

// GetResourcePolicy API operation for AWS Glue.
//
// Retrieves a specified resource policy.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetResourcePolicy for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetResourcePolicy
func (c *Glue) GetResourcePolicy(input *GetResourcePolicyInput) (*GetResourcePolicyOutput, error) {
	req, out := c.GetResourcePolicyRequest(input)
	return out, req.Send()
}

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

const opGetSchema = "GetSchema"

// GetSchemaRequest generates a "aws/request.Request" representing the
// client's request for the GetSchema 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 GetSchema for more information on using the GetSchema
// 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 GetSchemaRequest method.
//	req, resp := client.GetSchemaRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetSchema
func (c *Glue) GetSchemaRequest(input *GetSchemaInput) (req *request.Request, output *GetSchemaOutput) {
	op := &request.Operation{
		Name:       opGetSchema,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetSchemaInput{}
	}

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

// GetSchema API operation for AWS Glue.
//
// Describes the specified schema in detail.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetSchema for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetSchema
func (c *Glue) GetSchema(input *GetSchemaInput) (*GetSchemaOutput, error) {
	req, out := c.GetSchemaRequest(input)
	return out, req.Send()
}

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

const opGetSchemaByDefinition = "GetSchemaByDefinition"

// GetSchemaByDefinitionRequest generates a "aws/request.Request" representing the
// client's request for the GetSchemaByDefinition 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 GetSchemaByDefinition for more information on using the GetSchemaByDefinition
// 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 GetSchemaByDefinitionRequest method.
//	req, resp := client.GetSchemaByDefinitionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetSchemaByDefinition
func (c *Glue) GetSchemaByDefinitionRequest(input *GetSchemaByDefinitionInput) (req *request.Request, output *GetSchemaByDefinitionOutput) {
	op := &request.Operation{
		Name:       opGetSchemaByDefinition,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetSchemaByDefinitionInput{}
	}

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

// GetSchemaByDefinition API operation for AWS Glue.
//
// Retrieves a schema by the SchemaDefinition. The schema definition is sent
// to the Schema Registry, canonicalized, and hashed. If the hash is matched
// within the scope of the SchemaName or ARN (or the default registry, if none
// is supplied), that schema’s metadata is returned. Otherwise, a 404 or NotFound
// error is returned. Schema versions in Deleted statuses will not be included
// in the results.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetSchemaByDefinition for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetSchemaByDefinition
func (c *Glue) GetSchemaByDefinition(input *GetSchemaByDefinitionInput) (*GetSchemaByDefinitionOutput, error) {
	req, out := c.GetSchemaByDefinitionRequest(input)
	return out, req.Send()
}

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

const opGetSchemaVersion = "GetSchemaVersion"

// GetSchemaVersionRequest generates a "aws/request.Request" representing the
// client's request for the GetSchemaVersion 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 GetSchemaVersion for more information on using the GetSchemaVersion
// 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 GetSchemaVersionRequest method.
//	req, resp := client.GetSchemaVersionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetSchemaVersion
func (c *Glue) GetSchemaVersionRequest(input *GetSchemaVersionInput) (req *request.Request, output *GetSchemaVersionOutput) {
	op := &request.Operation{
		Name:       opGetSchemaVersion,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetSchemaVersionInput{}
	}

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

// GetSchemaVersion API operation for AWS Glue.
//
// Get the specified schema by its unique ID assigned when a version of the
// schema is created or registered. Schema versions in Deleted status will not
// be included in the results.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetSchemaVersion for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetSchemaVersion
func (c *Glue) GetSchemaVersion(input *GetSchemaVersionInput) (*GetSchemaVersionOutput, error) {
	req, out := c.GetSchemaVersionRequest(input)
	return out, req.Send()
}

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

const opGetSchemaVersionsDiff = "GetSchemaVersionsDiff"

// GetSchemaVersionsDiffRequest generates a "aws/request.Request" representing the
// client's request for the GetSchemaVersionsDiff 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 GetSchemaVersionsDiff for more information on using the GetSchemaVersionsDiff
// 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 GetSchemaVersionsDiffRequest method.
//	req, resp := client.GetSchemaVersionsDiffRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetSchemaVersionsDiff
func (c *Glue) GetSchemaVersionsDiffRequest(input *GetSchemaVersionsDiffInput) (req *request.Request, output *GetSchemaVersionsDiffOutput) {
	op := &request.Operation{
		Name:       opGetSchemaVersionsDiff,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetSchemaVersionsDiffInput{}
	}

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

// GetSchemaVersionsDiff API operation for AWS Glue.
//
// Fetches the schema version difference in the specified difference type between
// two stored schema versions in the Schema Registry.
//
// This API allows you to compare two schema versions between two schema definitions
// under the same schema.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetSchemaVersionsDiff for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetSchemaVersionsDiff
func (c *Glue) GetSchemaVersionsDiff(input *GetSchemaVersionsDiffInput) (*GetSchemaVersionsDiffOutput, error) {
	req, out := c.GetSchemaVersionsDiffRequest(input)
	return out, req.Send()
}

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

const opGetSecurityConfiguration = "GetSecurityConfiguration"

// GetSecurityConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the GetSecurityConfiguration 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 GetSecurityConfiguration for more information on using the GetSecurityConfiguration
// 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 GetSecurityConfigurationRequest method.
//	req, resp := client.GetSecurityConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetSecurityConfiguration
func (c *Glue) GetSecurityConfigurationRequest(input *GetSecurityConfigurationInput) (req *request.Request, output *GetSecurityConfigurationOutput) {
	op := &request.Operation{
		Name:       opGetSecurityConfiguration,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetSecurityConfigurationInput{}
	}

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

// GetSecurityConfiguration API operation for AWS Glue.
//
// Retrieves a specified security configuration.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetSecurityConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetSecurityConfiguration
func (c *Glue) GetSecurityConfiguration(input *GetSecurityConfigurationInput) (*GetSecurityConfigurationOutput, error) {
	req, out := c.GetSecurityConfigurationRequest(input)
	return out, req.Send()
}

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

const opGetSecurityConfigurations = "GetSecurityConfigurations"

// GetSecurityConfigurationsRequest generates a "aws/request.Request" representing the
// client's request for the GetSecurityConfigurations 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 GetSecurityConfigurations for more information on using the GetSecurityConfigurations
// 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 GetSecurityConfigurationsRequest method.
//	req, resp := client.GetSecurityConfigurationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetSecurityConfigurations
func (c *Glue) GetSecurityConfigurationsRequest(input *GetSecurityConfigurationsInput) (req *request.Request, output *GetSecurityConfigurationsOutput) {
	op := &request.Operation{
		Name:       opGetSecurityConfigurations,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetSecurityConfigurationsInput{}
	}

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

// GetSecurityConfigurations API operation for AWS Glue.
//
// Retrieves a list of all security configurations.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetSecurityConfigurations for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetSecurityConfigurations
func (c *Glue) GetSecurityConfigurations(input *GetSecurityConfigurationsInput) (*GetSecurityConfigurationsOutput, error) {
	req, out := c.GetSecurityConfigurationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetSession = "GetSession"

// GetSessionRequest generates a "aws/request.Request" representing the
// client's request for the GetSession 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 GetSession for more information on using the GetSession
// 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 GetSessionRequest method.
//	req, resp := client.GetSessionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetSession
func (c *Glue) GetSessionRequest(input *GetSessionInput) (req *request.Request, output *GetSessionOutput) {
	op := &request.Operation{
		Name:       opGetSession,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetSessionInput{}
	}

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

// GetSession API operation for AWS Glue.
//
// Retrieves the session.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetSession for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetSession
func (c *Glue) GetSession(input *GetSessionInput) (*GetSessionOutput, error) {
	req, out := c.GetSessionRequest(input)
	return out, req.Send()
}

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

const opGetStatement = "GetStatement"

// GetStatementRequest generates a "aws/request.Request" representing the
// client's request for the GetStatement 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 GetStatement for more information on using the GetStatement
// 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 GetStatementRequest method.
//	req, resp := client.GetStatementRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetStatement
func (c *Glue) GetStatementRequest(input *GetStatementInput) (req *request.Request, output *GetStatementOutput) {
	op := &request.Operation{
		Name:       opGetStatement,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetStatementInput{}
	}

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

// GetStatement API operation for AWS Glue.
//
// Retrieves the statement.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetStatement for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - IllegalSessionStateException
//     The session is in an invalid state to perform a requested operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetStatement
func (c *Glue) GetStatement(input *GetStatementInput) (*GetStatementOutput, error) {
	req, out := c.GetStatementRequest(input)
	return out, req.Send()
}

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

const opGetTable = "GetTable"

// GetTableRequest generates a "aws/request.Request" representing the
// client's request for the GetTable 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 GetTable for more information on using the GetTable
// 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 GetTableRequest method.
//	req, resp := client.GetTableRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetTable
func (c *Glue) GetTableRequest(input *GetTableInput) (req *request.Request, output *GetTableOutput) {
	op := &request.Operation{
		Name:       opGetTable,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetTableInput{}
	}

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

// GetTable API operation for AWS Glue.
//
// Retrieves the Table definition in a Data Catalog for a specified table.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetTable for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
//   - ResourceNotReadyException
//     A resource was not ready for a transaction.
//
//   - FederationSourceException
//     A federation source failed.
//
//   - FederationSourceRetryableException
//     A federation source failed, but the operation may be retried.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetTable
func (c *Glue) GetTable(input *GetTableInput) (*GetTableOutput, error) {
	req, out := c.GetTableRequest(input)
	return out, req.Send()
}

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

const opGetTableOptimizer = "GetTableOptimizer"

// GetTableOptimizerRequest generates a "aws/request.Request" representing the
// client's request for the GetTableOptimizer 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 GetTableOptimizer for more information on using the GetTableOptimizer
// 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 GetTableOptimizerRequest method.
//	req, resp := client.GetTableOptimizerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetTableOptimizer
func (c *Glue) GetTableOptimizerRequest(input *GetTableOptimizerInput) (req *request.Request, output *GetTableOptimizerOutput) {
	op := &request.Operation{
		Name:       opGetTableOptimizer,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetTableOptimizerInput{}
	}

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

// GetTableOptimizer API operation for AWS Glue.
//
// Returns the configuration of all optimizers associated with a specified table.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetTableOptimizer for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetTableOptimizer
func (c *Glue) GetTableOptimizer(input *GetTableOptimizerInput) (*GetTableOptimizerOutput, error) {
	req, out := c.GetTableOptimizerRequest(input)
	return out, req.Send()
}

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

const opGetTableVersion = "GetTableVersion"

// GetTableVersionRequest generates a "aws/request.Request" representing the
// client's request for the GetTableVersion 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 GetTableVersion for more information on using the GetTableVersion
// 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 GetTableVersionRequest method.
//	req, resp := client.GetTableVersionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetTableVersion
func (c *Glue) GetTableVersionRequest(input *GetTableVersionInput) (req *request.Request, output *GetTableVersionOutput) {
	op := &request.Operation{
		Name:       opGetTableVersion,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetTableVersionInput{}
	}

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

// GetTableVersion API operation for AWS Glue.
//
// Retrieves a specified version of a table.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetTableVersion for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetTableVersion
func (c *Glue) GetTableVersion(input *GetTableVersionInput) (*GetTableVersionOutput, error) {
	req, out := c.GetTableVersionRequest(input)
	return out, req.Send()
}

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

const opGetTableVersions = "GetTableVersions"

// GetTableVersionsRequest generates a "aws/request.Request" representing the
// client's request for the GetTableVersions 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 GetTableVersions for more information on using the GetTableVersions
// 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 GetTableVersionsRequest method.
//	req, resp := client.GetTableVersionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetTableVersions
func (c *Glue) GetTableVersionsRequest(input *GetTableVersionsInput) (req *request.Request, output *GetTableVersionsOutput) {
	op := &request.Operation{
		Name:       opGetTableVersions,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetTableVersionsInput{}
	}

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

// GetTableVersions API operation for AWS Glue.
//
// Retrieves a list of strings that identify available versions of a specified
// table.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetTableVersions for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetTableVersions
func (c *Glue) GetTableVersions(input *GetTableVersionsInput) (*GetTableVersionsOutput, error) {
	req, out := c.GetTableVersionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetTables = "GetTables"

// GetTablesRequest generates a "aws/request.Request" representing the
// client's request for the GetTables 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 GetTables for more information on using the GetTables
// 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 GetTablesRequest method.
//	req, resp := client.GetTablesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetTables
func (c *Glue) GetTablesRequest(input *GetTablesInput) (req *request.Request, output *GetTablesOutput) {
	op := &request.Operation{
		Name:       opGetTables,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetTablesInput{}
	}

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

// GetTables API operation for AWS Glue.
//
// Retrieves the definitions of some or all of the tables in a given Database.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetTables for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - EncryptionException
//     An encryption operation failed.
//
//   - FederationSourceException
//     A federation source failed.
//
//   - FederationSourceRetryableException
//     A federation source failed, but the operation may be retried.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetTables
func (c *Glue) GetTables(input *GetTablesInput) (*GetTablesOutput, error) {
	req, out := c.GetTablesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetTags = "GetTags"

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

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

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

// GetTags API operation for AWS Glue.
//
// Retrieves a list of tags associated with 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 AWS Glue's
// API operation GetTags for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetTags
func (c *Glue) GetTags(input *GetTagsInput) (*GetTagsOutput, error) {
	req, out := c.GetTagsRequest(input)
	return out, req.Send()
}

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

const opGetTrigger = "GetTrigger"

// GetTriggerRequest generates a "aws/request.Request" representing the
// client's request for the GetTrigger 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 GetTrigger for more information on using the GetTrigger
// 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 GetTriggerRequest method.
//	req, resp := client.GetTriggerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetTrigger
func (c *Glue) GetTriggerRequest(input *GetTriggerInput) (req *request.Request, output *GetTriggerOutput) {
	op := &request.Operation{
		Name:       opGetTrigger,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetTriggerInput{}
	}

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

// GetTrigger API operation for AWS Glue.
//
// Retrieves the definition of a trigger.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetTrigger for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetTrigger
func (c *Glue) GetTrigger(input *GetTriggerInput) (*GetTriggerOutput, error) {
	req, out := c.GetTriggerRequest(input)
	return out, req.Send()
}

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

const opGetTriggers = "GetTriggers"

// GetTriggersRequest generates a "aws/request.Request" representing the
// client's request for the GetTriggers 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 GetTriggers for more information on using the GetTriggers
// 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 GetTriggersRequest method.
//	req, resp := client.GetTriggersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetTriggers
func (c *Glue) GetTriggersRequest(input *GetTriggersInput) (req *request.Request, output *GetTriggersOutput) {
	op := &request.Operation{
		Name:       opGetTriggers,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetTriggersInput{}
	}

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

// GetTriggers API operation for AWS Glue.
//
// Gets all the triggers associated with a job.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetTriggers for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetTriggers
func (c *Glue) GetTriggers(input *GetTriggersInput) (*GetTriggersOutput, error) {
	req, out := c.GetTriggersRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetUnfilteredPartitionMetadata = "GetUnfilteredPartitionMetadata"

// GetUnfilteredPartitionMetadataRequest generates a "aws/request.Request" representing the
// client's request for the GetUnfilteredPartitionMetadata 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 GetUnfilteredPartitionMetadata for more information on using the GetUnfilteredPartitionMetadata
// 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 GetUnfilteredPartitionMetadataRequest method.
//	req, resp := client.GetUnfilteredPartitionMetadataRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetUnfilteredPartitionMetadata
func (c *Glue) GetUnfilteredPartitionMetadataRequest(input *GetUnfilteredPartitionMetadataInput) (req *request.Request, output *GetUnfilteredPartitionMetadataOutput) {
	op := &request.Operation{
		Name:       opGetUnfilteredPartitionMetadata,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetUnfilteredPartitionMetadataInput{}
	}

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

// GetUnfilteredPartitionMetadata API operation for AWS Glue.
//
// Retrieves partition metadata from the Data Catalog that contains unfiltered
// metadata.
//
// For IAM authorization, the public IAM action associated with this API is
// glue:GetPartition.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetUnfilteredPartitionMetadata for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
//   - PermissionTypeMismatchException
//     The operation timed out.
//
//   - FederationSourceException
//     A federation source failed.
//
//   - FederationSourceRetryableException
//     A federation source failed, but the operation may be retried.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetUnfilteredPartitionMetadata
func (c *Glue) GetUnfilteredPartitionMetadata(input *GetUnfilteredPartitionMetadataInput) (*GetUnfilteredPartitionMetadataOutput, error) {
	req, out := c.GetUnfilteredPartitionMetadataRequest(input)
	return out, req.Send()
}

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

const opGetUnfilteredPartitionsMetadata = "GetUnfilteredPartitionsMetadata"

// GetUnfilteredPartitionsMetadataRequest generates a "aws/request.Request" representing the
// client's request for the GetUnfilteredPartitionsMetadata 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 GetUnfilteredPartitionsMetadata for more information on using the GetUnfilteredPartitionsMetadata
// 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 GetUnfilteredPartitionsMetadataRequest method.
//	req, resp := client.GetUnfilteredPartitionsMetadataRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetUnfilteredPartitionsMetadata
func (c *Glue) GetUnfilteredPartitionsMetadataRequest(input *GetUnfilteredPartitionsMetadataInput) (req *request.Request, output *GetUnfilteredPartitionsMetadataOutput) {
	op := &request.Operation{
		Name:       opGetUnfilteredPartitionsMetadata,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetUnfilteredPartitionsMetadataInput{}
	}

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

// GetUnfilteredPartitionsMetadata API operation for AWS Glue.
//
// Retrieves partition metadata from the Data Catalog that contains unfiltered
// metadata.
//
// For IAM authorization, the public IAM action associated with this API is
// glue:GetPartitions.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetUnfilteredPartitionsMetadata for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
//   - PermissionTypeMismatchException
//     The operation timed out.
//
//   - FederationSourceException
//     A federation source failed.
//
//   - FederationSourceRetryableException
//     A federation source failed, but the operation may be retried.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetUnfilteredPartitionsMetadata
func (c *Glue) GetUnfilteredPartitionsMetadata(input *GetUnfilteredPartitionsMetadataInput) (*GetUnfilteredPartitionsMetadataOutput, error) {
	req, out := c.GetUnfilteredPartitionsMetadataRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetUnfilteredTableMetadata = "GetUnfilteredTableMetadata"

// GetUnfilteredTableMetadataRequest generates a "aws/request.Request" representing the
// client's request for the GetUnfilteredTableMetadata 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 GetUnfilteredTableMetadata for more information on using the GetUnfilteredTableMetadata
// 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 GetUnfilteredTableMetadataRequest method.
//	req, resp := client.GetUnfilteredTableMetadataRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetUnfilteredTableMetadata
func (c *Glue) GetUnfilteredTableMetadataRequest(input *GetUnfilteredTableMetadataInput) (req *request.Request, output *GetUnfilteredTableMetadataOutput) {
	op := &request.Operation{
		Name:       opGetUnfilteredTableMetadata,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetUnfilteredTableMetadataInput{}
	}

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

// GetUnfilteredTableMetadata API operation for AWS Glue.
//
// Allows a third-party analytical engine to retrieve unfiltered table metadata
// from the Data Catalog.
//
// For IAM authorization, the public IAM action associated with this API is
// glue:GetTable.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetUnfilteredTableMetadata for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
//   - PermissionTypeMismatchException
//     The operation timed out.
//
//   - FederationSourceException
//     A federation source failed.
//
//   - FederationSourceRetryableException
//     A federation source failed, but the operation may be retried.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetUnfilteredTableMetadata
func (c *Glue) GetUnfilteredTableMetadata(input *GetUnfilteredTableMetadataInput) (*GetUnfilteredTableMetadataOutput, error) {
	req, out := c.GetUnfilteredTableMetadataRequest(input)
	return out, req.Send()
}

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

const opGetUsageProfile = "GetUsageProfile"

// GetUsageProfileRequest generates a "aws/request.Request" representing the
// client's request for the GetUsageProfile 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 GetUsageProfile for more information on using the GetUsageProfile
// 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 GetUsageProfileRequest method.
//	req, resp := client.GetUsageProfileRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetUsageProfile
func (c *Glue) GetUsageProfileRequest(input *GetUsageProfileInput) (req *request.Request, output *GetUsageProfileOutput) {
	op := &request.Operation{
		Name:       opGetUsageProfile,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetUsageProfileInput{}
	}

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

// GetUsageProfile API operation for AWS Glue.
//
// Retrieves information about the specified Glue usage profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetUsageProfile for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - OperationNotSupportedException
//     The operation is not available in the region.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetUsageProfile
func (c *Glue) GetUsageProfile(input *GetUsageProfileInput) (*GetUsageProfileOutput, error) {
	req, out := c.GetUsageProfileRequest(input)
	return out, req.Send()
}

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

const opGetUserDefinedFunction = "GetUserDefinedFunction"

// GetUserDefinedFunctionRequest generates a "aws/request.Request" representing the
// client's request for the GetUserDefinedFunction 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 GetUserDefinedFunction for more information on using the GetUserDefinedFunction
// 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 GetUserDefinedFunctionRequest method.
//	req, resp := client.GetUserDefinedFunctionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetUserDefinedFunction
func (c *Glue) GetUserDefinedFunctionRequest(input *GetUserDefinedFunctionInput) (req *request.Request, output *GetUserDefinedFunctionOutput) {
	op := &request.Operation{
		Name:       opGetUserDefinedFunction,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetUserDefinedFunctionInput{}
	}

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

// GetUserDefinedFunction API operation for AWS Glue.
//
// Retrieves a specified function definition from the Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetUserDefinedFunction for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetUserDefinedFunction
func (c *Glue) GetUserDefinedFunction(input *GetUserDefinedFunctionInput) (*GetUserDefinedFunctionOutput, error) {
	req, out := c.GetUserDefinedFunctionRequest(input)
	return out, req.Send()
}

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

const opGetUserDefinedFunctions = "GetUserDefinedFunctions"

// GetUserDefinedFunctionsRequest generates a "aws/request.Request" representing the
// client's request for the GetUserDefinedFunctions 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 GetUserDefinedFunctions for more information on using the GetUserDefinedFunctions
// 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 GetUserDefinedFunctionsRequest method.
//	req, resp := client.GetUserDefinedFunctionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetUserDefinedFunctions
func (c *Glue) GetUserDefinedFunctionsRequest(input *GetUserDefinedFunctionsInput) (req *request.Request, output *GetUserDefinedFunctionsOutput) {
	op := &request.Operation{
		Name:       opGetUserDefinedFunctions,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetUserDefinedFunctionsInput{}
	}

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

// GetUserDefinedFunctions API operation for AWS Glue.
//
// Retrieves multiple function definitions from the Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetUserDefinedFunctions for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetUserDefinedFunctions
func (c *Glue) GetUserDefinedFunctions(input *GetUserDefinedFunctionsInput) (*GetUserDefinedFunctionsOutput, error) {
	req, out := c.GetUserDefinedFunctionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opGetWorkflow = "GetWorkflow"

// GetWorkflowRequest generates a "aws/request.Request" representing the
// client's request for the GetWorkflow 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 GetWorkflow for more information on using the GetWorkflow
// 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 GetWorkflowRequest method.
//	req, resp := client.GetWorkflowRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetWorkflow
func (c *Glue) GetWorkflowRequest(input *GetWorkflowInput) (req *request.Request, output *GetWorkflowOutput) {
	op := &request.Operation{
		Name:       opGetWorkflow,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetWorkflowInput{}
	}

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

// GetWorkflow API operation for AWS Glue.
//
// Retrieves resource metadata for a workflow.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetWorkflow for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetWorkflow
func (c *Glue) GetWorkflow(input *GetWorkflowInput) (*GetWorkflowOutput, error) {
	req, out := c.GetWorkflowRequest(input)
	return out, req.Send()
}

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

const opGetWorkflowRun = "GetWorkflowRun"

// GetWorkflowRunRequest generates a "aws/request.Request" representing the
// client's request for the GetWorkflowRun 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 GetWorkflowRun for more information on using the GetWorkflowRun
// 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 GetWorkflowRunRequest method.
//	req, resp := client.GetWorkflowRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetWorkflowRun
func (c *Glue) GetWorkflowRunRequest(input *GetWorkflowRunInput) (req *request.Request, output *GetWorkflowRunOutput) {
	op := &request.Operation{
		Name:       opGetWorkflowRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetWorkflowRunInput{}
	}

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

// GetWorkflowRun API operation for AWS Glue.
//
// Retrieves the metadata for a given workflow run. Job run history is accessible
// for 90 days for your workflow and job run.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetWorkflowRun for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetWorkflowRun
func (c *Glue) GetWorkflowRun(input *GetWorkflowRunInput) (*GetWorkflowRunOutput, error) {
	req, out := c.GetWorkflowRunRequest(input)
	return out, req.Send()
}

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

const opGetWorkflowRunProperties = "GetWorkflowRunProperties"

// GetWorkflowRunPropertiesRequest generates a "aws/request.Request" representing the
// client's request for the GetWorkflowRunProperties 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 GetWorkflowRunProperties for more information on using the GetWorkflowRunProperties
// 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 GetWorkflowRunPropertiesRequest method.
//	req, resp := client.GetWorkflowRunPropertiesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetWorkflowRunProperties
func (c *Glue) GetWorkflowRunPropertiesRequest(input *GetWorkflowRunPropertiesInput) (req *request.Request, output *GetWorkflowRunPropertiesOutput) {
	op := &request.Operation{
		Name:       opGetWorkflowRunProperties,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &GetWorkflowRunPropertiesInput{}
	}

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

// GetWorkflowRunProperties API operation for AWS Glue.
//
// Retrieves the workflow run properties which were set during the run.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetWorkflowRunProperties for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetWorkflowRunProperties
func (c *Glue) GetWorkflowRunProperties(input *GetWorkflowRunPropertiesInput) (*GetWorkflowRunPropertiesOutput, error) {
	req, out := c.GetWorkflowRunPropertiesRequest(input)
	return out, req.Send()
}

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

const opGetWorkflowRuns = "GetWorkflowRuns"

// GetWorkflowRunsRequest generates a "aws/request.Request" representing the
// client's request for the GetWorkflowRuns 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 GetWorkflowRuns for more information on using the GetWorkflowRuns
// 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 GetWorkflowRunsRequest method.
//	req, resp := client.GetWorkflowRunsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetWorkflowRuns
func (c *Glue) GetWorkflowRunsRequest(input *GetWorkflowRunsInput) (req *request.Request, output *GetWorkflowRunsOutput) {
	op := &request.Operation{
		Name:       opGetWorkflowRuns,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &GetWorkflowRunsInput{}
	}

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

// GetWorkflowRuns API operation for AWS Glue.
//
// Retrieves metadata for all runs of a given workflow.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation GetWorkflowRuns for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/GetWorkflowRuns
func (c *Glue) GetWorkflowRuns(input *GetWorkflowRunsInput) (*GetWorkflowRunsOutput, error) {
	req, out := c.GetWorkflowRunsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opImportCatalogToGlue = "ImportCatalogToGlue"

// ImportCatalogToGlueRequest generates a "aws/request.Request" representing the
// client's request for the ImportCatalogToGlue 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 ImportCatalogToGlue for more information on using the ImportCatalogToGlue
// 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 ImportCatalogToGlueRequest method.
//	req, resp := client.ImportCatalogToGlueRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ImportCatalogToGlue
func (c *Glue) ImportCatalogToGlueRequest(input *ImportCatalogToGlueInput) (req *request.Request, output *ImportCatalogToGlueOutput) {
	op := &request.Operation{
		Name:       opImportCatalogToGlue,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ImportCatalogToGlueInput{}
	}

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

// ImportCatalogToGlue API operation for AWS Glue.
//
// Imports an existing Amazon Athena Data Catalog to Glue.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ImportCatalogToGlue for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ImportCatalogToGlue
func (c *Glue) ImportCatalogToGlue(input *ImportCatalogToGlueInput) (*ImportCatalogToGlueOutput, error) {
	req, out := c.ImportCatalogToGlueRequest(input)
	return out, req.Send()
}

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

const opListBlueprints = "ListBlueprints"

// ListBlueprintsRequest generates a "aws/request.Request" representing the
// client's request for the ListBlueprints 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 ListBlueprints for more information on using the ListBlueprints
// 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 ListBlueprintsRequest method.
//	req, resp := client.ListBlueprintsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListBlueprints
func (c *Glue) ListBlueprintsRequest(input *ListBlueprintsInput) (req *request.Request, output *ListBlueprintsOutput) {
	op := &request.Operation{
		Name:       opListBlueprints,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListBlueprintsInput{}
	}

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

// ListBlueprints API operation for AWS Glue.
//
// Lists all the blueprint names 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 AWS Glue's
// API operation ListBlueprints for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListBlueprints
func (c *Glue) ListBlueprints(input *ListBlueprintsInput) (*ListBlueprintsOutput, error) {
	req, out := c.ListBlueprintsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListColumnStatisticsTaskRuns = "ListColumnStatisticsTaskRuns"

// ListColumnStatisticsTaskRunsRequest generates a "aws/request.Request" representing the
// client's request for the ListColumnStatisticsTaskRuns 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 ListColumnStatisticsTaskRuns for more information on using the ListColumnStatisticsTaskRuns
// 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 ListColumnStatisticsTaskRunsRequest method.
//	req, resp := client.ListColumnStatisticsTaskRunsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListColumnStatisticsTaskRuns
func (c *Glue) ListColumnStatisticsTaskRunsRequest(input *ListColumnStatisticsTaskRunsInput) (req *request.Request, output *ListColumnStatisticsTaskRunsOutput) {
	op := &request.Operation{
		Name:       opListColumnStatisticsTaskRuns,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListColumnStatisticsTaskRunsInput{}
	}

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

// ListColumnStatisticsTaskRuns API operation for AWS Glue.
//
// List all task runs for a particular account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListColumnStatisticsTaskRuns for usage and error information.
//
// Returned Error Types:
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListColumnStatisticsTaskRuns
func (c *Glue) ListColumnStatisticsTaskRuns(input *ListColumnStatisticsTaskRunsInput) (*ListColumnStatisticsTaskRunsOutput, error) {
	req, out := c.ListColumnStatisticsTaskRunsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListCrawlers = "ListCrawlers"

// ListCrawlersRequest generates a "aws/request.Request" representing the
// client's request for the ListCrawlers 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 ListCrawlers for more information on using the ListCrawlers
// 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 ListCrawlersRequest method.
//	req, resp := client.ListCrawlersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListCrawlers
func (c *Glue) ListCrawlersRequest(input *ListCrawlersInput) (req *request.Request, output *ListCrawlersOutput) {
	op := &request.Operation{
		Name:       opListCrawlers,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListCrawlersInput{}
	}

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

// ListCrawlers API operation for AWS Glue.
//
// Retrieves the names of all crawler resources in this Amazon Web Services
// account, or the resources with the specified tag. This operation allows you
// to see which resources are available in your account, and their names.
//
// This operation takes the optional Tags field, which you can use as a filter
// on the response so that tagged resources can be retrieved as a group. If
// you choose to use tags filtering, only resources with the tag are retrieved.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListCrawlers for usage and error information.
//
// Returned Error Types:
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListCrawlers
func (c *Glue) ListCrawlers(input *ListCrawlersInput) (*ListCrawlersOutput, error) {
	req, out := c.ListCrawlersRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListCrawls = "ListCrawls"

// ListCrawlsRequest generates a "aws/request.Request" representing the
// client's request for the ListCrawls 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 ListCrawls for more information on using the ListCrawls
// 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 ListCrawlsRequest method.
//	req, resp := client.ListCrawlsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListCrawls
func (c *Glue) ListCrawlsRequest(input *ListCrawlsInput) (req *request.Request, output *ListCrawlsOutput) {
	op := &request.Operation{
		Name:       opListCrawls,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ListCrawlsInput{}
	}

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

// ListCrawls API operation for AWS Glue.
//
// Returns all the crawls of a specified crawler. Returns only the crawls that
// have occurred since the launch date of the crawler history feature, and only
// retains up to 12 months of crawls. Older crawls will not be returned.
//
// You may use this API to:
//
//   - Retrive all the crawls of a specified crawler.
//
//   - Retrieve all the crawls of a specified crawler within a limited count.
//
//   - Retrieve all the crawls of a specified crawler in a specific time range.
//
//   - Retrieve all the crawls of a specified crawler with a particular state,
//     crawl ID, or DPU hour value.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListCrawls for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListCrawls
func (c *Glue) ListCrawls(input *ListCrawlsInput) (*ListCrawlsOutput, error) {
	req, out := c.ListCrawlsRequest(input)
	return out, req.Send()
}

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

const opListCustomEntityTypes = "ListCustomEntityTypes"

// ListCustomEntityTypesRequest generates a "aws/request.Request" representing the
// client's request for the ListCustomEntityTypes 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 ListCustomEntityTypes for more information on using the ListCustomEntityTypes
// 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 ListCustomEntityTypesRequest method.
//	req, resp := client.ListCustomEntityTypesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListCustomEntityTypes
func (c *Glue) ListCustomEntityTypesRequest(input *ListCustomEntityTypesInput) (req *request.Request, output *ListCustomEntityTypesOutput) {
	op := &request.Operation{
		Name:       opListCustomEntityTypes,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListCustomEntityTypesInput{}
	}

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

// ListCustomEntityTypes API operation for AWS Glue.
//
// Lists all the custom patterns that have been created.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListCustomEntityTypes for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListCustomEntityTypes
func (c *Glue) ListCustomEntityTypes(input *ListCustomEntityTypesInput) (*ListCustomEntityTypesOutput, error) {
	req, out := c.ListCustomEntityTypesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListDataQualityResults = "ListDataQualityResults"

// ListDataQualityResultsRequest generates a "aws/request.Request" representing the
// client's request for the ListDataQualityResults 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 ListDataQualityResults for more information on using the ListDataQualityResults
// 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 ListDataQualityResultsRequest method.
//	req, resp := client.ListDataQualityResultsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListDataQualityResults
func (c *Glue) ListDataQualityResultsRequest(input *ListDataQualityResultsInput) (req *request.Request, output *ListDataQualityResultsOutput) {
	op := &request.Operation{
		Name:       opListDataQualityResults,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListDataQualityResultsInput{}
	}

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

// ListDataQualityResults API operation for AWS Glue.
//
// Returns all data quality execution results for your account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListDataQualityResults for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListDataQualityResults
func (c *Glue) ListDataQualityResults(input *ListDataQualityResultsInput) (*ListDataQualityResultsOutput, error) {
	req, out := c.ListDataQualityResultsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListDataQualityRuleRecommendationRuns = "ListDataQualityRuleRecommendationRuns"

// ListDataQualityRuleRecommendationRunsRequest generates a "aws/request.Request" representing the
// client's request for the ListDataQualityRuleRecommendationRuns 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 ListDataQualityRuleRecommendationRuns for more information on using the ListDataQualityRuleRecommendationRuns
// 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 ListDataQualityRuleRecommendationRunsRequest method.
//	req, resp := client.ListDataQualityRuleRecommendationRunsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListDataQualityRuleRecommendationRuns
func (c *Glue) ListDataQualityRuleRecommendationRunsRequest(input *ListDataQualityRuleRecommendationRunsInput) (req *request.Request, output *ListDataQualityRuleRecommendationRunsOutput) {
	op := &request.Operation{
		Name:       opListDataQualityRuleRecommendationRuns,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListDataQualityRuleRecommendationRunsInput{}
	}

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

// ListDataQualityRuleRecommendationRuns API operation for AWS Glue.
//
// Lists the recommendation runs meeting the filter criteria.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListDataQualityRuleRecommendationRuns for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListDataQualityRuleRecommendationRuns
func (c *Glue) ListDataQualityRuleRecommendationRuns(input *ListDataQualityRuleRecommendationRunsInput) (*ListDataQualityRuleRecommendationRunsOutput, error) {
	req, out := c.ListDataQualityRuleRecommendationRunsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListDataQualityRulesetEvaluationRuns = "ListDataQualityRulesetEvaluationRuns"

// ListDataQualityRulesetEvaluationRunsRequest generates a "aws/request.Request" representing the
// client's request for the ListDataQualityRulesetEvaluationRuns 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 ListDataQualityRulesetEvaluationRuns for more information on using the ListDataQualityRulesetEvaluationRuns
// 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 ListDataQualityRulesetEvaluationRunsRequest method.
//	req, resp := client.ListDataQualityRulesetEvaluationRunsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListDataQualityRulesetEvaluationRuns
func (c *Glue) ListDataQualityRulesetEvaluationRunsRequest(input *ListDataQualityRulesetEvaluationRunsInput) (req *request.Request, output *ListDataQualityRulesetEvaluationRunsOutput) {
	op := &request.Operation{
		Name:       opListDataQualityRulesetEvaluationRuns,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListDataQualityRulesetEvaluationRunsInput{}
	}

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

// ListDataQualityRulesetEvaluationRuns API operation for AWS Glue.
//
// Lists all the runs meeting the filter criteria, where a ruleset is evaluated
// against 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 AWS Glue's
// API operation ListDataQualityRulesetEvaluationRuns for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListDataQualityRulesetEvaluationRuns
func (c *Glue) ListDataQualityRulesetEvaluationRuns(input *ListDataQualityRulesetEvaluationRunsInput) (*ListDataQualityRulesetEvaluationRunsOutput, error) {
	req, out := c.ListDataQualityRulesetEvaluationRunsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListDataQualityRulesets = "ListDataQualityRulesets"

// ListDataQualityRulesetsRequest generates a "aws/request.Request" representing the
// client's request for the ListDataQualityRulesets 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 ListDataQualityRulesets for more information on using the ListDataQualityRulesets
// 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 ListDataQualityRulesetsRequest method.
//	req, resp := client.ListDataQualityRulesetsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListDataQualityRulesets
func (c *Glue) ListDataQualityRulesetsRequest(input *ListDataQualityRulesetsInput) (req *request.Request, output *ListDataQualityRulesetsOutput) {
	op := &request.Operation{
		Name:       opListDataQualityRulesets,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListDataQualityRulesetsInput{}
	}

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

// ListDataQualityRulesets API operation for AWS Glue.
//
// Returns a paginated list of rulesets for the specified list of Glue tables.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListDataQualityRulesets for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListDataQualityRulesets
func (c *Glue) ListDataQualityRulesets(input *ListDataQualityRulesetsInput) (*ListDataQualityRulesetsOutput, error) {
	req, out := c.ListDataQualityRulesetsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListDevEndpoints = "ListDevEndpoints"

// ListDevEndpointsRequest generates a "aws/request.Request" representing the
// client's request for the ListDevEndpoints 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 ListDevEndpoints for more information on using the ListDevEndpoints
// 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 ListDevEndpointsRequest method.
//	req, resp := client.ListDevEndpointsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListDevEndpoints
func (c *Glue) ListDevEndpointsRequest(input *ListDevEndpointsInput) (req *request.Request, output *ListDevEndpointsOutput) {
	op := &request.Operation{
		Name:       opListDevEndpoints,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListDevEndpointsInput{}
	}

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

// ListDevEndpoints API operation for AWS Glue.
//
// Retrieves the names of all DevEndpoint resources in this Amazon Web Services
// account, or the resources with the specified tag. This operation allows you
// to see which resources are available in your account, and their names.
//
// This operation takes the optional Tags field, which you can use as a filter
// on the response so that tagged resources can be retrieved as a group. If
// you choose to use tags filtering, only resources with the tag are retrieved.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListDevEndpoints for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListDevEndpoints
func (c *Glue) ListDevEndpoints(input *ListDevEndpointsInput) (*ListDevEndpointsOutput, error) {
	req, out := c.ListDevEndpointsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListJobs = "ListJobs"

// ListJobsRequest generates a "aws/request.Request" representing the
// client's request for the ListJobs 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 ListJobs for more information on using the ListJobs
// 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 ListJobsRequest method.
//	req, resp := client.ListJobsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListJobs
func (c *Glue) ListJobsRequest(input *ListJobsInput) (req *request.Request, output *ListJobsOutput) {
	op := &request.Operation{
		Name:       opListJobs,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListJobsInput{}
	}

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

// ListJobs API operation for AWS Glue.
//
// Retrieves the names of all job resources in this Amazon Web Services account,
// or the resources with the specified tag. This operation allows you to see
// which resources are available in your account, and their names.
//
// This operation takes the optional Tags field, which you can use as a filter
// on the response so that tagged resources can be retrieved as a group. If
// you choose to use tags filtering, only resources with the tag are retrieved.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListJobs for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListJobs
func (c *Glue) ListJobs(input *ListJobsInput) (*ListJobsOutput, error) {
	req, out := c.ListJobsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListMLTransforms = "ListMLTransforms"

// ListMLTransformsRequest generates a "aws/request.Request" representing the
// client's request for the ListMLTransforms 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 ListMLTransforms for more information on using the ListMLTransforms
// 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 ListMLTransformsRequest method.
//	req, resp := client.ListMLTransformsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListMLTransforms
func (c *Glue) ListMLTransformsRequest(input *ListMLTransformsInput) (req *request.Request, output *ListMLTransformsOutput) {
	op := &request.Operation{
		Name:       opListMLTransforms,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListMLTransformsInput{}
	}

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

// ListMLTransforms API operation for AWS Glue.
//
// Retrieves a sortable, filterable list of existing Glue machine learning transforms
// in this Amazon Web Services account, or the resources with the specified
// tag. This operation takes the optional Tags field, which you can use as a
// filter of the responses so that tagged resources can be retrieved as a group.
// If you choose to use tag filtering, only resources with the tags are retrieved.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListMLTransforms for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListMLTransforms
func (c *Glue) ListMLTransforms(input *ListMLTransformsInput) (*ListMLTransformsOutput, error) {
	req, out := c.ListMLTransformsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListRegistries = "ListRegistries"

// ListRegistriesRequest generates a "aws/request.Request" representing the
// client's request for the ListRegistries 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 ListRegistries for more information on using the ListRegistries
// 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 ListRegistriesRequest method.
//	req, resp := client.ListRegistriesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListRegistries
func (c *Glue) ListRegistriesRequest(input *ListRegistriesInput) (req *request.Request, output *ListRegistriesOutput) {
	op := &request.Operation{
		Name:       opListRegistries,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListRegistriesInput{}
	}

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

// ListRegistries API operation for AWS Glue.
//
// Returns a list of registries that you have created, with minimal registry
// information. Registries in the Deleting status will not be included in the
// results. Empty results will be returned if there are no registries available.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListRegistries for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListRegistries
func (c *Glue) ListRegistries(input *ListRegistriesInput) (*ListRegistriesOutput, error) {
	req, out := c.ListRegistriesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListSchemaVersions = "ListSchemaVersions"

// ListSchemaVersionsRequest generates a "aws/request.Request" representing the
// client's request for the ListSchemaVersions 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 ListSchemaVersions for more information on using the ListSchemaVersions
// 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 ListSchemaVersionsRequest method.
//	req, resp := client.ListSchemaVersionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListSchemaVersions
func (c *Glue) ListSchemaVersionsRequest(input *ListSchemaVersionsInput) (req *request.Request, output *ListSchemaVersionsOutput) {
	op := &request.Operation{
		Name:       opListSchemaVersions,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListSchemaVersionsInput{}
	}

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

// ListSchemaVersions API operation for AWS Glue.
//
// Returns a list of schema versions that you have created, with minimal information.
// Schema versions in Deleted status will not be included in the results. Empty
// results will be returned if there are no schema versions available.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListSchemaVersions for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListSchemaVersions
func (c *Glue) ListSchemaVersions(input *ListSchemaVersionsInput) (*ListSchemaVersionsOutput, error) {
	req, out := c.ListSchemaVersionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListSchemas = "ListSchemas"

// ListSchemasRequest generates a "aws/request.Request" representing the
// client's request for the ListSchemas 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 ListSchemas for more information on using the ListSchemas
// 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 ListSchemasRequest method.
//	req, resp := client.ListSchemasRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListSchemas
func (c *Glue) ListSchemasRequest(input *ListSchemasInput) (req *request.Request, output *ListSchemasOutput) {
	op := &request.Operation{
		Name:       opListSchemas,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListSchemasInput{}
	}

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

// ListSchemas API operation for AWS Glue.
//
// Returns a list of schemas with minimal details. Schemas in Deleting status
// will not be included in the results. Empty results will be returned if there
// are no schemas available.
//
// When the RegistryId is not provided, all the schemas across registries will
// be part of the API response.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListSchemas for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListSchemas
func (c *Glue) ListSchemas(input *ListSchemasInput) (*ListSchemasOutput, error) {
	req, out := c.ListSchemasRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListSessions = "ListSessions"

// ListSessionsRequest generates a "aws/request.Request" representing the
// client's request for the ListSessions 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 ListSessions for more information on using the ListSessions
// 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 ListSessionsRequest method.
//	req, resp := client.ListSessionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListSessions
func (c *Glue) ListSessionsRequest(input *ListSessionsInput) (req *request.Request, output *ListSessionsOutput) {
	op := &request.Operation{
		Name:       opListSessions,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListSessionsInput{}
	}

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

// ListSessions API operation for AWS Glue.
//
// Retrieve a list of sessions.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListSessions for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListSessions
func (c *Glue) ListSessions(input *ListSessionsInput) (*ListSessionsOutput, error) {
	req, out := c.ListSessionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListStatements = "ListStatements"

// ListStatementsRequest generates a "aws/request.Request" representing the
// client's request for the ListStatements 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 ListStatements for more information on using the ListStatements
// 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 ListStatementsRequest method.
//	req, resp := client.ListStatementsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListStatements
func (c *Glue) ListStatementsRequest(input *ListStatementsInput) (req *request.Request, output *ListStatementsOutput) {
	op := &request.Operation{
		Name:       opListStatements,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ListStatementsInput{}
	}

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

// ListStatements API operation for AWS Glue.
//
// Lists statements for the session.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListStatements for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - IllegalSessionStateException
//     The session is in an invalid state to perform a requested operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListStatements
func (c *Glue) ListStatements(input *ListStatementsInput) (*ListStatementsOutput, error) {
	req, out := c.ListStatementsRequest(input)
	return out, req.Send()
}

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

const opListTableOptimizerRuns = "ListTableOptimizerRuns"

// ListTableOptimizerRunsRequest generates a "aws/request.Request" representing the
// client's request for the ListTableOptimizerRuns 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 ListTableOptimizerRuns for more information on using the ListTableOptimizerRuns
// 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 ListTableOptimizerRunsRequest method.
//	req, resp := client.ListTableOptimizerRunsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListTableOptimizerRuns
func (c *Glue) ListTableOptimizerRunsRequest(input *ListTableOptimizerRunsInput) (req *request.Request, output *ListTableOptimizerRunsOutput) {
	op := &request.Operation{
		Name:       opListTableOptimizerRuns,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListTableOptimizerRunsInput{}
	}

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

// ListTableOptimizerRuns API operation for AWS Glue.
//
// Lists the history of previous optimizer runs for a specific table.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListTableOptimizerRuns for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListTableOptimizerRuns
func (c *Glue) ListTableOptimizerRuns(input *ListTableOptimizerRunsInput) (*ListTableOptimizerRunsOutput, error) {
	req, out := c.ListTableOptimizerRunsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListTriggers = "ListTriggers"

// ListTriggersRequest generates a "aws/request.Request" representing the
// client's request for the ListTriggers 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 ListTriggers for more information on using the ListTriggers
// 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 ListTriggersRequest method.
//	req, resp := client.ListTriggersRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListTriggers
func (c *Glue) ListTriggersRequest(input *ListTriggersInput) (req *request.Request, output *ListTriggersOutput) {
	op := &request.Operation{
		Name:       opListTriggers,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListTriggersInput{}
	}

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

// ListTriggers API operation for AWS Glue.
//
// Retrieves the names of all trigger resources in this Amazon Web Services
// account, or the resources with the specified tag. This operation allows you
// to see which resources are available in your account, and their names.
//
// This operation takes the optional Tags field, which you can use as a filter
// on the response so that tagged resources can be retrieved as a group. If
// you choose to use tags filtering, only resources with the tag are retrieved.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListTriggers for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListTriggers
func (c *Glue) ListTriggers(input *ListTriggersInput) (*ListTriggersOutput, error) {
	req, out := c.ListTriggersRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListUsageProfiles = "ListUsageProfiles"

// ListUsageProfilesRequest generates a "aws/request.Request" representing the
// client's request for the ListUsageProfiles 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 ListUsageProfiles for more information on using the ListUsageProfiles
// 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 ListUsageProfilesRequest method.
//	req, resp := client.ListUsageProfilesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListUsageProfiles
func (c *Glue) ListUsageProfilesRequest(input *ListUsageProfilesInput) (req *request.Request, output *ListUsageProfilesOutput) {
	op := &request.Operation{
		Name:       opListUsageProfiles,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListUsageProfilesInput{}
	}

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

// ListUsageProfiles API operation for AWS Glue.
//
// List all the Glue usage profiles.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListUsageProfiles for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationNotSupportedException
//     The operation is not available in the region.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListUsageProfiles
func (c *Glue) ListUsageProfiles(input *ListUsageProfilesInput) (*ListUsageProfilesOutput, error) {
	req, out := c.ListUsageProfilesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListWorkflows = "ListWorkflows"

// ListWorkflowsRequest generates a "aws/request.Request" representing the
// client's request for the ListWorkflows 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 ListWorkflows for more information on using the ListWorkflows
// 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 ListWorkflowsRequest method.
//	req, resp := client.ListWorkflowsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListWorkflows
func (c *Glue) ListWorkflowsRequest(input *ListWorkflowsInput) (req *request.Request, output *ListWorkflowsOutput) {
	op := &request.Operation{
		Name:       opListWorkflows,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListWorkflowsInput{}
	}

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

// ListWorkflows API operation for AWS Glue.
//
// Lists names of workflows created in the account.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ListWorkflows for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ListWorkflows
func (c *Glue) ListWorkflows(input *ListWorkflowsInput) (*ListWorkflowsOutput, error) {
	req, out := c.ListWorkflowsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opPutDataCatalogEncryptionSettings = "PutDataCatalogEncryptionSettings"

// PutDataCatalogEncryptionSettingsRequest generates a "aws/request.Request" representing the
// client's request for the PutDataCatalogEncryptionSettings 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 PutDataCatalogEncryptionSettings for more information on using the PutDataCatalogEncryptionSettings
// 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 PutDataCatalogEncryptionSettingsRequest method.
//	req, resp := client.PutDataCatalogEncryptionSettingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/PutDataCatalogEncryptionSettings
func (c *Glue) PutDataCatalogEncryptionSettingsRequest(input *PutDataCatalogEncryptionSettingsInput) (req *request.Request, output *PutDataCatalogEncryptionSettingsOutput) {
	op := &request.Operation{
		Name:       opPutDataCatalogEncryptionSettings,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &PutDataCatalogEncryptionSettingsInput{}
	}

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

// PutDataCatalogEncryptionSettings API operation for AWS Glue.
//
// Sets the security configuration for a specified catalog. After the configuration
// has been set, the specified encryption is applied to every catalog write
// thereafter.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation PutDataCatalogEncryptionSettings for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/PutDataCatalogEncryptionSettings
func (c *Glue) PutDataCatalogEncryptionSettings(input *PutDataCatalogEncryptionSettingsInput) (*PutDataCatalogEncryptionSettingsOutput, error) {
	req, out := c.PutDataCatalogEncryptionSettingsRequest(input)
	return out, req.Send()
}

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

const opPutResourcePolicy = "PutResourcePolicy"

// PutResourcePolicyRequest generates a "aws/request.Request" representing the
// client's request for the PutResourcePolicy 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 PutResourcePolicy for more information on using the PutResourcePolicy
// 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 PutResourcePolicyRequest method.
//	req, resp := client.PutResourcePolicyRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/PutResourcePolicy
func (c *Glue) PutResourcePolicyRequest(input *PutResourcePolicyInput) (req *request.Request, output *PutResourcePolicyOutput) {
	op := &request.Operation{
		Name:       opPutResourcePolicy,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &PutResourcePolicyInput{}
	}

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

// PutResourcePolicy API operation for AWS Glue.
//
// Sets the Data Catalog resource policy for access control.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation PutResourcePolicy for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - ConditionCheckFailureException
//     A specified condition was not satisfied.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/PutResourcePolicy
func (c *Glue) PutResourcePolicy(input *PutResourcePolicyInput) (*PutResourcePolicyOutput, error) {
	req, out := c.PutResourcePolicyRequest(input)
	return out, req.Send()
}

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

const opPutSchemaVersionMetadata = "PutSchemaVersionMetadata"

// PutSchemaVersionMetadataRequest generates a "aws/request.Request" representing the
// client's request for the PutSchemaVersionMetadata 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 PutSchemaVersionMetadata for more information on using the PutSchemaVersionMetadata
// 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 PutSchemaVersionMetadataRequest method.
//	req, resp := client.PutSchemaVersionMetadataRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/PutSchemaVersionMetadata
func (c *Glue) PutSchemaVersionMetadataRequest(input *PutSchemaVersionMetadataInput) (req *request.Request, output *PutSchemaVersionMetadataOutput) {
	op := &request.Operation{
		Name:       opPutSchemaVersionMetadata,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &PutSchemaVersionMetadataInput{}
	}

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

// PutSchemaVersionMetadata API operation for AWS Glue.
//
// Puts the metadata key value pair for a specified schema version ID. A maximum
// of 10 key value pairs will be allowed per schema version. They can be added
// over one or more calls.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation PutSchemaVersionMetadata for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/PutSchemaVersionMetadata
func (c *Glue) PutSchemaVersionMetadata(input *PutSchemaVersionMetadataInput) (*PutSchemaVersionMetadataOutput, error) {
	req, out := c.PutSchemaVersionMetadataRequest(input)
	return out, req.Send()
}

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

const opPutWorkflowRunProperties = "PutWorkflowRunProperties"

// PutWorkflowRunPropertiesRequest generates a "aws/request.Request" representing the
// client's request for the PutWorkflowRunProperties 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 PutWorkflowRunProperties for more information on using the PutWorkflowRunProperties
// 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 PutWorkflowRunPropertiesRequest method.
//	req, resp := client.PutWorkflowRunPropertiesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/PutWorkflowRunProperties
func (c *Glue) PutWorkflowRunPropertiesRequest(input *PutWorkflowRunPropertiesInput) (req *request.Request, output *PutWorkflowRunPropertiesOutput) {
	op := &request.Operation{
		Name:       opPutWorkflowRunProperties,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &PutWorkflowRunPropertiesInput{}
	}

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

// PutWorkflowRunProperties API operation for AWS Glue.
//
// Puts the specified workflow run properties for the given workflow run. If
// a property already exists for the specified run, then it overrides the value
// otherwise adds the property to existing properties.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation PutWorkflowRunProperties for usage and error information.
//
// Returned Error Types:
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/PutWorkflowRunProperties
func (c *Glue) PutWorkflowRunProperties(input *PutWorkflowRunPropertiesInput) (*PutWorkflowRunPropertiesOutput, error) {
	req, out := c.PutWorkflowRunPropertiesRequest(input)
	return out, req.Send()
}

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

const opQuerySchemaVersionMetadata = "QuerySchemaVersionMetadata"

// QuerySchemaVersionMetadataRequest generates a "aws/request.Request" representing the
// client's request for the QuerySchemaVersionMetadata 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 QuerySchemaVersionMetadata for more information on using the QuerySchemaVersionMetadata
// 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 QuerySchemaVersionMetadataRequest method.
//	req, resp := client.QuerySchemaVersionMetadataRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/QuerySchemaVersionMetadata
func (c *Glue) QuerySchemaVersionMetadataRequest(input *QuerySchemaVersionMetadataInput) (req *request.Request, output *QuerySchemaVersionMetadataOutput) {
	op := &request.Operation{
		Name:       opQuerySchemaVersionMetadata,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &QuerySchemaVersionMetadataInput{}
	}

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

// QuerySchemaVersionMetadata API operation for AWS Glue.
//
// Queries for the schema version metadata information.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation QuerySchemaVersionMetadata for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/QuerySchemaVersionMetadata
func (c *Glue) QuerySchemaVersionMetadata(input *QuerySchemaVersionMetadataInput) (*QuerySchemaVersionMetadataOutput, error) {
	req, out := c.QuerySchemaVersionMetadataRequest(input)
	return out, req.Send()
}

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

const opRegisterSchemaVersion = "RegisterSchemaVersion"

// RegisterSchemaVersionRequest generates a "aws/request.Request" representing the
// client's request for the RegisterSchemaVersion 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 RegisterSchemaVersion for more information on using the RegisterSchemaVersion
// 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 RegisterSchemaVersionRequest method.
//	req, resp := client.RegisterSchemaVersionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/RegisterSchemaVersion
func (c *Glue) RegisterSchemaVersionRequest(input *RegisterSchemaVersionInput) (req *request.Request, output *RegisterSchemaVersionOutput) {
	op := &request.Operation{
		Name:       opRegisterSchemaVersion,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RegisterSchemaVersionInput{}
	}

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

// RegisterSchemaVersion API operation for AWS Glue.
//
// Adds a new version to the existing schema. Returns an error if new version
// of schema does not meet the compatibility requirements of the schema set.
// This API will not create a new schema set and will return a 404 error if
// the schema set is not already present in the Schema Registry.
//
// If this is the first schema definition to be registered in the Schema Registry,
// this API will store the schema version and return immediately. Otherwise,
// this call has the potential to run longer than other operations due to compatibility
// modes. You can call the GetSchemaVersion API with the SchemaVersionId to
// check compatibility modes.
//
// If the same schema definition is already stored in Schema Registry as a version,
// the schema ID of the existing schema is returned to the caller.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation RegisterSchemaVersion for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/RegisterSchemaVersion
func (c *Glue) RegisterSchemaVersion(input *RegisterSchemaVersionInput) (*RegisterSchemaVersionOutput, error) {
	req, out := c.RegisterSchemaVersionRequest(input)
	return out, req.Send()
}

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

const opRemoveSchemaVersionMetadata = "RemoveSchemaVersionMetadata"

// RemoveSchemaVersionMetadataRequest generates a "aws/request.Request" representing the
// client's request for the RemoveSchemaVersionMetadata 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 RemoveSchemaVersionMetadata for more information on using the RemoveSchemaVersionMetadata
// 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 RemoveSchemaVersionMetadataRequest method.
//	req, resp := client.RemoveSchemaVersionMetadataRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/RemoveSchemaVersionMetadata
func (c *Glue) RemoveSchemaVersionMetadataRequest(input *RemoveSchemaVersionMetadataInput) (req *request.Request, output *RemoveSchemaVersionMetadataOutput) {
	op := &request.Operation{
		Name:       opRemoveSchemaVersionMetadata,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RemoveSchemaVersionMetadataInput{}
	}

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

// RemoveSchemaVersionMetadata API operation for AWS Glue.
//
// Removes a key value pair from the schema version metadata for the specified
// schema version 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 AWS Glue's
// API operation RemoveSchemaVersionMetadata for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/RemoveSchemaVersionMetadata
func (c *Glue) RemoveSchemaVersionMetadata(input *RemoveSchemaVersionMetadataInput) (*RemoveSchemaVersionMetadataOutput, error) {
	req, out := c.RemoveSchemaVersionMetadataRequest(input)
	return out, req.Send()
}

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

const opResetJobBookmark = "ResetJobBookmark"

// ResetJobBookmarkRequest generates a "aws/request.Request" representing the
// client's request for the ResetJobBookmark 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 ResetJobBookmark for more information on using the ResetJobBookmark
// 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 ResetJobBookmarkRequest method.
//	req, resp := client.ResetJobBookmarkRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ResetJobBookmark
func (c *Glue) ResetJobBookmarkRequest(input *ResetJobBookmarkInput) (req *request.Request, output *ResetJobBookmarkOutput) {
	op := &request.Operation{
		Name:       opResetJobBookmark,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ResetJobBookmarkInput{}
	}

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

// ResetJobBookmark API operation for AWS Glue.
//
// Resets a bookmark entry.
//
// For more information about enabling and using job bookmarks, see:
//
//   - Tracking processed data using job bookmarks (https://docs.aws.amazon.com/glue/latest/dg/monitor-continuations.html)
//
//   - Job parameters used by Glue (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html)
//
//   - Job structure (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-Job)
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ResetJobBookmark for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ResetJobBookmark
func (c *Glue) ResetJobBookmark(input *ResetJobBookmarkInput) (*ResetJobBookmarkOutput, error) {
	req, out := c.ResetJobBookmarkRequest(input)
	return out, req.Send()
}

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

const opResumeWorkflowRun = "ResumeWorkflowRun"

// ResumeWorkflowRunRequest generates a "aws/request.Request" representing the
// client's request for the ResumeWorkflowRun 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 ResumeWorkflowRun for more information on using the ResumeWorkflowRun
// 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 ResumeWorkflowRunRequest method.
//	req, resp := client.ResumeWorkflowRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ResumeWorkflowRun
func (c *Glue) ResumeWorkflowRunRequest(input *ResumeWorkflowRunInput) (req *request.Request, output *ResumeWorkflowRunOutput) {
	op := &request.Operation{
		Name:       opResumeWorkflowRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &ResumeWorkflowRunInput{}
	}

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

// ResumeWorkflowRun API operation for AWS Glue.
//
// Restarts selected nodes of a previous partially completed workflow run and
// resumes the workflow run. The selected nodes and all nodes that are downstream
// from the selected nodes are run.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation ResumeWorkflowRun for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ConcurrentRunsExceededException
//     Too many jobs are being run concurrently.
//
//   - IllegalWorkflowStateException
//     The workflow is in an invalid state to perform a requested operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/ResumeWorkflowRun
func (c *Glue) ResumeWorkflowRun(input *ResumeWorkflowRunInput) (*ResumeWorkflowRunOutput, error) {
	req, out := c.ResumeWorkflowRunRequest(input)
	return out, req.Send()
}

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

const opRunStatement = "RunStatement"

// RunStatementRequest generates a "aws/request.Request" representing the
// client's request for the RunStatement 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 RunStatement for more information on using the RunStatement
// 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 RunStatementRequest method.
//	req, resp := client.RunStatementRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/RunStatement
func (c *Glue) RunStatementRequest(input *RunStatementInput) (req *request.Request, output *RunStatementOutput) {
	op := &request.Operation{
		Name:       opRunStatement,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &RunStatementInput{}
	}

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

// RunStatement API operation for AWS Glue.
//
// Executes the statement.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation RunStatement for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - ValidationException
//     A value could not be validated.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - IllegalSessionStateException
//     The session is in an invalid state to perform a requested operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/RunStatement
func (c *Glue) RunStatement(input *RunStatementInput) (*RunStatementOutput, error) {
	req, out := c.RunStatementRequest(input)
	return out, req.Send()
}

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

const opSearchTables = "SearchTables"

// SearchTablesRequest generates a "aws/request.Request" representing the
// client's request for the SearchTables 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 SearchTables for more information on using the SearchTables
// 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 SearchTablesRequest method.
//	req, resp := client.SearchTablesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/SearchTables
func (c *Glue) SearchTablesRequest(input *SearchTablesInput) (req *request.Request, output *SearchTablesOutput) {
	op := &request.Operation{
		Name:       opSearchTables,
		HTTPMethod: "POST",
		HTTPPath:   "/",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &SearchTablesInput{}
	}

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

// SearchTables API operation for AWS Glue.
//
// Searches a set of tables based on properties in the table metadata as well
// as on the parent database. You can search against text or filter conditions.
//
// You can only get tables that you have access to based on the security policies
// defined in Lake Formation. You need at least a read-only access to the table
// for it to be returned. If you do not have access to all the columns in the
// table, these columns will not be searched against when returning the list
// of tables back to you. If you have access to the columns but not the data
// in the columns, those columns and the associated metadata for those columns
// will be included in the search.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation SearchTables for usage and error information.
//
// Returned Error Types:
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/SearchTables
func (c *Glue) SearchTables(input *SearchTablesInput) (*SearchTablesOutput, error) {
	req, out := c.SearchTablesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opStartBlueprintRun = "StartBlueprintRun"

// StartBlueprintRunRequest generates a "aws/request.Request" representing the
// client's request for the StartBlueprintRun 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 StartBlueprintRun for more information on using the StartBlueprintRun
// 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 StartBlueprintRunRequest method.
//	req, resp := client.StartBlueprintRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartBlueprintRun
func (c *Glue) StartBlueprintRunRequest(input *StartBlueprintRunInput) (req *request.Request, output *StartBlueprintRunOutput) {
	op := &request.Operation{
		Name:       opStartBlueprintRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartBlueprintRunInput{}
	}

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

// StartBlueprintRun API operation for AWS Glue.
//
// Starts a new run of the specified blueprint.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StartBlueprintRun for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - IllegalBlueprintStateException
//     The blueprint is in an invalid state to perform a requested operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartBlueprintRun
func (c *Glue) StartBlueprintRun(input *StartBlueprintRunInput) (*StartBlueprintRunOutput, error) {
	req, out := c.StartBlueprintRunRequest(input)
	return out, req.Send()
}

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

const opStartColumnStatisticsTaskRun = "StartColumnStatisticsTaskRun"

// StartColumnStatisticsTaskRunRequest generates a "aws/request.Request" representing the
// client's request for the StartColumnStatisticsTaskRun 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 StartColumnStatisticsTaskRun for more information on using the StartColumnStatisticsTaskRun
// 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 StartColumnStatisticsTaskRunRequest method.
//	req, resp := client.StartColumnStatisticsTaskRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartColumnStatisticsTaskRun
func (c *Glue) StartColumnStatisticsTaskRunRequest(input *StartColumnStatisticsTaskRunInput) (req *request.Request, output *StartColumnStatisticsTaskRunOutput) {
	op := &request.Operation{
		Name:       opStartColumnStatisticsTaskRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartColumnStatisticsTaskRunInput{}
	}

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

// StartColumnStatisticsTaskRun API operation for AWS Glue.
//
// Starts a column statistics task run, for a specified table and columns.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StartColumnStatisticsTaskRun for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - ColumnStatisticsTaskRunningException
//     An exception thrown when you try to start another job while running a column
//     stats generation job.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - InvalidInputException
//     The input provided was not valid.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartColumnStatisticsTaskRun
func (c *Glue) StartColumnStatisticsTaskRun(input *StartColumnStatisticsTaskRunInput) (*StartColumnStatisticsTaskRunOutput, error) {
	req, out := c.StartColumnStatisticsTaskRunRequest(input)
	return out, req.Send()
}

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

const opStartCrawler = "StartCrawler"

// StartCrawlerRequest generates a "aws/request.Request" representing the
// client's request for the StartCrawler 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 StartCrawler for more information on using the StartCrawler
// 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 StartCrawlerRequest method.
//	req, resp := client.StartCrawlerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartCrawler
func (c *Glue) StartCrawlerRequest(input *StartCrawlerInput) (req *request.Request, output *StartCrawlerOutput) {
	op := &request.Operation{
		Name:       opStartCrawler,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartCrawlerInput{}
	}

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

// StartCrawler API operation for AWS Glue.
//
// Starts a crawl using the specified crawler, regardless of what is scheduled.
// If the crawler is already running, returns a CrawlerRunningException (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-exceptions.html#aws-glue-api-exceptions-CrawlerRunningException).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StartCrawler for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - CrawlerRunningException
//     The operation cannot be performed because the crawler is already running.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartCrawler
func (c *Glue) StartCrawler(input *StartCrawlerInput) (*StartCrawlerOutput, error) {
	req, out := c.StartCrawlerRequest(input)
	return out, req.Send()
}

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

const opStartCrawlerSchedule = "StartCrawlerSchedule"

// StartCrawlerScheduleRequest generates a "aws/request.Request" representing the
// client's request for the StartCrawlerSchedule 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 StartCrawlerSchedule for more information on using the StartCrawlerSchedule
// 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 StartCrawlerScheduleRequest method.
//	req, resp := client.StartCrawlerScheduleRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartCrawlerSchedule
func (c *Glue) StartCrawlerScheduleRequest(input *StartCrawlerScheduleInput) (req *request.Request, output *StartCrawlerScheduleOutput) {
	op := &request.Operation{
		Name:       opStartCrawlerSchedule,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartCrawlerScheduleInput{}
	}

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

// StartCrawlerSchedule API operation for AWS Glue.
//
// Changes the schedule state of the specified crawler to SCHEDULED, unless
// the crawler is already running or the schedule state is already SCHEDULED.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StartCrawlerSchedule for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - SchedulerRunningException
//     The specified scheduler is already running.
//
//   - SchedulerTransitioningException
//     The specified scheduler is transitioning.
//
//   - NoScheduleException
//     There is no applicable schedule.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartCrawlerSchedule
func (c *Glue) StartCrawlerSchedule(input *StartCrawlerScheduleInput) (*StartCrawlerScheduleOutput, error) {
	req, out := c.StartCrawlerScheduleRequest(input)
	return out, req.Send()
}

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

const opStartDataQualityRuleRecommendationRun = "StartDataQualityRuleRecommendationRun"

// StartDataQualityRuleRecommendationRunRequest generates a "aws/request.Request" representing the
// client's request for the StartDataQualityRuleRecommendationRun 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 StartDataQualityRuleRecommendationRun for more information on using the StartDataQualityRuleRecommendationRun
// 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 StartDataQualityRuleRecommendationRunRequest method.
//	req, resp := client.StartDataQualityRuleRecommendationRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartDataQualityRuleRecommendationRun
func (c *Glue) StartDataQualityRuleRecommendationRunRequest(input *StartDataQualityRuleRecommendationRunInput) (req *request.Request, output *StartDataQualityRuleRecommendationRunOutput) {
	op := &request.Operation{
		Name:       opStartDataQualityRuleRecommendationRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartDataQualityRuleRecommendationRunInput{}
	}

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

// StartDataQualityRuleRecommendationRun API operation for AWS Glue.
//
// Starts a recommendation run that is used to generate rules when you don't
// know what rules to write. Glue Data Quality analyzes the data and comes up
// with recommendations for a potential ruleset. You can then triage the ruleset
// and modify the generated ruleset to your liking.
//
// Recommendation runs are automatically deleted after 90 days.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StartDataQualityRuleRecommendationRun for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - ConflictException
//     The CreatePartitions API was called on a table that has indexes enabled.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartDataQualityRuleRecommendationRun
func (c *Glue) StartDataQualityRuleRecommendationRun(input *StartDataQualityRuleRecommendationRunInput) (*StartDataQualityRuleRecommendationRunOutput, error) {
	req, out := c.StartDataQualityRuleRecommendationRunRequest(input)
	return out, req.Send()
}

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

const opStartDataQualityRulesetEvaluationRun = "StartDataQualityRulesetEvaluationRun"

// StartDataQualityRulesetEvaluationRunRequest generates a "aws/request.Request" representing the
// client's request for the StartDataQualityRulesetEvaluationRun 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 StartDataQualityRulesetEvaluationRun for more information on using the StartDataQualityRulesetEvaluationRun
// 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 StartDataQualityRulesetEvaluationRunRequest method.
//	req, resp := client.StartDataQualityRulesetEvaluationRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartDataQualityRulesetEvaluationRun
func (c *Glue) StartDataQualityRulesetEvaluationRunRequest(input *StartDataQualityRulesetEvaluationRunInput) (req *request.Request, output *StartDataQualityRulesetEvaluationRunOutput) {
	op := &request.Operation{
		Name:       opStartDataQualityRulesetEvaluationRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartDataQualityRulesetEvaluationRunInput{}
	}

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

// StartDataQualityRulesetEvaluationRun API operation for AWS Glue.
//
// Once you have a ruleset definition (either recommended or your own), you
// call this operation to evaluate the ruleset against a data source (Glue table).
// The evaluation computes results which you can retrieve with the GetDataQualityResult
// API.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StartDataQualityRulesetEvaluationRun for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - ConflictException
//     The CreatePartitions API was called on a table that has indexes enabled.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartDataQualityRulesetEvaluationRun
func (c *Glue) StartDataQualityRulesetEvaluationRun(input *StartDataQualityRulesetEvaluationRunInput) (*StartDataQualityRulesetEvaluationRunOutput, error) {
	req, out := c.StartDataQualityRulesetEvaluationRunRequest(input)
	return out, req.Send()
}

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

const opStartExportLabelsTaskRun = "StartExportLabelsTaskRun"

// StartExportLabelsTaskRunRequest generates a "aws/request.Request" representing the
// client's request for the StartExportLabelsTaskRun 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 StartExportLabelsTaskRun for more information on using the StartExportLabelsTaskRun
// 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 StartExportLabelsTaskRunRequest method.
//	req, resp := client.StartExportLabelsTaskRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartExportLabelsTaskRun
func (c *Glue) StartExportLabelsTaskRunRequest(input *StartExportLabelsTaskRunInput) (req *request.Request, output *StartExportLabelsTaskRunOutput) {
	op := &request.Operation{
		Name:       opStartExportLabelsTaskRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartExportLabelsTaskRunInput{}
	}

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

// StartExportLabelsTaskRun API operation for AWS Glue.
//
// Begins an asynchronous task to export all labeled data for a particular transform.
// This task is the only label-related API call that is not part of the typical
// active learning workflow. You typically use StartExportLabelsTaskRun when
// you want to work with all of your existing labels at the same time, such
// as when you want to remove or change labels that were previously submitted
// as truth. This API operation accepts the TransformId whose labels you want
// to export and an Amazon Simple Storage Service (Amazon S3) path to export
// the labels to. The operation returns a TaskRunId. You can check on the status
// of your task run by calling the GetMLTaskRun API.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StartExportLabelsTaskRun for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartExportLabelsTaskRun
func (c *Glue) StartExportLabelsTaskRun(input *StartExportLabelsTaskRunInput) (*StartExportLabelsTaskRunOutput, error) {
	req, out := c.StartExportLabelsTaskRunRequest(input)
	return out, req.Send()
}

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

const opStartImportLabelsTaskRun = "StartImportLabelsTaskRun"

// StartImportLabelsTaskRunRequest generates a "aws/request.Request" representing the
// client's request for the StartImportLabelsTaskRun 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 StartImportLabelsTaskRun for more information on using the StartImportLabelsTaskRun
// 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 StartImportLabelsTaskRunRequest method.
//	req, resp := client.StartImportLabelsTaskRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartImportLabelsTaskRun
func (c *Glue) StartImportLabelsTaskRunRequest(input *StartImportLabelsTaskRunInput) (req *request.Request, output *StartImportLabelsTaskRunOutput) {
	op := &request.Operation{
		Name:       opStartImportLabelsTaskRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartImportLabelsTaskRunInput{}
	}

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

// StartImportLabelsTaskRun API operation for AWS Glue.
//
// Enables you to provide additional labels (examples of truth) to be used to
// teach the machine learning transform and improve its quality. This API operation
// is generally used as part of the active learning workflow that starts with
// the StartMLLabelingSetGenerationTaskRun call and that ultimately results
// in improving the quality of your machine learning transform.
//
// After the StartMLLabelingSetGenerationTaskRun finishes, Glue machine learning
// will have generated a series of questions for humans to answer. (Answering
// these questions is often called 'labeling' in the machine learning workflows).
// In the case of the FindMatches transform, these questions are of the form,
// “What is the correct way to group these rows together into groups composed
// entirely of matching records?” After the labeling process is finished,
// users upload their answers/labels with a call to StartImportLabelsTaskRun.
// After StartImportLabelsTaskRun finishes, all future runs of the machine learning
// transform use the new and improved labels and perform a higher-quality transformation.
//
// By default, StartMLLabelingSetGenerationTaskRun continually learns from and
// combines all labels that you upload unless you set Replace to true. If you
// set Replace to true, StartImportLabelsTaskRun deletes and forgets all previously
// uploaded labels and learns only from the exact set that you upload. Replacing
// labels can be helpful if you realize that you previously uploaded incorrect
// labels, and you believe that they are having a negative effect on your transform
// quality.
//
// You can check on the status of your task run by calling the GetMLTaskRun
// 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 AWS Glue's
// API operation StartImportLabelsTaskRun for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartImportLabelsTaskRun
func (c *Glue) StartImportLabelsTaskRun(input *StartImportLabelsTaskRunInput) (*StartImportLabelsTaskRunOutput, error) {
	req, out := c.StartImportLabelsTaskRunRequest(input)
	return out, req.Send()
}

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

const opStartJobRun = "StartJobRun"

// StartJobRunRequest generates a "aws/request.Request" representing the
// client's request for the StartJobRun 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 StartJobRun for more information on using the StartJobRun
// 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 StartJobRunRequest method.
//	req, resp := client.StartJobRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartJobRun
func (c *Glue) StartJobRunRequest(input *StartJobRunInput) (req *request.Request, output *StartJobRunOutput) {
	op := &request.Operation{
		Name:       opStartJobRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartJobRunInput{}
	}

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

// StartJobRun API operation for AWS Glue.
//
// Starts a job run using a job definition.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StartJobRun for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - ConcurrentRunsExceededException
//     Too many jobs are being run concurrently.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartJobRun
func (c *Glue) StartJobRun(input *StartJobRunInput) (*StartJobRunOutput, error) {
	req, out := c.StartJobRunRequest(input)
	return out, req.Send()
}

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

const opStartMLEvaluationTaskRun = "StartMLEvaluationTaskRun"

// StartMLEvaluationTaskRunRequest generates a "aws/request.Request" representing the
// client's request for the StartMLEvaluationTaskRun 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 StartMLEvaluationTaskRun for more information on using the StartMLEvaluationTaskRun
// 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 StartMLEvaluationTaskRunRequest method.
//	req, resp := client.StartMLEvaluationTaskRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartMLEvaluationTaskRun
func (c *Glue) StartMLEvaluationTaskRunRequest(input *StartMLEvaluationTaskRunInput) (req *request.Request, output *StartMLEvaluationTaskRunOutput) {
	op := &request.Operation{
		Name:       opStartMLEvaluationTaskRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartMLEvaluationTaskRunInput{}
	}

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

// StartMLEvaluationTaskRun API operation for AWS Glue.
//
// Starts a task to estimate the quality of the transform.
//
// When you provide label sets as examples of truth, Glue machine learning uses
// some of those examples to learn from them. The rest of the labels are used
// as a test to estimate quality.
//
// Returns a unique identifier for the run. You can call GetMLTaskRun to get
// more information about the stats of the EvaluationTaskRun.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StartMLEvaluationTaskRun for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - ConcurrentRunsExceededException
//     Too many jobs are being run concurrently.
//
//   - MLTransformNotReadyException
//     The machine learning transform is not ready to run.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartMLEvaluationTaskRun
func (c *Glue) StartMLEvaluationTaskRun(input *StartMLEvaluationTaskRunInput) (*StartMLEvaluationTaskRunOutput, error) {
	req, out := c.StartMLEvaluationTaskRunRequest(input)
	return out, req.Send()
}

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

const opStartMLLabelingSetGenerationTaskRun = "StartMLLabelingSetGenerationTaskRun"

// StartMLLabelingSetGenerationTaskRunRequest generates a "aws/request.Request" representing the
// client's request for the StartMLLabelingSetGenerationTaskRun 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 StartMLLabelingSetGenerationTaskRun for more information on using the StartMLLabelingSetGenerationTaskRun
// 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 StartMLLabelingSetGenerationTaskRunRequest method.
//	req, resp := client.StartMLLabelingSetGenerationTaskRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartMLLabelingSetGenerationTaskRun
func (c *Glue) StartMLLabelingSetGenerationTaskRunRequest(input *StartMLLabelingSetGenerationTaskRunInput) (req *request.Request, output *StartMLLabelingSetGenerationTaskRunOutput) {
	op := &request.Operation{
		Name:       opStartMLLabelingSetGenerationTaskRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartMLLabelingSetGenerationTaskRunInput{}
	}

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

// StartMLLabelingSetGenerationTaskRun API operation for AWS Glue.
//
// Starts the active learning workflow for your machine learning transform to
// improve the transform's quality by generating label sets and adding labels.
//
// When the StartMLLabelingSetGenerationTaskRun finishes, Glue will have generated
// a "labeling set" or a set of questions for humans to answer.
//
// In the case of the FindMatches transform, these questions are of the form,
// “What is the correct way to group these rows together into groups composed
// entirely of matching records?”
//
// After the labeling process is finished, you can upload your labels with a
// call to StartImportLabelsTaskRun. After StartImportLabelsTaskRun finishes,
// all future runs of the machine learning transform will use the new and improved
// labels and perform a higher-quality transformation.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StartMLLabelingSetGenerationTaskRun for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - ConcurrentRunsExceededException
//     Too many jobs are being run concurrently.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartMLLabelingSetGenerationTaskRun
func (c *Glue) StartMLLabelingSetGenerationTaskRun(input *StartMLLabelingSetGenerationTaskRunInput) (*StartMLLabelingSetGenerationTaskRunOutput, error) {
	req, out := c.StartMLLabelingSetGenerationTaskRunRequest(input)
	return out, req.Send()
}

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

const opStartTrigger = "StartTrigger"

// StartTriggerRequest generates a "aws/request.Request" representing the
// client's request for the StartTrigger 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 StartTrigger for more information on using the StartTrigger
// 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 StartTriggerRequest method.
//	req, resp := client.StartTriggerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartTrigger
func (c *Glue) StartTriggerRequest(input *StartTriggerInput) (req *request.Request, output *StartTriggerOutput) {
	op := &request.Operation{
		Name:       opStartTrigger,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartTriggerInput{}
	}

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

// StartTrigger API operation for AWS Glue.
//
// Starts an existing trigger. See Triggering Jobs (https://docs.aws.amazon.com/glue/latest/dg/trigger-job.html)
// for information about how different types of trigger are started.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StartTrigger for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - ConcurrentRunsExceededException
//     Too many jobs are being run concurrently.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartTrigger
func (c *Glue) StartTrigger(input *StartTriggerInput) (*StartTriggerOutput, error) {
	req, out := c.StartTriggerRequest(input)
	return out, req.Send()
}

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

const opStartWorkflowRun = "StartWorkflowRun"

// StartWorkflowRunRequest generates a "aws/request.Request" representing the
// client's request for the StartWorkflowRun 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 StartWorkflowRun for more information on using the StartWorkflowRun
// 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 StartWorkflowRunRequest method.
//	req, resp := client.StartWorkflowRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartWorkflowRun
func (c *Glue) StartWorkflowRunRequest(input *StartWorkflowRunInput) (req *request.Request, output *StartWorkflowRunOutput) {
	op := &request.Operation{
		Name:       opStartWorkflowRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StartWorkflowRunInput{}
	}

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

// StartWorkflowRun API operation for AWS Glue.
//
// Starts a new run of the specified workflow.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StartWorkflowRun for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - ConcurrentRunsExceededException
//     Too many jobs are being run concurrently.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StartWorkflowRun
func (c *Glue) StartWorkflowRun(input *StartWorkflowRunInput) (*StartWorkflowRunOutput, error) {
	req, out := c.StartWorkflowRunRequest(input)
	return out, req.Send()
}

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

const opStopColumnStatisticsTaskRun = "StopColumnStatisticsTaskRun"

// StopColumnStatisticsTaskRunRequest generates a "aws/request.Request" representing the
// client's request for the StopColumnStatisticsTaskRun 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 StopColumnStatisticsTaskRun for more information on using the StopColumnStatisticsTaskRun
// 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 StopColumnStatisticsTaskRunRequest method.
//	req, resp := client.StopColumnStatisticsTaskRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StopColumnStatisticsTaskRun
func (c *Glue) StopColumnStatisticsTaskRunRequest(input *StopColumnStatisticsTaskRunInput) (req *request.Request, output *StopColumnStatisticsTaskRunOutput) {
	op := &request.Operation{
		Name:       opStopColumnStatisticsTaskRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StopColumnStatisticsTaskRunInput{}
	}

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

// StopColumnStatisticsTaskRun API operation for AWS Glue.
//
// Stops a task run for the specified table.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StopColumnStatisticsTaskRun for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - ColumnStatisticsTaskNotRunningException
//     An exception thrown when you try to stop a task run when there is no task
//     running.
//
//   - ColumnStatisticsTaskStoppingException
//     An exception thrown when you try to stop a task run.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StopColumnStatisticsTaskRun
func (c *Glue) StopColumnStatisticsTaskRun(input *StopColumnStatisticsTaskRunInput) (*StopColumnStatisticsTaskRunOutput, error) {
	req, out := c.StopColumnStatisticsTaskRunRequest(input)
	return out, req.Send()
}

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

const opStopCrawler = "StopCrawler"

// StopCrawlerRequest generates a "aws/request.Request" representing the
// client's request for the StopCrawler 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 StopCrawler for more information on using the StopCrawler
// 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 StopCrawlerRequest method.
//	req, resp := client.StopCrawlerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StopCrawler
func (c *Glue) StopCrawlerRequest(input *StopCrawlerInput) (req *request.Request, output *StopCrawlerOutput) {
	op := &request.Operation{
		Name:       opStopCrawler,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StopCrawlerInput{}
	}

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

// StopCrawler API operation for AWS Glue.
//
// If the specified crawler is running, stops the crawl.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StopCrawler for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - CrawlerNotRunningException
//     The specified crawler is not running.
//
//   - CrawlerStoppingException
//     The specified crawler is stopping.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StopCrawler
func (c *Glue) StopCrawler(input *StopCrawlerInput) (*StopCrawlerOutput, error) {
	req, out := c.StopCrawlerRequest(input)
	return out, req.Send()
}

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

const opStopCrawlerSchedule = "StopCrawlerSchedule"

// StopCrawlerScheduleRequest generates a "aws/request.Request" representing the
// client's request for the StopCrawlerSchedule 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 StopCrawlerSchedule for more information on using the StopCrawlerSchedule
// 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 StopCrawlerScheduleRequest method.
//	req, resp := client.StopCrawlerScheduleRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StopCrawlerSchedule
func (c *Glue) StopCrawlerScheduleRequest(input *StopCrawlerScheduleInput) (req *request.Request, output *StopCrawlerScheduleOutput) {
	op := &request.Operation{
		Name:       opStopCrawlerSchedule,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StopCrawlerScheduleInput{}
	}

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

// StopCrawlerSchedule API operation for AWS Glue.
//
// Sets the schedule state of the specified crawler to NOT_SCHEDULED, but does
// not stop the crawler if it is already running.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StopCrawlerSchedule for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - SchedulerNotRunningException
//     The specified scheduler is not running.
//
//   - SchedulerTransitioningException
//     The specified scheduler is transitioning.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StopCrawlerSchedule
func (c *Glue) StopCrawlerSchedule(input *StopCrawlerScheduleInput) (*StopCrawlerScheduleOutput, error) {
	req, out := c.StopCrawlerScheduleRequest(input)
	return out, req.Send()
}

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

const opStopSession = "StopSession"

// StopSessionRequest generates a "aws/request.Request" representing the
// client's request for the StopSession 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 StopSession for more information on using the StopSession
// 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 StopSessionRequest method.
//	req, resp := client.StopSessionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StopSession
func (c *Glue) StopSessionRequest(input *StopSessionInput) (req *request.Request, output *StopSessionOutput) {
	op := &request.Operation{
		Name:       opStopSession,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StopSessionInput{}
	}

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

// StopSession API operation for AWS Glue.
//
// Stops the session.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StopSession for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - IllegalSessionStateException
//     The session is in an invalid state to perform a requested operation.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StopSession
func (c *Glue) StopSession(input *StopSessionInput) (*StopSessionOutput, error) {
	req, out := c.StopSessionRequest(input)
	return out, req.Send()
}

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

const opStopTrigger = "StopTrigger"

// StopTriggerRequest generates a "aws/request.Request" representing the
// client's request for the StopTrigger 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 StopTrigger for more information on using the StopTrigger
// 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 StopTriggerRequest method.
//	req, resp := client.StopTriggerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StopTrigger
func (c *Glue) StopTriggerRequest(input *StopTriggerInput) (req *request.Request, output *StopTriggerOutput) {
	op := &request.Operation{
		Name:       opStopTrigger,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StopTriggerInput{}
	}

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

// StopTrigger API operation for AWS Glue.
//
// Stops a specified trigger.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StopTrigger for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StopTrigger
func (c *Glue) StopTrigger(input *StopTriggerInput) (*StopTriggerOutput, error) {
	req, out := c.StopTriggerRequest(input)
	return out, req.Send()
}

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

const opStopWorkflowRun = "StopWorkflowRun"

// StopWorkflowRunRequest generates a "aws/request.Request" representing the
// client's request for the StopWorkflowRun 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 StopWorkflowRun for more information on using the StopWorkflowRun
// 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 StopWorkflowRunRequest method.
//	req, resp := client.StopWorkflowRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StopWorkflowRun
func (c *Glue) StopWorkflowRunRequest(input *StopWorkflowRunInput) (req *request.Request, output *StopWorkflowRunOutput) {
	op := &request.Operation{
		Name:       opStopWorkflowRun,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &StopWorkflowRunInput{}
	}

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

// StopWorkflowRun API operation for AWS Glue.
//
// Stops the execution of the specified workflow run.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation StopWorkflowRun for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - IllegalWorkflowStateException
//     The workflow is in an invalid state to perform a requested operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/StopWorkflowRun
func (c *Glue) StopWorkflowRun(input *StopWorkflowRunInput) (*StopWorkflowRunOutput, error) {
	req, out := c.StopWorkflowRunRequest(input)
	return out, req.Send()
}

// StopWorkflowRunWithContext is the same as StopWorkflowRun with the addition of
// the ability to pass a context and additional request options.
//
// See StopWorkflowRun 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 *Glue) StopWorkflowRunWithContext(ctx aws.Context, input *StopWorkflowRunInput, opts ...request.Option) (*StopWorkflowRunOutput, error) {
	req, out := c.StopWorkflowRunRequest(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/glue-2017-03-31/TagResource
func (c *Glue) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
	op := &request.Operation{
		Name:       opTagResource,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

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

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

// TagResource API operation for AWS Glue.
//
// Adds tags to a resource. A tag is a label you can assign to an Amazon Web
// Services resource. In Glue, you can tag only certain resources. For information
// about what resources you can tag, see Amazon Web Services Tags in Glue (https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.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 AWS Glue's
// API operation TagResource for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/TagResource
func (c *Glue) 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 *Glue) 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/glue-2017-03-31/UntagResource
func (c *Glue) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
	op := &request.Operation{
		Name:       opUntagResource,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

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

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

// UntagResource API operation for AWS Glue.
//
// Removes 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 AWS Glue's
// API operation UntagResource for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UntagResource
func (c *Glue) 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 *Glue) 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 opUpdateBlueprint = "UpdateBlueprint"

// UpdateBlueprintRequest generates a "aws/request.Request" representing the
// client's request for the UpdateBlueprint 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 UpdateBlueprint for more information on using the UpdateBlueprint
// 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 UpdateBlueprintRequest method.
//	req, resp := client.UpdateBlueprintRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateBlueprint
func (c *Glue) UpdateBlueprintRequest(input *UpdateBlueprintInput) (req *request.Request, output *UpdateBlueprintOutput) {
	op := &request.Operation{
		Name:       opUpdateBlueprint,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateBlueprintInput{}
	}

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

// UpdateBlueprint API operation for AWS Glue.
//
// Updates a registered blueprint.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateBlueprint for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - IllegalBlueprintStateException
//     The blueprint is in an invalid state to perform a requested operation.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateBlueprint
func (c *Glue) UpdateBlueprint(input *UpdateBlueprintInput) (*UpdateBlueprintOutput, error) {
	req, out := c.UpdateBlueprintRequest(input)
	return out, req.Send()
}

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

const opUpdateClassifier = "UpdateClassifier"

// UpdateClassifierRequest generates a "aws/request.Request" representing the
// client's request for the UpdateClassifier 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 UpdateClassifier for more information on using the UpdateClassifier
// 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 UpdateClassifierRequest method.
//	req, resp := client.UpdateClassifierRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateClassifier
func (c *Glue) UpdateClassifierRequest(input *UpdateClassifierInput) (req *request.Request, output *UpdateClassifierOutput) {
	op := &request.Operation{
		Name:       opUpdateClassifier,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateClassifierInput{}
	}

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

// UpdateClassifier API operation for AWS Glue.
//
// Modifies an existing classifier (a GrokClassifier, an XMLClassifier, a JsonClassifier,
// or a CsvClassifier, depending on which field is present).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateClassifier for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - VersionMismatchException
//     There was a version conflict.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateClassifier
func (c *Glue) UpdateClassifier(input *UpdateClassifierInput) (*UpdateClassifierOutput, error) {
	req, out := c.UpdateClassifierRequest(input)
	return out, req.Send()
}

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

const opUpdateColumnStatisticsForPartition = "UpdateColumnStatisticsForPartition"

// UpdateColumnStatisticsForPartitionRequest generates a "aws/request.Request" representing the
// client's request for the UpdateColumnStatisticsForPartition 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 UpdateColumnStatisticsForPartition for more information on using the UpdateColumnStatisticsForPartition
// 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 UpdateColumnStatisticsForPartitionRequest method.
//	req, resp := client.UpdateColumnStatisticsForPartitionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateColumnStatisticsForPartition
func (c *Glue) UpdateColumnStatisticsForPartitionRequest(input *UpdateColumnStatisticsForPartitionInput) (req *request.Request, output *UpdateColumnStatisticsForPartitionOutput) {
	op := &request.Operation{
		Name:       opUpdateColumnStatisticsForPartition,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateColumnStatisticsForPartitionInput{}
	}

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

// UpdateColumnStatisticsForPartition API operation for AWS Glue.
//
// Creates or updates partition statistics of columns.
//
// The Identity and Access Management (IAM) permission required for this operation
// is UpdatePartition.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateColumnStatisticsForPartition for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateColumnStatisticsForPartition
func (c *Glue) UpdateColumnStatisticsForPartition(input *UpdateColumnStatisticsForPartitionInput) (*UpdateColumnStatisticsForPartitionOutput, error) {
	req, out := c.UpdateColumnStatisticsForPartitionRequest(input)
	return out, req.Send()
}

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

const opUpdateColumnStatisticsForTable = "UpdateColumnStatisticsForTable"

// UpdateColumnStatisticsForTableRequest generates a "aws/request.Request" representing the
// client's request for the UpdateColumnStatisticsForTable 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 UpdateColumnStatisticsForTable for more information on using the UpdateColumnStatisticsForTable
// 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 UpdateColumnStatisticsForTableRequest method.
//	req, resp := client.UpdateColumnStatisticsForTableRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateColumnStatisticsForTable
func (c *Glue) UpdateColumnStatisticsForTableRequest(input *UpdateColumnStatisticsForTableInput) (req *request.Request, output *UpdateColumnStatisticsForTableOutput) {
	op := &request.Operation{
		Name:       opUpdateColumnStatisticsForTable,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateColumnStatisticsForTableInput{}
	}

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

// UpdateColumnStatisticsForTable API operation for AWS Glue.
//
// Creates or updates table statistics of columns.
//
// The Identity and Access Management (IAM) permission required for this operation
// is UpdateTable.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateColumnStatisticsForTable for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateColumnStatisticsForTable
func (c *Glue) UpdateColumnStatisticsForTable(input *UpdateColumnStatisticsForTableInput) (*UpdateColumnStatisticsForTableOutput, error) {
	req, out := c.UpdateColumnStatisticsForTableRequest(input)
	return out, req.Send()
}

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

const opUpdateConnection = "UpdateConnection"

// UpdateConnectionRequest generates a "aws/request.Request" representing the
// client's request for the UpdateConnection 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 UpdateConnection for more information on using the UpdateConnection
// 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 UpdateConnectionRequest method.
//	req, resp := client.UpdateConnectionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateConnection
func (c *Glue) UpdateConnectionRequest(input *UpdateConnectionInput) (req *request.Request, output *UpdateConnectionOutput) {
	op := &request.Operation{
		Name:       opUpdateConnection,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateConnectionInput{}
	}

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

// UpdateConnection API operation for AWS Glue.
//
// Updates a connection definition in the Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateConnection for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateConnection
func (c *Glue) UpdateConnection(input *UpdateConnectionInput) (*UpdateConnectionOutput, error) {
	req, out := c.UpdateConnectionRequest(input)
	return out, req.Send()
}

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

const opUpdateCrawler = "UpdateCrawler"

// UpdateCrawlerRequest generates a "aws/request.Request" representing the
// client's request for the UpdateCrawler 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 UpdateCrawler for more information on using the UpdateCrawler
// 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 UpdateCrawlerRequest method.
//	req, resp := client.UpdateCrawlerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateCrawler
func (c *Glue) UpdateCrawlerRequest(input *UpdateCrawlerInput) (req *request.Request, output *UpdateCrawlerOutput) {
	op := &request.Operation{
		Name:       opUpdateCrawler,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateCrawlerInput{}
	}

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

// UpdateCrawler API operation for AWS Glue.
//
// Updates a crawler. If a crawler is running, you must stop it using StopCrawler
// before updating 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 AWS Glue's
// API operation UpdateCrawler for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - VersionMismatchException
//     There was a version conflict.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - CrawlerRunningException
//     The operation cannot be performed because the crawler is already running.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateCrawler
func (c *Glue) UpdateCrawler(input *UpdateCrawlerInput) (*UpdateCrawlerOutput, error) {
	req, out := c.UpdateCrawlerRequest(input)
	return out, req.Send()
}

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

const opUpdateCrawlerSchedule = "UpdateCrawlerSchedule"

// UpdateCrawlerScheduleRequest generates a "aws/request.Request" representing the
// client's request for the UpdateCrawlerSchedule 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 UpdateCrawlerSchedule for more information on using the UpdateCrawlerSchedule
// 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 UpdateCrawlerScheduleRequest method.
//	req, resp := client.UpdateCrawlerScheduleRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateCrawlerSchedule
func (c *Glue) UpdateCrawlerScheduleRequest(input *UpdateCrawlerScheduleInput) (req *request.Request, output *UpdateCrawlerScheduleOutput) {
	op := &request.Operation{
		Name:       opUpdateCrawlerSchedule,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateCrawlerScheduleInput{}
	}

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

// UpdateCrawlerSchedule API operation for AWS Glue.
//
// Updates the schedule of a crawler using a cron expression.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateCrawlerSchedule for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - VersionMismatchException
//     There was a version conflict.
//
//   - SchedulerTransitioningException
//     The specified scheduler is transitioning.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateCrawlerSchedule
func (c *Glue) UpdateCrawlerSchedule(input *UpdateCrawlerScheduleInput) (*UpdateCrawlerScheduleOutput, error) {
	req, out := c.UpdateCrawlerScheduleRequest(input)
	return out, req.Send()
}

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

const opUpdateDataQualityRuleset = "UpdateDataQualityRuleset"

// UpdateDataQualityRulesetRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDataQualityRuleset 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 UpdateDataQualityRuleset for more information on using the UpdateDataQualityRuleset
// 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 UpdateDataQualityRulesetRequest method.
//	req, resp := client.UpdateDataQualityRulesetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateDataQualityRuleset
func (c *Glue) UpdateDataQualityRulesetRequest(input *UpdateDataQualityRulesetInput) (req *request.Request, output *UpdateDataQualityRulesetOutput) {
	op := &request.Operation{
		Name:       opUpdateDataQualityRuleset,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateDataQualityRulesetInput{}
	}

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

// UpdateDataQualityRuleset API operation for AWS Glue.
//
// Updates the specified data quality ruleset.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateDataQualityRuleset for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - IdempotentParameterMismatchException
//     The same unique identifier was associated with two different records.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateDataQualityRuleset
func (c *Glue) UpdateDataQualityRuleset(input *UpdateDataQualityRulesetInput) (*UpdateDataQualityRulesetOutput, error) {
	req, out := c.UpdateDataQualityRulesetRequest(input)
	return out, req.Send()
}

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

const opUpdateDatabase = "UpdateDatabase"

// UpdateDatabaseRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDatabase 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 UpdateDatabase for more information on using the UpdateDatabase
// 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 UpdateDatabaseRequest method.
//	req, resp := client.UpdateDatabaseRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateDatabase
func (c *Glue) UpdateDatabaseRequest(input *UpdateDatabaseInput) (req *request.Request, output *UpdateDatabaseOutput) {
	op := &request.Operation{
		Name:       opUpdateDatabase,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateDatabaseInput{}
	}

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

// UpdateDatabase API operation for AWS Glue.
//
// Updates an existing database definition in a Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateDatabase for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateDatabase
func (c *Glue) UpdateDatabase(input *UpdateDatabaseInput) (*UpdateDatabaseOutput, error) {
	req, out := c.UpdateDatabaseRequest(input)
	return out, req.Send()
}

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

const opUpdateDevEndpoint = "UpdateDevEndpoint"

// UpdateDevEndpointRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDevEndpoint 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 UpdateDevEndpoint for more information on using the UpdateDevEndpoint
// 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 UpdateDevEndpointRequest method.
//	req, resp := client.UpdateDevEndpointRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateDevEndpoint
func (c *Glue) UpdateDevEndpointRequest(input *UpdateDevEndpointInput) (req *request.Request, output *UpdateDevEndpointOutput) {
	op := &request.Operation{
		Name:       opUpdateDevEndpoint,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateDevEndpointInput{}
	}

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

// UpdateDevEndpoint API operation for AWS Glue.
//
// Updates a specified development endpoint.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateDevEndpoint for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - ValidationException
//     A value could not be validated.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateDevEndpoint
func (c *Glue) UpdateDevEndpoint(input *UpdateDevEndpointInput) (*UpdateDevEndpointOutput, error) {
	req, out := c.UpdateDevEndpointRequest(input)
	return out, req.Send()
}

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

const opUpdateJob = "UpdateJob"

// UpdateJobRequest generates a "aws/request.Request" representing the
// client's request for the UpdateJob 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 UpdateJob for more information on using the UpdateJob
// 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 UpdateJobRequest method.
//	req, resp := client.UpdateJobRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateJob
func (c *Glue) UpdateJobRequest(input *UpdateJobInput) (req *request.Request, output *UpdateJobOutput) {
	op := &request.Operation{
		Name:       opUpdateJob,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateJobInput{}
	}

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

// UpdateJob API operation for AWS Glue.
//
// Updates an existing job definition. The previous job definition is completely
// overwritten by this information.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateJob for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateJob
func (c *Glue) UpdateJob(input *UpdateJobInput) (*UpdateJobOutput, error) {
	req, out := c.UpdateJobRequest(input)
	return out, req.Send()
}

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

const opUpdateJobFromSourceControl = "UpdateJobFromSourceControl"

// UpdateJobFromSourceControlRequest generates a "aws/request.Request" representing the
// client's request for the UpdateJobFromSourceControl 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 UpdateJobFromSourceControl for more information on using the UpdateJobFromSourceControl
// 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 UpdateJobFromSourceControlRequest method.
//	req, resp := client.UpdateJobFromSourceControlRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateJobFromSourceControl
func (c *Glue) UpdateJobFromSourceControlRequest(input *UpdateJobFromSourceControlInput) (req *request.Request, output *UpdateJobFromSourceControlOutput) {
	op := &request.Operation{
		Name:       opUpdateJobFromSourceControl,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateJobFromSourceControlInput{}
	}

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

// UpdateJobFromSourceControl API operation for AWS Glue.
//
// Synchronizes a job from the source control repository. This operation takes
// the job artifacts that are located in the remote repository and updates the
// Glue internal stores with these artifacts.
//
// This API supports optional parameters which take in the repository information.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateJobFromSourceControl for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - ValidationException
//     A value could not be validated.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateJobFromSourceControl
func (c *Glue) UpdateJobFromSourceControl(input *UpdateJobFromSourceControlInput) (*UpdateJobFromSourceControlOutput, error) {
	req, out := c.UpdateJobFromSourceControlRequest(input)
	return out, req.Send()
}

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

const opUpdateMLTransform = "UpdateMLTransform"

// UpdateMLTransformRequest generates a "aws/request.Request" representing the
// client's request for the UpdateMLTransform 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 UpdateMLTransform for more information on using the UpdateMLTransform
// 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 UpdateMLTransformRequest method.
//	req, resp := client.UpdateMLTransformRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateMLTransform
func (c *Glue) UpdateMLTransformRequest(input *UpdateMLTransformInput) (req *request.Request, output *UpdateMLTransformOutput) {
	op := &request.Operation{
		Name:       opUpdateMLTransform,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateMLTransformInput{}
	}

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

// UpdateMLTransform API operation for AWS Glue.
//
// Updates an existing machine learning transform. Call this operation to tune
// the algorithm parameters to achieve better results.
//
// After calling this operation, you can call the StartMLEvaluationTaskRun operation
// to assess how well your new parameters achieved your goals (such as improving
// the quality of your machine learning transform, or making it more cost-effective).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateMLTransform for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateMLTransform
func (c *Glue) UpdateMLTransform(input *UpdateMLTransformInput) (*UpdateMLTransformOutput, error) {
	req, out := c.UpdateMLTransformRequest(input)
	return out, req.Send()
}

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

const opUpdatePartition = "UpdatePartition"

// UpdatePartitionRequest generates a "aws/request.Request" representing the
// client's request for the UpdatePartition 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 UpdatePartition for more information on using the UpdatePartition
// 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 UpdatePartitionRequest method.
//	req, resp := client.UpdatePartitionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdatePartition
func (c *Glue) UpdatePartitionRequest(input *UpdatePartitionInput) (req *request.Request, output *UpdatePartitionOutput) {
	op := &request.Operation{
		Name:       opUpdatePartition,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdatePartitionInput{}
	}

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

// UpdatePartition API operation for AWS Glue.
//
// Updates a partition.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdatePartition for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdatePartition
func (c *Glue) UpdatePartition(input *UpdatePartitionInput) (*UpdatePartitionOutput, error) {
	req, out := c.UpdatePartitionRequest(input)
	return out, req.Send()
}

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

const opUpdateRegistry = "UpdateRegistry"

// UpdateRegistryRequest generates a "aws/request.Request" representing the
// client's request for the UpdateRegistry 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 UpdateRegistry for more information on using the UpdateRegistry
// 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 UpdateRegistryRequest method.
//	req, resp := client.UpdateRegistryRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateRegistry
func (c *Glue) UpdateRegistryRequest(input *UpdateRegistryInput) (req *request.Request, output *UpdateRegistryOutput) {
	op := &request.Operation{
		Name:       opUpdateRegistry,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateRegistryInput{}
	}

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

// UpdateRegistry API operation for AWS Glue.
//
// Updates an existing registry which is used to hold a collection of schemas.
// The updated properties relate to the registry, and do not modify any of the
// schemas within the registry.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateRegistry for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateRegistry
func (c *Glue) UpdateRegistry(input *UpdateRegistryInput) (*UpdateRegistryOutput, error) {
	req, out := c.UpdateRegistryRequest(input)
	return out, req.Send()
}

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

const opUpdateSchema = "UpdateSchema"

// UpdateSchemaRequest generates a "aws/request.Request" representing the
// client's request for the UpdateSchema 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 UpdateSchema for more information on using the UpdateSchema
// 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 UpdateSchemaRequest method.
//	req, resp := client.UpdateSchemaRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateSchema
func (c *Glue) UpdateSchemaRequest(input *UpdateSchemaInput) (req *request.Request, output *UpdateSchemaOutput) {
	op := &request.Operation{
		Name:       opUpdateSchema,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateSchemaInput{}
	}

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

// UpdateSchema API operation for AWS Glue.
//
// Updates the description, compatibility setting, or version checkpoint for
// a schema set.
//
// For updating the compatibility setting, the call will not validate compatibility
// for the entire set of schema versions with the new compatibility setting.
// If the value for Compatibility is provided, the VersionNumber (a checkpoint)
// is also required. The API will validate the checkpoint version number for
// consistency.
//
// If the value for the VersionNumber (checkpoint) is provided, Compatibility
// is optional and this can be used to set/reset a checkpoint for the schema.
//
// This update will happen only if the schema is in the AVAILABLE 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 AWS Glue's
// API operation UpdateSchema for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateSchema
func (c *Glue) UpdateSchema(input *UpdateSchemaInput) (*UpdateSchemaOutput, error) {
	req, out := c.UpdateSchemaRequest(input)
	return out, req.Send()
}

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

const opUpdateSourceControlFromJob = "UpdateSourceControlFromJob"

// UpdateSourceControlFromJobRequest generates a "aws/request.Request" representing the
// client's request for the UpdateSourceControlFromJob 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 UpdateSourceControlFromJob for more information on using the UpdateSourceControlFromJob
// 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 UpdateSourceControlFromJobRequest method.
//	req, resp := client.UpdateSourceControlFromJobRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateSourceControlFromJob
func (c *Glue) UpdateSourceControlFromJobRequest(input *UpdateSourceControlFromJobInput) (req *request.Request, output *UpdateSourceControlFromJobOutput) {
	op := &request.Operation{
		Name:       opUpdateSourceControlFromJob,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateSourceControlFromJobInput{}
	}

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

// UpdateSourceControlFromJob API operation for AWS Glue.
//
// Synchronizes a job to the source control repository. This operation takes
// the job artifacts from the Glue internal stores and makes a commit to the
// remote repository that is configured on the job.
//
// This API supports optional parameters which take in the repository information.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateSourceControlFromJob for usage and error information.
//
// Returned Error Types:
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - AlreadyExistsException
//     A resource to be created or added already exists.
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - ValidationException
//     A value could not be validated.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateSourceControlFromJob
func (c *Glue) UpdateSourceControlFromJob(input *UpdateSourceControlFromJobInput) (*UpdateSourceControlFromJobOutput, error) {
	req, out := c.UpdateSourceControlFromJobRequest(input)
	return out, req.Send()
}

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

const opUpdateTable = "UpdateTable"

// UpdateTableRequest generates a "aws/request.Request" representing the
// client's request for the UpdateTable 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 UpdateTable for more information on using the UpdateTable
// 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 UpdateTableRequest method.
//	req, resp := client.UpdateTableRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateTable
func (c *Glue) UpdateTableRequest(input *UpdateTableInput) (req *request.Request, output *UpdateTableOutput) {
	op := &request.Operation{
		Name:       opUpdateTable,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateTableInput{}
	}

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

// UpdateTable API operation for AWS Glue.
//
// Updates a metadata table in the Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateTable for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
//   - ResourceNumberLimitExceededException
//     A resource numerical limit was exceeded.
//
//   - EncryptionException
//     An encryption operation failed.
//
//   - ResourceNotReadyException
//     A resource was not ready for a transaction.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateTable
func (c *Glue) UpdateTable(input *UpdateTableInput) (*UpdateTableOutput, error) {
	req, out := c.UpdateTableRequest(input)
	return out, req.Send()
}

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

const opUpdateTableOptimizer = "UpdateTableOptimizer"

// UpdateTableOptimizerRequest generates a "aws/request.Request" representing the
// client's request for the UpdateTableOptimizer 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 UpdateTableOptimizer for more information on using the UpdateTableOptimizer
// 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 UpdateTableOptimizerRequest method.
//	req, resp := client.UpdateTableOptimizerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateTableOptimizer
func (c *Glue) UpdateTableOptimizerRequest(input *UpdateTableOptimizerInput) (req *request.Request, output *UpdateTableOptimizerOutput) {
	op := &request.Operation{
		Name:       opUpdateTableOptimizer,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateTableOptimizerInput{}
	}

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

// UpdateTableOptimizer API operation for AWS Glue.
//
// Updates the configuration for an existing table optimizer.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateTableOptimizer for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - AccessDeniedException
//     Access to a resource was denied.
//
//   - InternalServiceException
//     An internal service error occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateTableOptimizer
func (c *Glue) UpdateTableOptimizer(input *UpdateTableOptimizerInput) (*UpdateTableOptimizerOutput, error) {
	req, out := c.UpdateTableOptimizerRequest(input)
	return out, req.Send()
}

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

const opUpdateTrigger = "UpdateTrigger"

// UpdateTriggerRequest generates a "aws/request.Request" representing the
// client's request for the UpdateTrigger 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 UpdateTrigger for more information on using the UpdateTrigger
// 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 UpdateTriggerRequest method.
//	req, resp := client.UpdateTriggerRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateTrigger
func (c *Glue) UpdateTriggerRequest(input *UpdateTriggerInput) (req *request.Request, output *UpdateTriggerOutput) {
	op := &request.Operation{
		Name:       opUpdateTrigger,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateTriggerInput{}
	}

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

// UpdateTrigger API operation for AWS Glue.
//
// Updates a trigger definition.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateTrigger for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateTrigger
func (c *Glue) UpdateTrigger(input *UpdateTriggerInput) (*UpdateTriggerOutput, error) {
	req, out := c.UpdateTriggerRequest(input)
	return out, req.Send()
}

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

const opUpdateUsageProfile = "UpdateUsageProfile"

// UpdateUsageProfileRequest generates a "aws/request.Request" representing the
// client's request for the UpdateUsageProfile 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 UpdateUsageProfile for more information on using the UpdateUsageProfile
// 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 UpdateUsageProfileRequest method.
//	req, resp := client.UpdateUsageProfileRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateUsageProfile
func (c *Glue) UpdateUsageProfileRequest(input *UpdateUsageProfileInput) (req *request.Request, output *UpdateUsageProfileOutput) {
	op := &request.Operation{
		Name:       opUpdateUsageProfile,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateUsageProfileInput{}
	}

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

// UpdateUsageProfile API operation for AWS Glue.
//
// Update an Glue usage profile.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateUsageProfile for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - OperationNotSupportedException
//     The operation is not available in the region.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateUsageProfile
func (c *Glue) UpdateUsageProfile(input *UpdateUsageProfileInput) (*UpdateUsageProfileOutput, error) {
	req, out := c.UpdateUsageProfileRequest(input)
	return out, req.Send()
}

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

const opUpdateUserDefinedFunction = "UpdateUserDefinedFunction"

// UpdateUserDefinedFunctionRequest generates a "aws/request.Request" representing the
// client's request for the UpdateUserDefinedFunction 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 UpdateUserDefinedFunction for more information on using the UpdateUserDefinedFunction
// 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 UpdateUserDefinedFunctionRequest method.
//	req, resp := client.UpdateUserDefinedFunctionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateUserDefinedFunction
func (c *Glue) UpdateUserDefinedFunctionRequest(input *UpdateUserDefinedFunctionInput) (req *request.Request, output *UpdateUserDefinedFunctionOutput) {
	op := &request.Operation{
		Name:       opUpdateUserDefinedFunction,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateUserDefinedFunctionInput{}
	}

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

// UpdateUserDefinedFunction API operation for AWS Glue.
//
// Updates an existing function definition in the Data Catalog.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateUserDefinedFunction for usage and error information.
//
// Returned Error Types:
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - EncryptionException
//     An encryption operation failed.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateUserDefinedFunction
func (c *Glue) UpdateUserDefinedFunction(input *UpdateUserDefinedFunctionInput) (*UpdateUserDefinedFunctionOutput, error) {
	req, out := c.UpdateUserDefinedFunctionRequest(input)
	return out, req.Send()
}

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

const opUpdateWorkflow = "UpdateWorkflow"

// UpdateWorkflowRequest generates a "aws/request.Request" representing the
// client's request for the UpdateWorkflow 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 UpdateWorkflow for more information on using the UpdateWorkflow
// 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 UpdateWorkflowRequest method.
//	req, resp := client.UpdateWorkflowRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateWorkflow
func (c *Glue) UpdateWorkflowRequest(input *UpdateWorkflowInput) (req *request.Request, output *UpdateWorkflowOutput) {
	op := &request.Operation{
		Name:       opUpdateWorkflow,
		HTTPMethod: "POST",
		HTTPPath:   "/",
	}

	if input == nil {
		input = &UpdateWorkflowInput{}
	}

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

// UpdateWorkflow API operation for AWS Glue.
//
// Updates an existing workflow.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Glue's
// API operation UpdateWorkflow for usage and error information.
//
// Returned Error Types:
//
//   - InvalidInputException
//     The input provided was not valid.
//
//   - EntityNotFoundException
//     A specified entity does not exist
//
//   - InternalServiceException
//     An internal service error occurred.
//
//   - OperationTimeoutException
//     The operation timed out.
//
//   - ConcurrentModificationException
//     Two processes are trying to modify a resource simultaneously.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateWorkflow
func (c *Glue) UpdateWorkflow(input *UpdateWorkflowInput) (*UpdateWorkflowOutput, error) {
	req, out := c.UpdateWorkflowRequest(input)
	return out, req.Send()
}

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

// Access to a resource was denied.
type AccessDeniedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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", s.Code(), s.Message())
}

// 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
}

// Defines an action to be initiated by a trigger.
type Action struct {
	_ struct{} `type:"structure"`

	// The job arguments used when this trigger fires. For this job run, they replace
	// the default arguments set in the job definition itself.
	//
	// You can specify arguments here that your own job-execution script consumes,
	// as well as arguments that Glue itself consumes.
	//
	// For information about how to specify and consume your own Job arguments,
	// see the Calling Glue APIs in Python (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html)
	// topic in the developer guide.
	//
	// For information about the key-value pairs that Glue consumes to set up your
	// job, see the Special Parameters Used by Glue (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html)
	// topic in the developer guide.
	Arguments map[string]*string `type:"map"`

	// The name of the crawler to be used with this action.
	CrawlerName *string `min:"1" type:"string"`

	// The name of a job to be run.
	JobName *string `min:"1" type:"string"`

	// Specifies configuration properties of a job run notification.
	NotificationProperty *NotificationProperty `type:"structure"`

	// The name of the SecurityConfiguration structure to be used with this action.
	SecurityConfiguration *string `min:"1" type:"string"`

	// The JobRun timeout in minutes. This is the maximum time that a job run can
	// consume resources before it is terminated and enters TIMEOUT status. The
	// default is 2,880 minutes (48 hours). This overrides the timeout value set
	// in the parent job.
	Timeout *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 Action) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *Action) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Action"}
	if s.CrawlerName != nil && len(*s.CrawlerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CrawlerName", 1))
	}
	if s.JobName != nil && len(*s.JobName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("JobName", 1))
	}
	if s.SecurityConfiguration != nil && len(*s.SecurityConfiguration) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecurityConfiguration", 1))
	}
	if s.Timeout != nil && *s.Timeout < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Timeout", 1))
	}
	if s.NotificationProperty != nil {
		if err := s.NotificationProperty.Validate(); err != nil {
			invalidParams.AddNested("NotificationProperty", err.(request.ErrInvalidParams))
		}
	}

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

// SetArguments sets the Arguments field's value.
func (s *Action) SetArguments(v map[string]*string) *Action {
	s.Arguments = v
	return s
}

// SetCrawlerName sets the CrawlerName field's value.
func (s *Action) SetCrawlerName(v string) *Action {
	s.CrawlerName = &v
	return s
}

// SetJobName sets the JobName field's value.
func (s *Action) SetJobName(v string) *Action {
	s.JobName = &v
	return s
}

// SetNotificationProperty sets the NotificationProperty field's value.
func (s *Action) SetNotificationProperty(v *NotificationProperty) *Action {
	s.NotificationProperty = v
	return s
}

// SetSecurityConfiguration sets the SecurityConfiguration field's value.
func (s *Action) SetSecurityConfiguration(v string) *Action {
	s.SecurityConfiguration = &v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *Action) SetTimeout(v int64) *Action {
	s.Timeout = &v
	return s
}

// Specifies a transform that groups rows by chosen fields and computes the
// aggregated value by specified function.
type Aggregate struct {
	_ struct{} `type:"structure"`

	// Specifies the aggregate functions to be performed on specified fields.
	//
	// Aggs is a required field
	Aggs []*AggregateOperation `min:"1" type:"list" required:"true"`

	// Specifies the fields to group by.
	//
	// Groups is a required field
	Groups [][]*string `type:"list" required:"true"`

	// Specifies the fields and rows to use as inputs for the aggregate transform.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *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 Aggregate) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAggs sets the Aggs field's value.
func (s *Aggregate) SetAggs(v []*AggregateOperation) *Aggregate {
	s.Aggs = v
	return s
}

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

// SetInputs sets the Inputs field's value.
func (s *Aggregate) SetInputs(v []*string) *Aggregate {
	s.Inputs = v
	return s
}

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

// Specifies the set of parameters needed to perform aggregation in the aggregate
// transform.
type AggregateOperation struct {
	_ struct{} `type:"structure"`

	// Specifies the aggregation function to apply.
	//
	// Possible aggregation functions include: avg countDistinct, count, first,
	// last, kurtosis, max, min, skewness, stddev_samp, stddev_pop, sum, sumDistinct,
	// var_samp, var_pop
	//
	// AggFunc is a required field
	AggFunc *string `type:"string" required:"true" enum:"AggFunction"`

	// Specifies the column on the data set on which the aggregation function will
	// be applied.
	//
	// Column is a required field
	Column []*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 AggregateOperation) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAggFunc sets the AggFunc field's value.
func (s *AggregateOperation) SetAggFunc(v string) *AggregateOperation {
	s.AggFunc = &v
	return s
}

// SetColumn sets the Column field's value.
func (s *AggregateOperation) SetColumn(v []*string) *AggregateOperation {
	s.Column = v
	return s
}

// A resource to be created or added already exists.
type AlreadyExistsException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

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

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

func newErrorAlreadyExistsException(v protocol.ResponseMetadata) error {
	return &AlreadyExistsException{
		RespMetadata: v,
	}
}

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

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

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

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

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

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

// Specifies an optional value when connecting to the Redshift cluster.
type AmazonRedshiftAdvancedOption struct {
	_ struct{} `type:"structure"`

	// The key for the additional connection option.
	Key *string `type:"string"`

	// The value for the additional connection option.
	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 AmazonRedshiftAdvancedOption) String() string {
	return awsutil.Prettify(s)
}

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

// SetKey sets the Key field's value.
func (s *AmazonRedshiftAdvancedOption) SetKey(v string) *AmazonRedshiftAdvancedOption {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *AmazonRedshiftAdvancedOption) SetValue(v string) *AmazonRedshiftAdvancedOption {
	s.Value = &v
	return s
}

// Specifies an Amazon Redshift node.
type AmazonRedshiftNodeData struct {
	_ struct{} `type:"structure"`

	// The access type for the Redshift connection. Can be a direct connection or
	// catalog connections.
	AccessType *string `type:"string"`

	// Specifies how writing to a Redshift cluser will occur.
	Action *string `type:"string"`

	// Optional values when connecting to the Redshift cluster.
	AdvancedOptions []*AmazonRedshiftAdvancedOption `type:"list"`

	// The name of the Glue Data Catalog database when working with a data catalog.
	CatalogDatabase *Option `type:"structure"`

	// The Redshift schema name when working with a data catalog.
	CatalogRedshiftSchema *string `type:"string"`

	// The database table to read from.
	CatalogRedshiftTable *string `type:"string"`

	// The Glue Data Catalog table name when working with a data catalog.
	CatalogTable *Option `type:"structure"`

	// The Glue connection to the Redshift cluster.
	Connection *Option `type:"structure"`

	// Specifies the name of the connection that is associated with the catalog
	// table used.
	CrawlerConnection *string `type:"string"`

	// Optional. The role name use when connection to S3. The IAM role ill default
	// to the role on the job when left blank.
	IamRole *Option `type:"structure"`

	// The action used when to detemine how a MERGE in a Redshift sink will be handled.
	MergeAction *string `type:"string"`

	// The SQL used in a custom merge to deal with matching records.
	MergeClause *string `type:"string"`

	// The action used when to detemine how a MERGE in a Redshift sink will be handled
	// when an existing record matches a new record.
	MergeWhenMatched *string `type:"string"`

	// The action used when to detemine how a MERGE in a Redshift sink will be handled
	// when an existing record doesn't match a new record.
	MergeWhenNotMatched *string `type:"string"`

	// The SQL used before a MERGE or APPEND with upsert is run.
	PostAction *string `type:"string"`

	// The SQL used before a MERGE or APPEND with upsert is run.
	PreAction *string `type:"string"`

	// The SQL used to fetch the data from a Redshift sources when the SourceType
	// is 'query'.
	SampleQuery *string `type:"string"`

	// The Redshift schema name when working with a direct connection.
	Schema *Option `type:"structure"`

	// The list of column names used to determine a matching record when doing a
	// MERGE or APPEND with upsert.
	SelectedColumns []*Option `type:"list"`

	// The source type to specify whether a specific table is the source or a custom
	// query.
	SourceType *string `type:"string"`

	// The name of the temporary staging table that is used when doing a MERGE or
	// APPEND with upsert.
	StagingTable *string `type:"string"`

	// The Redshift table name when working with a direct connection.
	Table *Option `type:"structure"`

	// Specifies the prefix to a table.
	TablePrefix *string `type:"string"`

	// The array of schema output for a given node.
	TableSchema []*Option `type:"list"`

	// The Amazon S3 path where temporary data can be staged when copying out of
	// the database.
	TempDir *string `type:"string"`

	// The action used on Redshift sinks when doing an APPEND.
	Upsert *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 AmazonRedshiftNodeData) String() string {
	return awsutil.Prettify(s)
}

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

// SetAccessType sets the AccessType field's value.
func (s *AmazonRedshiftNodeData) SetAccessType(v string) *AmazonRedshiftNodeData {
	s.AccessType = &v
	return s
}

// SetAction sets the Action field's value.
func (s *AmazonRedshiftNodeData) SetAction(v string) *AmazonRedshiftNodeData {
	s.Action = &v
	return s
}

// SetAdvancedOptions sets the AdvancedOptions field's value.
func (s *AmazonRedshiftNodeData) SetAdvancedOptions(v []*AmazonRedshiftAdvancedOption) *AmazonRedshiftNodeData {
	s.AdvancedOptions = v
	return s
}

// SetCatalogDatabase sets the CatalogDatabase field's value.
func (s *AmazonRedshiftNodeData) SetCatalogDatabase(v *Option) *AmazonRedshiftNodeData {
	s.CatalogDatabase = v
	return s
}

// SetCatalogRedshiftSchema sets the CatalogRedshiftSchema field's value.
func (s *AmazonRedshiftNodeData) SetCatalogRedshiftSchema(v string) *AmazonRedshiftNodeData {
	s.CatalogRedshiftSchema = &v
	return s
}

// SetCatalogRedshiftTable sets the CatalogRedshiftTable field's value.
func (s *AmazonRedshiftNodeData) SetCatalogRedshiftTable(v string) *AmazonRedshiftNodeData {
	s.CatalogRedshiftTable = &v
	return s
}

// SetCatalogTable sets the CatalogTable field's value.
func (s *AmazonRedshiftNodeData) SetCatalogTable(v *Option) *AmazonRedshiftNodeData {
	s.CatalogTable = v
	return s
}

// SetConnection sets the Connection field's value.
func (s *AmazonRedshiftNodeData) SetConnection(v *Option) *AmazonRedshiftNodeData {
	s.Connection = v
	return s
}

// SetCrawlerConnection sets the CrawlerConnection field's value.
func (s *AmazonRedshiftNodeData) SetCrawlerConnection(v string) *AmazonRedshiftNodeData {
	s.CrawlerConnection = &v
	return s
}

// SetIamRole sets the IamRole field's value.
func (s *AmazonRedshiftNodeData) SetIamRole(v *Option) *AmazonRedshiftNodeData {
	s.IamRole = v
	return s
}

// SetMergeAction sets the MergeAction field's value.
func (s *AmazonRedshiftNodeData) SetMergeAction(v string) *AmazonRedshiftNodeData {
	s.MergeAction = &v
	return s
}

// SetMergeClause sets the MergeClause field's value.
func (s *AmazonRedshiftNodeData) SetMergeClause(v string) *AmazonRedshiftNodeData {
	s.MergeClause = &v
	return s
}

// SetMergeWhenMatched sets the MergeWhenMatched field's value.
func (s *AmazonRedshiftNodeData) SetMergeWhenMatched(v string) *AmazonRedshiftNodeData {
	s.MergeWhenMatched = &v
	return s
}

// SetMergeWhenNotMatched sets the MergeWhenNotMatched field's value.
func (s *AmazonRedshiftNodeData) SetMergeWhenNotMatched(v string) *AmazonRedshiftNodeData {
	s.MergeWhenNotMatched = &v
	return s
}

// SetPostAction sets the PostAction field's value.
func (s *AmazonRedshiftNodeData) SetPostAction(v string) *AmazonRedshiftNodeData {
	s.PostAction = &v
	return s
}

// SetPreAction sets the PreAction field's value.
func (s *AmazonRedshiftNodeData) SetPreAction(v string) *AmazonRedshiftNodeData {
	s.PreAction = &v
	return s
}

// SetSampleQuery sets the SampleQuery field's value.
func (s *AmazonRedshiftNodeData) SetSampleQuery(v string) *AmazonRedshiftNodeData {
	s.SampleQuery = &v
	return s
}

// SetSchema sets the Schema field's value.
func (s *AmazonRedshiftNodeData) SetSchema(v *Option) *AmazonRedshiftNodeData {
	s.Schema = v
	return s
}

// SetSelectedColumns sets the SelectedColumns field's value.
func (s *AmazonRedshiftNodeData) SetSelectedColumns(v []*Option) *AmazonRedshiftNodeData {
	s.SelectedColumns = v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *AmazonRedshiftNodeData) SetSourceType(v string) *AmazonRedshiftNodeData {
	s.SourceType = &v
	return s
}

// SetStagingTable sets the StagingTable field's value.
func (s *AmazonRedshiftNodeData) SetStagingTable(v string) *AmazonRedshiftNodeData {
	s.StagingTable = &v
	return s
}

// SetTable sets the Table field's value.
func (s *AmazonRedshiftNodeData) SetTable(v *Option) *AmazonRedshiftNodeData {
	s.Table = v
	return s
}

// SetTablePrefix sets the TablePrefix field's value.
func (s *AmazonRedshiftNodeData) SetTablePrefix(v string) *AmazonRedshiftNodeData {
	s.TablePrefix = &v
	return s
}

// SetTableSchema sets the TableSchema field's value.
func (s *AmazonRedshiftNodeData) SetTableSchema(v []*Option) *AmazonRedshiftNodeData {
	s.TableSchema = v
	return s
}

// SetTempDir sets the TempDir field's value.
func (s *AmazonRedshiftNodeData) SetTempDir(v string) *AmazonRedshiftNodeData {
	s.TempDir = &v
	return s
}

// SetUpsert sets the Upsert field's value.
func (s *AmazonRedshiftNodeData) SetUpsert(v bool) *AmazonRedshiftNodeData {
	s.Upsert = &v
	return s
}

// Specifies an Amazon Redshift source.
type AmazonRedshiftSource struct {
	_ struct{} `type:"structure"`

	// Specifies the data of the Amazon Reshift source node.
	Data *AmazonRedshiftNodeData `type:"structure"`

	// The name of the Amazon Redshift source.
	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 AmazonRedshiftSource) String() string {
	return awsutil.Prettify(s)
}

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

// SetData sets the Data field's value.
func (s *AmazonRedshiftSource) SetData(v *AmazonRedshiftNodeData) *AmazonRedshiftSource {
	s.Data = v
	return s
}

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

// Specifies an Amazon Redshift target.
type AmazonRedshiftTarget struct {
	_ struct{} `type:"structure"`

	// Specifies the data of the Amazon Redshift target node.
	Data *AmazonRedshiftNodeData `type:"structure"`

	// The nodes that are inputs to the data target.
	Inputs []*string `min:"1" type:"list"`

	// The name of the Amazon Redshift target.
	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 AmazonRedshiftTarget) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetData sets the Data field's value.
func (s *AmazonRedshiftTarget) SetData(v *AmazonRedshiftNodeData) *AmazonRedshiftTarget {
	s.Data = v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *AmazonRedshiftTarget) SetInputs(v []*string) *AmazonRedshiftTarget {
	s.Inputs = v
	return s
}

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

// Specifies a transform that maps data property keys in the data source to
// data property keys in the data target. You can rename keys, modify the data
// types for keys, and choose which keys to drop from the dataset.
type ApplyMapping struct {
	_ struct{} `type:"structure"`

	// The data inputs identified by their node names.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// Specifies the mapping of data property keys in the data source to data property
	// keys in the data target.
	//
	// Mapping is a required field
	Mapping []*Mapping `type:"list" required:"true"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *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 ApplyMapping) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetInputs sets the Inputs field's value.
func (s *ApplyMapping) SetInputs(v []*string) *ApplyMapping {
	s.Inputs = v
	return s
}

// SetMapping sets the Mapping field's value.
func (s *ApplyMapping) SetMapping(v []*Mapping) *ApplyMapping {
	s.Mapping = v
	return s
}

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

// Specifies a connector to an Amazon Athena data source.
type AthenaConnectorSource struct {
	_ struct{} `type:"structure"`

	// The name of the connection that is associated with the connector.
	//
	// ConnectionName is a required field
	ConnectionName *string `type:"string" required:"true"`

	// The name of the table in the data source.
	ConnectionTable *string `type:"string"`

	// The type of connection, such as marketplace.athena or custom.athena, designating
	// a connection to an Amazon Athena data store.
	//
	// ConnectionType is a required field
	ConnectionType *string `type:"string" required:"true"`

	// The name of a connector that assists with accessing the data store in Glue
	// Studio.
	//
	// ConnectorName is a required field
	ConnectorName *string `type:"string" required:"true"`

	// The name of the data source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the data schema for the custom Athena source.
	OutputSchemas []*GlueSchema `type:"list"`

	// The name of the Cloudwatch log group to read from. For example, /aws-glue/jobs/output.
	//
	// SchemaName is a required field
	SchemaName *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 AthenaConnectorSource) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetConnectionName sets the ConnectionName field's value.
func (s *AthenaConnectorSource) SetConnectionName(v string) *AthenaConnectorSource {
	s.ConnectionName = &v
	return s
}

// SetConnectionTable sets the ConnectionTable field's value.
func (s *AthenaConnectorSource) SetConnectionTable(v string) *AthenaConnectorSource {
	s.ConnectionTable = &v
	return s
}

// SetConnectionType sets the ConnectionType field's value.
func (s *AthenaConnectorSource) SetConnectionType(v string) *AthenaConnectorSource {
	s.ConnectionType = &v
	return s
}

// SetConnectorName sets the ConnectorName field's value.
func (s *AthenaConnectorSource) SetConnectorName(v string) *AthenaConnectorSource {
	s.ConnectorName = &v
	return s
}

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

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *AthenaConnectorSource) SetOutputSchemas(v []*GlueSchema) *AthenaConnectorSource {
	s.OutputSchemas = v
	return s
}

// SetSchemaName sets the SchemaName field's value.
func (s *AthenaConnectorSource) SetSchemaName(v string) *AthenaConnectorSource {
	s.SchemaName = &v
	return s
}

// A structure containing the Lake Formation audit context.
type AuditContext struct {
	_ struct{} `type:"structure"`

	// A string containing the additional audit context information.
	AdditionalAuditContext *string `type:"string"`

	// All columns request for audit.
	AllColumnsRequested *bool `type:"boolean"`

	// The requested columns for audit.
	RequestedColumns []*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 AuditContext) String() string {
	return awsutil.Prettify(s)
}

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

// SetAdditionalAuditContext sets the AdditionalAuditContext field's value.
func (s *AuditContext) SetAdditionalAuditContext(v string) *AuditContext {
	s.AdditionalAuditContext = &v
	return s
}

// SetAllColumnsRequested sets the AllColumnsRequested field's value.
func (s *AuditContext) SetAllColumnsRequested(v bool) *AuditContext {
	s.AllColumnsRequested = &v
	return s
}

// SetRequestedColumns sets the RequestedColumns field's value.
func (s *AuditContext) SetRequestedColumns(v []*string) *AuditContext {
	s.RequestedColumns = v
	return s
}

// A structure containing the authentication configuration.
type AuthenticationConfiguration struct {
	_ struct{} `type:"structure"`

	// A structure containing the authentication configuration.
	AuthenticationType *string `type:"string" enum:"AuthenticationType"`

	// The properties for OAuth2 authentication.
	OAuth2Properties *OAuth2Properties `type:"structure"`

	// The secret manager ARN to store credentials.
	SecretArn *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 AuthenticationConfiguration) String() string {
	return awsutil.Prettify(s)
}

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

// SetAuthenticationType sets the AuthenticationType field's value.
func (s *AuthenticationConfiguration) SetAuthenticationType(v string) *AuthenticationConfiguration {
	s.AuthenticationType = &v
	return s
}

// SetOAuth2Properties sets the OAuth2Properties field's value.
func (s *AuthenticationConfiguration) SetOAuth2Properties(v *OAuth2Properties) *AuthenticationConfiguration {
	s.OAuth2Properties = v
	return s
}

// SetSecretArn sets the SecretArn field's value.
func (s *AuthenticationConfiguration) SetSecretArn(v string) *AuthenticationConfiguration {
	s.SecretArn = &v
	return s
}

// A structure containing the authentication configuration in the CreateConnection
// request.
type AuthenticationConfigurationInput_ struct {
	_ struct{} `type:"structure"`

	// A structure containing the authentication configuration in the CreateConnection
	// request.
	AuthenticationType *string `type:"string" enum:"AuthenticationType"`

	// The properties for OAuth2 authentication in the CreateConnection request.
	OAuth2Properties *OAuth2PropertiesInput_ `type:"structure"`

	// The secret manager ARN to store credentials in the CreateConnection request.
	SecretArn *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 AuthenticationConfigurationInput_) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *AuthenticationConfigurationInput_) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "AuthenticationConfigurationInput_"}
	if s.OAuth2Properties != nil {
		if err := s.OAuth2Properties.Validate(); err != nil {
			invalidParams.AddNested("OAuth2Properties", err.(request.ErrInvalidParams))
		}
	}

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

// SetAuthenticationType sets the AuthenticationType field's value.
func (s *AuthenticationConfigurationInput_) SetAuthenticationType(v string) *AuthenticationConfigurationInput_ {
	s.AuthenticationType = &v
	return s
}

// SetOAuth2Properties sets the OAuth2Properties field's value.
func (s *AuthenticationConfigurationInput_) SetOAuth2Properties(v *OAuth2PropertiesInput_) *AuthenticationConfigurationInput_ {
	s.OAuth2Properties = v
	return s
}

// SetSecretArn sets the SecretArn field's value.
func (s *AuthenticationConfigurationInput_) SetSecretArn(v string) *AuthenticationConfigurationInput_ {
	s.SecretArn = &v
	return s
}

// The set of properties required for the the OAuth2 AUTHORIZATION_CODE grant
// type workflow.
type AuthorizationCodeProperties struct {
	_ struct{} `type:"structure"`

	// An authorization code to be used in the third leg of the AUTHORIZATION_CODE
	// grant workflow. This is a single-use code which becomes invalid once exchanged
	// for an access token, thus it is acceptable to have this value as a request
	// parameter.
	AuthorizationCode *string `min:"1" type:"string"`

	// The redirect URI where the user gets redirected to by authorization server
	// when issuing an authorization code. The URI is subsequently used when the
	// authorization code is exchanged for an access token.
	RedirectUri *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 AuthorizationCodeProperties) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAuthorizationCode sets the AuthorizationCode field's value.
func (s *AuthorizationCodeProperties) SetAuthorizationCode(v string) *AuthorizationCodeProperties {
	s.AuthorizationCode = &v
	return s
}

// SetRedirectUri sets the RedirectUri field's value.
func (s *AuthorizationCodeProperties) SetRedirectUri(v string) *AuthorizationCodeProperties {
	s.RedirectUri = &v
	return s
}

// A list of errors that can occur when registering partition indexes for an
// existing table.
//
// These errors give the details about why an index registration failed and
// provide a limited number of partitions in the response, so that you can fix
// the partitions at fault and try registering the index again. The most common
// set of errors that can occur are categorized as follows:
//
//   - EncryptedPartitionError: The partitions are encrypted.
//
//   - InvalidPartitionTypeDataError: The partition value doesn't match the
//     data type for that partition column.
//
//   - MissingPartitionValueError: The partitions are encrypted.
//
//   - UnsupportedPartitionCharacterError: Characters inside the partition
//     value are not supported. For example: U+0000 , U+0001, U+0002.
//
//   - InternalError: Any error which does not belong to other error codes.
type BackfillError struct {
	_ struct{} `type:"structure"`

	// The error code for an error that occurred when registering partition indexes
	// for an existing table.
	Code *string `type:"string" enum:"BackfillErrorCode"`

	// A list of a limited number of partitions in the response.
	Partitions []*PartitionValueList `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 BackfillError) String() string {
	return awsutil.Prettify(s)
}

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

// SetCode sets the Code field's value.
func (s *BackfillError) SetCode(v string) *BackfillError {
	s.Code = &v
	return s
}

// SetPartitions sets the Partitions field's value.
func (s *BackfillError) SetPartitions(v []*PartitionValueList) *BackfillError {
	s.Partitions = v
	return s
}

// Specifies a target that uses a Glue Data Catalog table.
type BasicCatalogTarget struct {
	_ struct{} `type:"structure"`

	// The database that contains the table you want to use as the target. This
	// database must already exist in the Data Catalog.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The nodes that are inputs to the data target.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of your data target.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The table that defines the schema of your output data. This table must already
	// exist in the Data Catalog.
	//
	// Table is a required field
	Table *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 BasicCatalogTarget) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDatabase sets the Database field's value.
func (s *BasicCatalogTarget) SetDatabase(v string) *BasicCatalogTarget {
	s.Database = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *BasicCatalogTarget) SetInputs(v []*string) *BasicCatalogTarget {
	s.Inputs = v
	return s
}

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

// SetTable sets the Table field's value.
func (s *BasicCatalogTarget) SetTable(v string) *BasicCatalogTarget {
	s.Table = &v
	return s
}

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

	// The ID of the catalog in which the partition is to be created. Currently,
	// this should be the Amazon Web Services account ID.
	CatalogId *string `min:"1" type:"string"`

	// The name of the metadata database in which the partition is to be created.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// A list of PartitionInput structures that define the partitions to be created.
	//
	// PartitionInputList is a required field
	PartitionInputList []*PartitionInput `type:"list" required:"true"`

	// The name of the metadata table in which the partition is to be created.
	//
	// TableName is a required field
	TableName *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 BatchCreatePartitionInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetCatalogId sets the CatalogId field's value.
func (s *BatchCreatePartitionInput) SetCatalogId(v string) *BatchCreatePartitionInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *BatchCreatePartitionInput) SetDatabaseName(v string) *BatchCreatePartitionInput {
	s.DatabaseName = &v
	return s
}

// SetPartitionInputList sets the PartitionInputList field's value.
func (s *BatchCreatePartitionInput) SetPartitionInputList(v []*PartitionInput) *BatchCreatePartitionInput {
	s.PartitionInputList = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *BatchCreatePartitionInput) SetTableName(v string) *BatchCreatePartitionInput {
	s.TableName = &v
	return s
}

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

	// The errors encountered when trying to create the requested partitions.
	Errors []*PartitionError `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 BatchCreatePartitionOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetErrors sets the Errors field's value.
func (s *BatchCreatePartitionOutput) SetErrors(v []*PartitionError) *BatchCreatePartitionOutput {
	s.Errors = v
	return s
}

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

	// The ID of the Data Catalog in which the connections reside. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// A list of names of the connections to delete.
	//
	// ConnectionNameList is a required field
	ConnectionNameList []*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 BatchDeleteConnectionInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetCatalogId sets the CatalogId field's value.
func (s *BatchDeleteConnectionInput) SetCatalogId(v string) *BatchDeleteConnectionInput {
	s.CatalogId = &v
	return s
}

// SetConnectionNameList sets the ConnectionNameList field's value.
func (s *BatchDeleteConnectionInput) SetConnectionNameList(v []*string) *BatchDeleteConnectionInput {
	s.ConnectionNameList = v
	return s
}

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

	// A map of the names of connections that were not successfully deleted to error
	// details.
	Errors map[string]*ErrorDetail `type:"map"`

	// A list of names of the connection definitions that were successfully deleted.
	Succeeded []*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 BatchDeleteConnectionOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetErrors sets the Errors field's value.
func (s *BatchDeleteConnectionOutput) SetErrors(v map[string]*ErrorDetail) *BatchDeleteConnectionOutput {
	s.Errors = v
	return s
}

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

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

	// The ID of the Data Catalog where the partition to be deleted resides. If
	// none is provided, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the catalog database in which the table in question resides.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// A list of PartitionInput structures that define the partitions to be deleted.
	//
	// PartitionsToDelete is a required field
	PartitionsToDelete []*PartitionValueList `type:"list" required:"true"`

	// The name of the table that contains the partitions to be deleted.
	//
	// TableName is a required field
	TableName *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 BatchDeletePartitionInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetCatalogId sets the CatalogId field's value.
func (s *BatchDeletePartitionInput) SetCatalogId(v string) *BatchDeletePartitionInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *BatchDeletePartitionInput) SetDatabaseName(v string) *BatchDeletePartitionInput {
	s.DatabaseName = &v
	return s
}

// SetPartitionsToDelete sets the PartitionsToDelete field's value.
func (s *BatchDeletePartitionInput) SetPartitionsToDelete(v []*PartitionValueList) *BatchDeletePartitionInput {
	s.PartitionsToDelete = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *BatchDeletePartitionInput) SetTableName(v string) *BatchDeletePartitionInput {
	s.TableName = &v
	return s
}

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

	// The errors encountered when trying to delete the requested partitions.
	Errors []*PartitionError `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 BatchDeletePartitionOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetErrors sets the Errors field's value.
func (s *BatchDeletePartitionOutput) SetErrors(v []*PartitionError) *BatchDeletePartitionOutput {
	s.Errors = v
	return s
}

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

	// The ID of the Data Catalog where the table resides. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the catalog database in which the tables to delete reside. For
	// Hive compatibility, this name is entirely lowercase.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// A list of the table to delete.
	//
	// TablesToDelete is a required field
	TablesToDelete []*string `type:"list" required:"true"`

	// The transaction ID at which to delete the table contents.
	TransactionId *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 BatchDeleteTableInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetCatalogId sets the CatalogId field's value.
func (s *BatchDeleteTableInput) SetCatalogId(v string) *BatchDeleteTableInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *BatchDeleteTableInput) SetDatabaseName(v string) *BatchDeleteTableInput {
	s.DatabaseName = &v
	return s
}

// SetTablesToDelete sets the TablesToDelete field's value.
func (s *BatchDeleteTableInput) SetTablesToDelete(v []*string) *BatchDeleteTableInput {
	s.TablesToDelete = v
	return s
}

// SetTransactionId sets the TransactionId field's value.
func (s *BatchDeleteTableInput) SetTransactionId(v string) *BatchDeleteTableInput {
	s.TransactionId = &v
	return s
}

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

	// A list of errors encountered in attempting to delete the specified tables.
	Errors []*TableError `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 BatchDeleteTableOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetErrors sets the Errors field's value.
func (s *BatchDeleteTableOutput) SetErrors(v []*TableError) *BatchDeleteTableOutput {
	s.Errors = v
	return s
}

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

	// The ID of the Data Catalog where the tables reside. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The database in the catalog in which the table resides. For Hive compatibility,
	// this name is entirely lowercase.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the table. For Hive compatibility, this name is entirely lowercase.
	//
	// TableName is a required field
	TableName *string `min:"1" type:"string" required:"true"`

	// A list of the IDs of versions to be deleted. A VersionId is a string representation
	// of an integer. Each version is incremented by 1.
	//
	// VersionIds is a required field
	VersionIds []*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 BatchDeleteTableVersionInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetCatalogId sets the CatalogId field's value.
func (s *BatchDeleteTableVersionInput) SetCatalogId(v string) *BatchDeleteTableVersionInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *BatchDeleteTableVersionInput) SetDatabaseName(v string) *BatchDeleteTableVersionInput {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *BatchDeleteTableVersionInput) SetTableName(v string) *BatchDeleteTableVersionInput {
	s.TableName = &v
	return s
}

// SetVersionIds sets the VersionIds field's value.
func (s *BatchDeleteTableVersionInput) SetVersionIds(v []*string) *BatchDeleteTableVersionInput {
	s.VersionIds = v
	return s
}

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

	// A list of errors encountered while trying to delete the specified table versions.
	Errors []*TableVersionError `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 BatchDeleteTableVersionOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetErrors sets the Errors field's value.
func (s *BatchDeleteTableVersionOutput) SetErrors(v []*TableVersionError) *BatchDeleteTableVersionOutput {
	s.Errors = v
	return s
}

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

	// Specifies whether or not to include the blueprint in the response.
	IncludeBlueprint *bool `type:"boolean"`

	// Specifies whether or not to include the parameters, as a JSON string, for
	// the blueprint in the response.
	IncludeParameterSpec *bool `type:"boolean"`

	// A list of blueprint names.
	//
	// Names is a required field
	Names []*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 BatchGetBlueprintsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetIncludeBlueprint sets the IncludeBlueprint field's value.
func (s *BatchGetBlueprintsInput) SetIncludeBlueprint(v bool) *BatchGetBlueprintsInput {
	s.IncludeBlueprint = &v
	return s
}

// SetIncludeParameterSpec sets the IncludeParameterSpec field's value.
func (s *BatchGetBlueprintsInput) SetIncludeParameterSpec(v bool) *BatchGetBlueprintsInput {
	s.IncludeParameterSpec = &v
	return s
}

// SetNames sets the Names field's value.
func (s *BatchGetBlueprintsInput) SetNames(v []*string) *BatchGetBlueprintsInput {
	s.Names = v
	return s
}

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

	// Returns a list of blueprint as a Blueprints object.
	Blueprints []*Blueprint `type:"list"`

	// Returns a list of BlueprintNames that were not found.
	MissingBlueprints []*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 BatchGetBlueprintsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetBlueprints sets the Blueprints field's value.
func (s *BatchGetBlueprintsOutput) SetBlueprints(v []*Blueprint) *BatchGetBlueprintsOutput {
	s.Blueprints = v
	return s
}

// SetMissingBlueprints sets the MissingBlueprints field's value.
func (s *BatchGetBlueprintsOutput) SetMissingBlueprints(v []*string) *BatchGetBlueprintsOutput {
	s.MissingBlueprints = v
	return s
}

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

	// A list of crawler names, which might be the names returned from the ListCrawlers
	// operation.
	//
	// CrawlerNames is a required field
	CrawlerNames []*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 BatchGetCrawlersInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetCrawlerNames sets the CrawlerNames field's value.
func (s *BatchGetCrawlersInput) SetCrawlerNames(v []*string) *BatchGetCrawlersInput {
	s.CrawlerNames = v
	return s
}

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

	// A list of crawler definitions.
	Crawlers []*Crawler `type:"list"`

	// A list of names of crawlers that were not found.
	CrawlersNotFound []*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 BatchGetCrawlersOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetCrawlers sets the Crawlers field's value.
func (s *BatchGetCrawlersOutput) SetCrawlers(v []*Crawler) *BatchGetCrawlersOutput {
	s.Crawlers = v
	return s
}

// SetCrawlersNotFound sets the CrawlersNotFound field's value.
func (s *BatchGetCrawlersOutput) SetCrawlersNotFound(v []*string) *BatchGetCrawlersOutput {
	s.CrawlersNotFound = v
	return s
}

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

	// A list of names of the custom patterns that you want to retrieve.
	//
	// Names is a required field
	Names []*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 BatchGetCustomEntityTypesInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetNames sets the Names field's value.
func (s *BatchGetCustomEntityTypesInput) SetNames(v []*string) *BatchGetCustomEntityTypesInput {
	s.Names = v
	return s
}

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

	// A list of CustomEntityType objects representing the custom patterns that
	// have been created.
	CustomEntityTypes []*CustomEntityType `type:"list"`

	// A list of the names of custom patterns that were not found.
	CustomEntityTypesNotFound []*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 BatchGetCustomEntityTypesOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetCustomEntityTypes sets the CustomEntityTypes field's value.
func (s *BatchGetCustomEntityTypesOutput) SetCustomEntityTypes(v []*CustomEntityType) *BatchGetCustomEntityTypesOutput {
	s.CustomEntityTypes = v
	return s
}

// SetCustomEntityTypesNotFound sets the CustomEntityTypesNotFound field's value.
func (s *BatchGetCustomEntityTypesOutput) SetCustomEntityTypesNotFound(v []*string) *BatchGetCustomEntityTypesOutput {
	s.CustomEntityTypesNotFound = v
	return s
}

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

	// A list of unique result IDs for the data quality results.
	//
	// ResultIds is a required field
	ResultIds []*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 BatchGetDataQualityResultInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetResultIds sets the ResultIds field's value.
func (s *BatchGetDataQualityResultInput) SetResultIds(v []*string) *BatchGetDataQualityResultInput {
	s.ResultIds = v
	return s
}

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

	// A list of DataQualityResult objects representing the data quality results.
	//
	// Results is a required field
	Results []*DataQualityResult `type:"list" required:"true"`

	// A list of result IDs for which results were not found.
	ResultsNotFound []*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 BatchGetDataQualityResultOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetResults sets the Results field's value.
func (s *BatchGetDataQualityResultOutput) SetResults(v []*DataQualityResult) *BatchGetDataQualityResultOutput {
	s.Results = v
	return s
}

// SetResultsNotFound sets the ResultsNotFound field's value.
func (s *BatchGetDataQualityResultOutput) SetResultsNotFound(v []*string) *BatchGetDataQualityResultOutput {
	s.ResultsNotFound = v
	return s
}

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

	// The list of DevEndpoint names, which might be the names returned from the
	// ListDevEndpoint operation.
	//
	// DevEndpointNames is a required field
	DevEndpointNames []*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 BatchGetDevEndpointsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDevEndpointNames sets the DevEndpointNames field's value.
func (s *BatchGetDevEndpointsInput) SetDevEndpointNames(v []*string) *BatchGetDevEndpointsInput {
	s.DevEndpointNames = v
	return s
}

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

	// A list of DevEndpoint definitions.
	DevEndpoints []*DevEndpoint `type:"list"`

	// A list of DevEndpoints not found.
	DevEndpointsNotFound []*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 BatchGetDevEndpointsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetDevEndpoints sets the DevEndpoints field's value.
func (s *BatchGetDevEndpointsOutput) SetDevEndpoints(v []*DevEndpoint) *BatchGetDevEndpointsOutput {
	s.DevEndpoints = v
	return s
}

// SetDevEndpointsNotFound sets the DevEndpointsNotFound field's value.
func (s *BatchGetDevEndpointsOutput) SetDevEndpointsNotFound(v []*string) *BatchGetDevEndpointsOutput {
	s.DevEndpointsNotFound = v
	return s
}

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

	// A list of job names, which might be the names returned from the ListJobs
	// operation.
	//
	// JobNames is a required field
	JobNames []*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 BatchGetJobsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetJobNames sets the JobNames field's value.
func (s *BatchGetJobsInput) SetJobNames(v []*string) *BatchGetJobsInput {
	s.JobNames = v
	return s
}

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

	// A list of job definitions.
	Jobs []*Job `type:"list"`

	// A list of names of jobs not found.
	JobsNotFound []*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 BatchGetJobsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetJobs sets the Jobs field's value.
func (s *BatchGetJobsOutput) SetJobs(v []*Job) *BatchGetJobsOutput {
	s.Jobs = v
	return s
}

// SetJobsNotFound sets the JobsNotFound field's value.
func (s *BatchGetJobsOutput) SetJobsNotFound(v []*string) *BatchGetJobsOutput {
	s.JobsNotFound = v
	return s
}

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

	// The ID of the Data Catalog where the partitions in question reside. If none
	// is supplied, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the catalog database where the partitions reside.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// A list of partition values identifying the partitions to retrieve.
	//
	// PartitionsToGet is a required field
	PartitionsToGet []*PartitionValueList `type:"list" required:"true"`

	// The name of the partitions' table.
	//
	// TableName is a required field
	TableName *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 BatchGetPartitionInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetCatalogId sets the CatalogId field's value.
func (s *BatchGetPartitionInput) SetCatalogId(v string) *BatchGetPartitionInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *BatchGetPartitionInput) SetDatabaseName(v string) *BatchGetPartitionInput {
	s.DatabaseName = &v
	return s
}

// SetPartitionsToGet sets the PartitionsToGet field's value.
func (s *BatchGetPartitionInput) SetPartitionsToGet(v []*PartitionValueList) *BatchGetPartitionInput {
	s.PartitionsToGet = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *BatchGetPartitionInput) SetTableName(v string) *BatchGetPartitionInput {
	s.TableName = &v
	return s
}

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

	// A list of the requested partitions.
	Partitions []*Partition `type:"list"`

	// A list of the partition values in the request for which partitions were not
	// returned.
	UnprocessedKeys []*PartitionValueList `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 BatchGetPartitionOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetPartitions sets the Partitions field's value.
func (s *BatchGetPartitionOutput) SetPartitions(v []*Partition) *BatchGetPartitionOutput {
	s.Partitions = v
	return s
}

// SetUnprocessedKeys sets the UnprocessedKeys field's value.
func (s *BatchGetPartitionOutput) SetUnprocessedKeys(v []*PartitionValueList) *BatchGetPartitionOutput {
	s.UnprocessedKeys = v
	return s
}

// Represents a table optimizer to retrieve in the BatchGetTableOptimizer operation.
type BatchGetTableOptimizerEntry struct {
	_ struct{} `type:"structure"`

	// The Catalog ID of the table.
	CatalogId *string `locationName:"catalogId" min:"1" type:"string"`

	// The name of the database in the catalog in which the table resides.
	DatabaseName *string `locationName:"databaseName" min:"1" type:"string"`

	// The name of the table.
	TableName *string `locationName:"tableName" min:"1" type:"string"`

	// The type of table optimizer.
	Type *string `locationName:"type" type:"string" enum:"TableOptimizerType"`
}

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

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

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

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

// SetCatalogId sets the CatalogId field's value.
func (s *BatchGetTableOptimizerEntry) SetCatalogId(v string) *BatchGetTableOptimizerEntry {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *BatchGetTableOptimizerEntry) SetDatabaseName(v string) *BatchGetTableOptimizerEntry {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *BatchGetTableOptimizerEntry) SetTableName(v string) *BatchGetTableOptimizerEntry {
	s.TableName = &v
	return s
}

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

// Contains details on one of the errors in the error list returned by the BatchGetTableOptimizer
// operation.
type BatchGetTableOptimizerError struct {
	_ struct{} `type:"structure"`

	// The Catalog ID of the table.
	CatalogId *string `locationName:"catalogId" min:"1" type:"string"`

	// The name of the database in the catalog in which the table resides.
	DatabaseName *string `locationName:"databaseName" min:"1" type:"string"`

	// An ErrorDetail object containing code and message details about the error.
	Error *ErrorDetail `locationName:"error" type:"structure"`

	// The name of the table.
	TableName *string `locationName:"tableName" min:"1" type:"string"`

	// The type of table optimizer.
	Type *string `locationName:"type" type:"string" enum:"TableOptimizerType"`
}

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

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

// SetCatalogId sets the CatalogId field's value.
func (s *BatchGetTableOptimizerError) SetCatalogId(v string) *BatchGetTableOptimizerError {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *BatchGetTableOptimizerError) SetDatabaseName(v string) *BatchGetTableOptimizerError {
	s.DatabaseName = &v
	return s
}

// SetError sets the Error field's value.
func (s *BatchGetTableOptimizerError) SetError(v *ErrorDetail) *BatchGetTableOptimizerError {
	s.Error = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *BatchGetTableOptimizerError) SetTableName(v string) *BatchGetTableOptimizerError {
	s.TableName = &v
	return s
}

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

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

	// A list of BatchGetTableOptimizerEntry objects specifying the table optimizers
	// to retrieve.
	//
	// Entries is a required field
	Entries []*BatchGetTableOptimizerEntry `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 BatchGetTableOptimizerInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetEntries sets the Entries field's value.
func (s *BatchGetTableOptimizerInput) SetEntries(v []*BatchGetTableOptimizerEntry) *BatchGetTableOptimizerInput {
	s.Entries = v
	return s
}

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

	// A list of errors from the operation.
	Failures []*BatchGetTableOptimizerError `type:"list"`

	// A list of BatchTableOptimizer objects.
	TableOptimizers []*BatchTableOptimizer `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 BatchGetTableOptimizerOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetFailures sets the Failures field's value.
func (s *BatchGetTableOptimizerOutput) SetFailures(v []*BatchGetTableOptimizerError) *BatchGetTableOptimizerOutput {
	s.Failures = v
	return s
}

// SetTableOptimizers sets the TableOptimizers field's value.
func (s *BatchGetTableOptimizerOutput) SetTableOptimizers(v []*BatchTableOptimizer) *BatchGetTableOptimizerOutput {
	s.TableOptimizers = v
	return s
}

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

	// A list of trigger names, which may be the names returned from the ListTriggers
	// operation.
	//
	// TriggerNames is a required field
	TriggerNames []*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 BatchGetTriggersInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetTriggerNames sets the TriggerNames field's value.
func (s *BatchGetTriggersInput) SetTriggerNames(v []*string) *BatchGetTriggersInput {
	s.TriggerNames = v
	return s
}

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

	// A list of trigger definitions.
	Triggers []*Trigger `type:"list"`

	// A list of names of triggers not found.
	TriggersNotFound []*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 BatchGetTriggersOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetTriggers sets the Triggers field's value.
func (s *BatchGetTriggersOutput) SetTriggers(v []*Trigger) *BatchGetTriggersOutput {
	s.Triggers = v
	return s
}

// SetTriggersNotFound sets the TriggersNotFound field's value.
func (s *BatchGetTriggersOutput) SetTriggersNotFound(v []*string) *BatchGetTriggersOutput {
	s.TriggersNotFound = v
	return s
}

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

	// Specifies whether to include a graph when returning the workflow resource
	// metadata.
	IncludeGraph *bool `type:"boolean"`

	// A list of workflow names, which may be the names returned from the ListWorkflows
	// operation.
	//
	// Names is a required field
	Names []*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 BatchGetWorkflowsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetIncludeGraph sets the IncludeGraph field's value.
func (s *BatchGetWorkflowsInput) SetIncludeGraph(v bool) *BatchGetWorkflowsInput {
	s.IncludeGraph = &v
	return s
}

// SetNames sets the Names field's value.
func (s *BatchGetWorkflowsInput) SetNames(v []*string) *BatchGetWorkflowsInput {
	s.Names = v
	return s
}

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

	// A list of names of workflows not found.
	MissingWorkflows []*string `min:"1" type:"list"`

	// A list of workflow resource metadata.
	Workflows []*Workflow `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 BatchGetWorkflowsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetMissingWorkflows sets the MissingWorkflows field's value.
func (s *BatchGetWorkflowsOutput) SetMissingWorkflows(v []*string) *BatchGetWorkflowsOutput {
	s.MissingWorkflows = v
	return s
}

// SetWorkflows sets the Workflows field's value.
func (s *BatchGetWorkflowsOutput) SetWorkflows(v []*Workflow) *BatchGetWorkflowsOutput {
	s.Workflows = v
	return s
}

// Records an error that occurred when attempting to stop a specified job run.
type BatchStopJobRunError struct {
	_ struct{} `type:"structure"`

	// Specifies details about the error that was encountered.
	ErrorDetail *ErrorDetail `type:"structure"`

	// The name of the job definition that is used in the job run in question.
	JobName *string `min:"1" type:"string"`

	// The JobRunId of the job run in question.
	JobRunId *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 BatchStopJobRunError) String() string {
	return awsutil.Prettify(s)
}

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

// SetErrorDetail sets the ErrorDetail field's value.
func (s *BatchStopJobRunError) SetErrorDetail(v *ErrorDetail) *BatchStopJobRunError {
	s.ErrorDetail = v
	return s
}

// SetJobName sets the JobName field's value.
func (s *BatchStopJobRunError) SetJobName(v string) *BatchStopJobRunError {
	s.JobName = &v
	return s
}

// SetJobRunId sets the JobRunId field's value.
func (s *BatchStopJobRunError) SetJobRunId(v string) *BatchStopJobRunError {
	s.JobRunId = &v
	return s
}

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

	// The name of the job definition for which to stop job runs.
	//
	// JobName is a required field
	JobName *string `min:"1" type:"string" required:"true"`

	// A list of the JobRunIds that should be stopped for that job definition.
	//
	// JobRunIds is a required field
	JobRunIds []*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 BatchStopJobRunInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetJobName sets the JobName field's value.
func (s *BatchStopJobRunInput) SetJobName(v string) *BatchStopJobRunInput {
	s.JobName = &v
	return s
}

// SetJobRunIds sets the JobRunIds field's value.
func (s *BatchStopJobRunInput) SetJobRunIds(v []*string) *BatchStopJobRunInput {
	s.JobRunIds = v
	return s
}

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

	// A list of the errors that were encountered in trying to stop JobRuns, including
	// the JobRunId for which each error was encountered and details about the error.
	Errors []*BatchStopJobRunError `type:"list"`

	// A list of the JobRuns that were successfully submitted for stopping.
	SuccessfulSubmissions []*BatchStopJobRunSuccessfulSubmission `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 BatchStopJobRunOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetErrors sets the Errors field's value.
func (s *BatchStopJobRunOutput) SetErrors(v []*BatchStopJobRunError) *BatchStopJobRunOutput {
	s.Errors = v
	return s
}

// SetSuccessfulSubmissions sets the SuccessfulSubmissions field's value.
func (s *BatchStopJobRunOutput) SetSuccessfulSubmissions(v []*BatchStopJobRunSuccessfulSubmission) *BatchStopJobRunOutput {
	s.SuccessfulSubmissions = v
	return s
}

// Records a successful request to stop a specified JobRun.
type BatchStopJobRunSuccessfulSubmission struct {
	_ struct{} `type:"structure"`

	// The name of the job definition used in the job run that was stopped.
	JobName *string `min:"1" type:"string"`

	// The JobRunId of the job run that was stopped.
	JobRunId *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 BatchStopJobRunSuccessfulSubmission) String() string {
	return awsutil.Prettify(s)
}

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

// SetJobName sets the JobName field's value.
func (s *BatchStopJobRunSuccessfulSubmission) SetJobName(v string) *BatchStopJobRunSuccessfulSubmission {
	s.JobName = &v
	return s
}

// SetJobRunId sets the JobRunId field's value.
func (s *BatchStopJobRunSuccessfulSubmission) SetJobRunId(v string) *BatchStopJobRunSuccessfulSubmission {
	s.JobRunId = &v
	return s
}

// Contains details for one of the table optimizers returned by the BatchGetTableOptimizer
// operation.
type BatchTableOptimizer struct {
	_ struct{} `type:"structure"`

	// The Catalog ID of the table.
	CatalogId *string `locationName:"catalogId" min:"1" type:"string"`

	// The name of the database in the catalog in which the table resides.
	DatabaseName *string `locationName:"databaseName" min:"1" type:"string"`

	// The name of the table.
	TableName *string `locationName:"tableName" min:"1" type:"string"`

	// A TableOptimizer object that contains details on the configuration and last
	// run of a table optimzer.
	TableOptimizer *TableOptimizer `locationName:"tableOptimizer" type:"structure"`
}

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

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

// SetCatalogId sets the CatalogId field's value.
func (s *BatchTableOptimizer) SetCatalogId(v string) *BatchTableOptimizer {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *BatchTableOptimizer) SetDatabaseName(v string) *BatchTableOptimizer {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *BatchTableOptimizer) SetTableName(v string) *BatchTableOptimizer {
	s.TableName = &v
	return s
}

// SetTableOptimizer sets the TableOptimizer field's value.
func (s *BatchTableOptimizer) SetTableOptimizer(v *TableOptimizer) *BatchTableOptimizer {
	s.TableOptimizer = v
	return s
}

// Contains information about a batch update partition error.
type BatchUpdatePartitionFailureEntry struct {
	_ struct{} `type:"structure"`

	// The details about the batch update partition error.
	ErrorDetail *ErrorDetail `type:"structure"`

	// A list of values defining the partitions.
	PartitionValueList []*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 BatchUpdatePartitionFailureEntry) String() string {
	return awsutil.Prettify(s)
}

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

// SetErrorDetail sets the ErrorDetail field's value.
func (s *BatchUpdatePartitionFailureEntry) SetErrorDetail(v *ErrorDetail) *BatchUpdatePartitionFailureEntry {
	s.ErrorDetail = v
	return s
}

// SetPartitionValueList sets the PartitionValueList field's value.
func (s *BatchUpdatePartitionFailureEntry) SetPartitionValueList(v []*string) *BatchUpdatePartitionFailureEntry {
	s.PartitionValueList = v
	return s
}

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

	// The ID of the catalog in which the partition is to be updated. Currently,
	// this should be the Amazon Web Services account ID.
	CatalogId *string `min:"1" type:"string"`

	// The name of the metadata database in which the partition is to be updated.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// A list of up to 100 BatchUpdatePartitionRequestEntry objects to update.
	//
	// Entries is a required field
	Entries []*BatchUpdatePartitionRequestEntry `min:"1" type:"list" required:"true"`

	// The name of the metadata table in which the partition is to be updated.
	//
	// TableName is a required field
	TableName *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 BatchUpdatePartitionInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetCatalogId sets the CatalogId field's value.
func (s *BatchUpdatePartitionInput) SetCatalogId(v string) *BatchUpdatePartitionInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *BatchUpdatePartitionInput) SetDatabaseName(v string) *BatchUpdatePartitionInput {
	s.DatabaseName = &v
	return s
}

// SetEntries sets the Entries field's value.
func (s *BatchUpdatePartitionInput) SetEntries(v []*BatchUpdatePartitionRequestEntry) *BatchUpdatePartitionInput {
	s.Entries = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *BatchUpdatePartitionInput) SetTableName(v string) *BatchUpdatePartitionInput {
	s.TableName = &v
	return s
}

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

	// The errors encountered when trying to update the requested partitions. A
	// list of BatchUpdatePartitionFailureEntry objects.
	Errors []*BatchUpdatePartitionFailureEntry `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 BatchUpdatePartitionOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetErrors sets the Errors field's value.
func (s *BatchUpdatePartitionOutput) SetErrors(v []*BatchUpdatePartitionFailureEntry) *BatchUpdatePartitionOutput {
	s.Errors = v
	return s
}

// A structure that contains the values and structure used to update a partition.
type BatchUpdatePartitionRequestEntry struct {
	_ struct{} `type:"structure"`

	// The structure used to update a partition.
	//
	// PartitionInput is a required field
	PartitionInput *PartitionInput `type:"structure" required:"true"`

	// A list of values defining the partitions.
	//
	// PartitionValueList is a required field
	PartitionValueList []*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 BatchUpdatePartitionRequestEntry) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *BatchUpdatePartitionRequestEntry) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BatchUpdatePartitionRequestEntry"}
	if s.PartitionInput == nil {
		invalidParams.Add(request.NewErrParamRequired("PartitionInput"))
	}
	if s.PartitionValueList == nil {
		invalidParams.Add(request.NewErrParamRequired("PartitionValueList"))
	}
	if s.PartitionInput != nil {
		if err := s.PartitionInput.Validate(); err != nil {
			invalidParams.AddNested("PartitionInput", err.(request.ErrInvalidParams))
		}
	}

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

// SetPartitionInput sets the PartitionInput field's value.
func (s *BatchUpdatePartitionRequestEntry) SetPartitionInput(v *PartitionInput) *BatchUpdatePartitionRequestEntry {
	s.PartitionInput = v
	return s
}

// SetPartitionValueList sets the PartitionValueList field's value.
func (s *BatchUpdatePartitionRequestEntry) SetPartitionValueList(v []*string) *BatchUpdatePartitionRequestEntry {
	s.PartitionValueList = v
	return s
}

// Defines column statistics supported for bit sequence data values.
type BinaryColumnStatisticsData struct {
	_ struct{} `type:"structure"`

	// The average bit sequence length in the column.
	//
	// AverageLength is a required field
	AverageLength *float64 `type:"double" required:"true"`

	// The size of the longest bit sequence in the column.
	//
	// MaximumLength is a required field
	MaximumLength *int64 `type:"long" required:"true"`

	// The number of null values in the column.
	//
	// NumberOfNulls is a required field
	NumberOfNulls *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 BinaryColumnStatisticsData) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAverageLength sets the AverageLength field's value.
func (s *BinaryColumnStatisticsData) SetAverageLength(v float64) *BinaryColumnStatisticsData {
	s.AverageLength = &v
	return s
}

// SetMaximumLength sets the MaximumLength field's value.
func (s *BinaryColumnStatisticsData) SetMaximumLength(v int64) *BinaryColumnStatisticsData {
	s.MaximumLength = &v
	return s
}

// SetNumberOfNulls sets the NumberOfNulls field's value.
func (s *BinaryColumnStatisticsData) SetNumberOfNulls(v int64) *BinaryColumnStatisticsData {
	s.NumberOfNulls = &v
	return s
}

// The details of a blueprint.
type Blueprint struct {
	_ struct{} `type:"structure"`

	// Specifies the path in Amazon S3 where the blueprint is published.
	BlueprintLocation *string `type:"string"`

	// Specifies a path in Amazon S3 where the blueprint is copied when you call
	// CreateBlueprint/UpdateBlueprint to register the blueprint in Glue.
	BlueprintServiceLocation *string `type:"string"`

	// The date and time the blueprint was registered.
	CreatedOn *time.Time `type:"timestamp"`

	// The description of the blueprint.
	Description *string `min:"1" type:"string"`

	// An error message.
	ErrorMessage *string `type:"string"`

	// When there are multiple versions of a blueprint and the latest version has
	// some errors, this attribute indicates the last successful blueprint definition
	// that is available with the service.
	LastActiveDefinition *LastActiveDefinition `type:"structure"`

	// The date and time the blueprint was last modified.
	LastModifiedOn *time.Time `type:"timestamp"`

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

	// A JSON string that indicates the list of parameter specifications for the
	// blueprint.
	ParameterSpec *string `min:"1" type:"string"`

	// The status of the blueprint registration.
	//
	//    * Creating — The blueprint registration is in progress.
	//
	//    * Active — The blueprint has been successfully registered.
	//
	//    * Updating — An update to the blueprint registration is in progress.
	//
	//    * Failed — The blueprint registration failed.
	Status *string `type:"string" enum:"BlueprintStatus"`
}

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

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

// SetBlueprintLocation sets the BlueprintLocation field's value.
func (s *Blueprint) SetBlueprintLocation(v string) *Blueprint {
	s.BlueprintLocation = &v
	return s
}

// SetBlueprintServiceLocation sets the BlueprintServiceLocation field's value.
func (s *Blueprint) SetBlueprintServiceLocation(v string) *Blueprint {
	s.BlueprintServiceLocation = &v
	return s
}

// SetCreatedOn sets the CreatedOn field's value.
func (s *Blueprint) SetCreatedOn(v time.Time) *Blueprint {
	s.CreatedOn = &v
	return s
}

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

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

// SetLastActiveDefinition sets the LastActiveDefinition field's value.
func (s *Blueprint) SetLastActiveDefinition(v *LastActiveDefinition) *Blueprint {
	s.LastActiveDefinition = v
	return s
}

// SetLastModifiedOn sets the LastModifiedOn field's value.
func (s *Blueprint) SetLastModifiedOn(v time.Time) *Blueprint {
	s.LastModifiedOn = &v
	return s
}

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

// SetParameterSpec sets the ParameterSpec field's value.
func (s *Blueprint) SetParameterSpec(v string) *Blueprint {
	s.ParameterSpec = &v
	return s
}

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

// The details of a blueprint.
type BlueprintDetails struct {
	_ struct{} `type:"structure"`

	// The name of the blueprint.
	BlueprintName *string `min:"1" type:"string"`

	// The run ID for this blueprint.
	RunId *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 BlueprintDetails) String() string {
	return awsutil.Prettify(s)
}

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

// SetBlueprintName sets the BlueprintName field's value.
func (s *BlueprintDetails) SetBlueprintName(v string) *BlueprintDetails {
	s.BlueprintName = &v
	return s
}

// SetRunId sets the RunId field's value.
func (s *BlueprintDetails) SetRunId(v string) *BlueprintDetails {
	s.RunId = &v
	return s
}

// The details of a blueprint run.
type BlueprintRun struct {
	_ struct{} `type:"structure"`

	// The name of the blueprint.
	BlueprintName *string `min:"1" type:"string"`

	// The date and time that the blueprint run completed.
	CompletedOn *time.Time `type:"timestamp"`

	// Indicates any errors that are seen while running the blueprint.
	ErrorMessage *string `type:"string"`

	// The blueprint parameters as a string. You will have to provide a value for
	// each key that is required from the parameter spec that is defined in the
	// Blueprint$ParameterSpec.
	Parameters *string `min:"1" type:"string"`

	// The role ARN. This role will be assumed by the Glue service and will be used
	// to create the workflow and other entities of a workflow.
	RoleArn *string `min:"1" type:"string"`

	// If there are any errors while creating the entities of a workflow, we try
	// to roll back the created entities until that point and delete them. This
	// attribute indicates the errors seen while trying to delete the entities that
	// are created.
	RollbackErrorMessage *string `type:"string"`

	// The run ID for this blueprint run.
	RunId *string `min:"1" type:"string"`

	// The date and time that the blueprint run started.
	StartedOn *time.Time `type:"timestamp"`

	// The state of the blueprint run. Possible values are:
	//
	//    * Running — The blueprint run is in progress.
	//
	//    * Succeeded — The blueprint run completed successfully.
	//
	//    * Failed — The blueprint run failed and rollback is complete.
	//
	//    * Rolling Back — The blueprint run failed and rollback is in progress.
	State *string `type:"string" enum:"BlueprintRunState"`

	// The name of a workflow that is created as a result of a successful blueprint
	// run. If a blueprint run has an error, there will not be a workflow created.
	WorkflowName *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 BlueprintRun) String() string {
	return awsutil.Prettify(s)
}

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

// SetBlueprintName sets the BlueprintName field's value.
func (s *BlueprintRun) SetBlueprintName(v string) *BlueprintRun {
	s.BlueprintName = &v
	return s
}

// SetCompletedOn sets the CompletedOn field's value.
func (s *BlueprintRun) SetCompletedOn(v time.Time) *BlueprintRun {
	s.CompletedOn = &v
	return s
}

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

// SetParameters sets the Parameters field's value.
func (s *BlueprintRun) SetParameters(v string) *BlueprintRun {
	s.Parameters = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *BlueprintRun) SetRoleArn(v string) *BlueprintRun {
	s.RoleArn = &v
	return s
}

// SetRollbackErrorMessage sets the RollbackErrorMessage field's value.
func (s *BlueprintRun) SetRollbackErrorMessage(v string) *BlueprintRun {
	s.RollbackErrorMessage = &v
	return s
}

// SetRunId sets the RunId field's value.
func (s *BlueprintRun) SetRunId(v string) *BlueprintRun {
	s.RunId = &v
	return s
}

// SetStartedOn sets the StartedOn field's value.
func (s *BlueprintRun) SetStartedOn(v time.Time) *BlueprintRun {
	s.StartedOn = &v
	return s
}

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

// SetWorkflowName sets the WorkflowName field's value.
func (s *BlueprintRun) SetWorkflowName(v string) *BlueprintRun {
	s.WorkflowName = &v
	return s
}

// Defines column statistics supported for Boolean data columns.
type BooleanColumnStatisticsData struct {
	_ struct{} `type:"structure"`

	// The number of false values in the column.
	//
	// NumberOfFalses is a required field
	NumberOfFalses *int64 `type:"long" required:"true"`

	// The number of null values in the column.
	//
	// NumberOfNulls is a required field
	NumberOfNulls *int64 `type:"long" required:"true"`

	// The number of true values in the column.
	//
	// NumberOfTrues is a required field
	NumberOfTrues *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 BooleanColumnStatisticsData) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetNumberOfFalses sets the NumberOfFalses field's value.
func (s *BooleanColumnStatisticsData) SetNumberOfFalses(v int64) *BooleanColumnStatisticsData {
	s.NumberOfFalses = &v
	return s
}

// SetNumberOfNulls sets the NumberOfNulls field's value.
func (s *BooleanColumnStatisticsData) SetNumberOfNulls(v int64) *BooleanColumnStatisticsData {
	s.NumberOfNulls = &v
	return s
}

// SetNumberOfTrues sets the NumberOfTrues field's value.
func (s *BooleanColumnStatisticsData) SetNumberOfTrues(v int64) *BooleanColumnStatisticsData {
	s.NumberOfTrues = &v
	return s
}

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

	// The unique run identifier associated with this run.
	//
	// RunId is a required field
	RunId *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 CancelDataQualityRuleRecommendationRunInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetRunId sets the RunId field's value.
func (s *CancelDataQualityRuleRecommendationRunInput) SetRunId(v string) *CancelDataQualityRuleRecommendationRunInput {
	s.RunId = &v
	return s
}

type CancelDataQualityRuleRecommendationRunOutput 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 CancelDataQualityRuleRecommendationRunOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

	// The unique run identifier associated with this run.
	//
	// RunId is a required field
	RunId *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 CancelDataQualityRulesetEvaluationRunInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetRunId sets the RunId field's value.
func (s *CancelDataQualityRulesetEvaluationRunInput) SetRunId(v string) *CancelDataQualityRulesetEvaluationRunInput {
	s.RunId = &v
	return s
}

type CancelDataQualityRulesetEvaluationRunOutput 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 CancelDataQualityRulesetEvaluationRunOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

	// A unique identifier for the task run.
	//
	// TaskRunId is a required field
	TaskRunId *string `min:"1" type:"string" required:"true"`

	// The unique identifier of the machine learning transform.
	//
	// TransformId is a required field
	TransformId *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 CancelMLTaskRunInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetTaskRunId sets the TaskRunId field's value.
func (s *CancelMLTaskRunInput) SetTaskRunId(v string) *CancelMLTaskRunInput {
	s.TaskRunId = &v
	return s
}

// SetTransformId sets the TransformId field's value.
func (s *CancelMLTaskRunInput) SetTransformId(v string) *CancelMLTaskRunInput {
	s.TransformId = &v
	return s
}

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

	// The status for this run.
	Status *string `type:"string" enum:"TaskStatusType"`

	// The unique identifier for the task run.
	TaskRunId *string `min:"1" type:"string"`

	// The unique identifier of the machine learning transform.
	TransformId *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 CancelMLTaskRunOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetTaskRunId sets the TaskRunId field's value.
func (s *CancelMLTaskRunOutput) SetTaskRunId(v string) *CancelMLTaskRunOutput {
	s.TaskRunId = &v
	return s
}

// SetTransformId sets the TransformId field's value.
func (s *CancelMLTaskRunOutput) SetTransformId(v string) *CancelMLTaskRunOutput {
	s.TransformId = &v
	return s
}

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

	// The ID of the statement to be cancelled.
	//
	// Id is a required field
	Id *int64 `type:"integer" required:"true"`

	// The origin of the request to cancel the statement.
	RequestOrigin *string `min:"1" type:"string"`

	// The Session ID of the statement to be cancelled.
	//
	// SessionId is a required field
	SessionId *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 CancelStatementInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetRequestOrigin sets the RequestOrigin field's value.
func (s *CancelStatementInput) SetRequestOrigin(v string) *CancelStatementInput {
	s.RequestOrigin = &v
	return s
}

// SetSessionId sets the SessionId field's value.
func (s *CancelStatementInput) SetSessionId(v string) *CancelStatementInput {
	s.SessionId = &v
	return s
}

type CancelStatementOutput 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 CancelStatementOutput) String() string {
	return awsutil.Prettify(s)
}

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

// Specifies a Delta Lake data source that is registered in the Glue Data Catalog.
type CatalogDeltaSource struct {
	_ struct{} `type:"structure"`

	// Specifies additional connection options.
	AdditionalDeltaOptions map[string]*string `type:"map"`

	// The name of the database to read from.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The name of the Delta Lake data source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the data schema for the Delta Lake source.
	OutputSchemas []*GlueSchema `type:"list"`

	// The name of the table in the database to read from.
	//
	// Table is a required field
	Table *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 CatalogDeltaSource) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAdditionalDeltaOptions sets the AdditionalDeltaOptions field's value.
func (s *CatalogDeltaSource) SetAdditionalDeltaOptions(v map[string]*string) *CatalogDeltaSource {
	s.AdditionalDeltaOptions = v
	return s
}

// SetDatabase sets the Database field's value.
func (s *CatalogDeltaSource) SetDatabase(v string) *CatalogDeltaSource {
	s.Database = &v
	return s
}

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

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *CatalogDeltaSource) SetOutputSchemas(v []*GlueSchema) *CatalogDeltaSource {
	s.OutputSchemas = v
	return s
}

// SetTable sets the Table field's value.
func (s *CatalogDeltaSource) SetTable(v string) *CatalogDeltaSource {
	s.Table = &v
	return s
}

// Specifies a table definition in the Glue Data Catalog.
type CatalogEntry struct {
	_ struct{} `type:"structure"`

	// The database in which the table metadata resides.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the table in question.
	//
	// TableName is a required field
	TableName *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 CatalogEntry) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDatabaseName sets the DatabaseName field's value.
func (s *CatalogEntry) SetDatabaseName(v string) *CatalogEntry {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *CatalogEntry) SetTableName(v string) *CatalogEntry {
	s.TableName = &v
	return s
}

// Specifies a Hudi data source that is registered in the Glue Data Catalog.
type CatalogHudiSource struct {
	_ struct{} `type:"structure"`

	// Specifies additional connection options.
	AdditionalHudiOptions map[string]*string `type:"map"`

	// The name of the database to read from.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The name of the Hudi data source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the data schema for the Hudi source.
	OutputSchemas []*GlueSchema `type:"list"`

	// The name of the table in the database to read from.
	//
	// Table is a required field
	Table *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 CatalogHudiSource) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAdditionalHudiOptions sets the AdditionalHudiOptions field's value.
func (s *CatalogHudiSource) SetAdditionalHudiOptions(v map[string]*string) *CatalogHudiSource {
	s.AdditionalHudiOptions = v
	return s
}

// SetDatabase sets the Database field's value.
func (s *CatalogHudiSource) SetDatabase(v string) *CatalogHudiSource {
	s.Database = &v
	return s
}

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

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *CatalogHudiSource) SetOutputSchemas(v []*GlueSchema) *CatalogHudiSource {
	s.OutputSchemas = v
	return s
}

// SetTable sets the Table field's value.
func (s *CatalogHudiSource) SetTable(v string) *CatalogHudiSource {
	s.Table = &v
	return s
}

// A structure containing migration status information.
type CatalogImportStatus struct {
	_ struct{} `type:"structure"`

	// True if the migration has completed, or False otherwise.
	ImportCompleted *bool `type:"boolean"`

	// The time that the migration was started.
	ImportTime *time.Time `type:"timestamp"`

	// The name of the person who initiated the migration.
	ImportedBy *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 CatalogImportStatus) String() string {
	return awsutil.Prettify(s)
}

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

// SetImportCompleted sets the ImportCompleted field's value.
func (s *CatalogImportStatus) SetImportCompleted(v bool) *CatalogImportStatus {
	s.ImportCompleted = &v
	return s
}

// SetImportTime sets the ImportTime field's value.
func (s *CatalogImportStatus) SetImportTime(v time.Time) *CatalogImportStatus {
	s.ImportTime = &v
	return s
}

// SetImportedBy sets the ImportedBy field's value.
func (s *CatalogImportStatus) SetImportedBy(v string) *CatalogImportStatus {
	s.ImportedBy = &v
	return s
}

// Specifies an Apache Kafka data store in the Data Catalog.
type CatalogKafkaSource struct {
	_ struct{} `type:"structure"`

	// Specifies options related to data preview for viewing a sample of your data.
	DataPreviewOptions *StreamingDataPreviewOptions `type:"structure"`

	// The name of the database to read from.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// Whether to automatically determine the schema from the incoming data.
	DetectSchema *bool `type:"boolean"`

	// The name of the data store.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the streaming options.
	StreamingOptions *KafkaStreamingSourceOptions `type:"structure"`

	// The name of the table in the database to read from.
	//
	// Table is a required field
	Table *string `type:"string" required:"true"`

	// The amount of time to spend processing each micro batch.
	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 CatalogKafkaSource) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CatalogKafkaSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CatalogKafkaSource"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}
	if s.DataPreviewOptions != nil {
		if err := s.DataPreviewOptions.Validate(); err != nil {
			invalidParams.AddNested("DataPreviewOptions", err.(request.ErrInvalidParams))
		}
	}

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

// SetDataPreviewOptions sets the DataPreviewOptions field's value.
func (s *CatalogKafkaSource) SetDataPreviewOptions(v *StreamingDataPreviewOptions) *CatalogKafkaSource {
	s.DataPreviewOptions = v
	return s
}

// SetDatabase sets the Database field's value.
func (s *CatalogKafkaSource) SetDatabase(v string) *CatalogKafkaSource {
	s.Database = &v
	return s
}

// SetDetectSchema sets the DetectSchema field's value.
func (s *CatalogKafkaSource) SetDetectSchema(v bool) *CatalogKafkaSource {
	s.DetectSchema = &v
	return s
}

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

// SetStreamingOptions sets the StreamingOptions field's value.
func (s *CatalogKafkaSource) SetStreamingOptions(v *KafkaStreamingSourceOptions) *CatalogKafkaSource {
	s.StreamingOptions = v
	return s
}

// SetTable sets the Table field's value.
func (s *CatalogKafkaSource) SetTable(v string) *CatalogKafkaSource {
	s.Table = &v
	return s
}

// SetWindowSize sets the WindowSize field's value.
func (s *CatalogKafkaSource) SetWindowSize(v int64) *CatalogKafkaSource {
	s.WindowSize = &v
	return s
}

// Specifies a Kinesis data source in the Glue Data Catalog.
type CatalogKinesisSource struct {
	_ struct{} `type:"structure"`

	// Additional options for data preview.
	DataPreviewOptions *StreamingDataPreviewOptions `type:"structure"`

	// The name of the database to read from.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// Whether to automatically determine the schema from the incoming data.
	DetectSchema *bool `type:"boolean"`

	// The name of the data source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Additional options for the Kinesis streaming data source.
	StreamingOptions *KinesisStreamingSourceOptions `type:"structure"`

	// The name of the table in the database to read from.
	//
	// Table is a required field
	Table *string `type:"string" required:"true"`

	// The amount of time to spend processing each micro batch.
	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 CatalogKinesisSource) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CatalogKinesisSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CatalogKinesisSource"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}
	if s.DataPreviewOptions != nil {
		if err := s.DataPreviewOptions.Validate(); err != nil {
			invalidParams.AddNested("DataPreviewOptions", err.(request.ErrInvalidParams))
		}
	}

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

// SetDataPreviewOptions sets the DataPreviewOptions field's value.
func (s *CatalogKinesisSource) SetDataPreviewOptions(v *StreamingDataPreviewOptions) *CatalogKinesisSource {
	s.DataPreviewOptions = v
	return s
}

// SetDatabase sets the Database field's value.
func (s *CatalogKinesisSource) SetDatabase(v string) *CatalogKinesisSource {
	s.Database = &v
	return s
}

// SetDetectSchema sets the DetectSchema field's value.
func (s *CatalogKinesisSource) SetDetectSchema(v bool) *CatalogKinesisSource {
	s.DetectSchema = &v
	return s
}

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

// SetStreamingOptions sets the StreamingOptions field's value.
func (s *CatalogKinesisSource) SetStreamingOptions(v *KinesisStreamingSourceOptions) *CatalogKinesisSource {
	s.StreamingOptions = v
	return s
}

// SetTable sets the Table field's value.
func (s *CatalogKinesisSource) SetTable(v string) *CatalogKinesisSource {
	s.Table = &v
	return s
}

// SetWindowSize sets the WindowSize field's value.
func (s *CatalogKinesisSource) SetWindowSize(v int64) *CatalogKinesisSource {
	s.WindowSize = &v
	return s
}

// A policy that specifies update behavior for the crawler.
type CatalogSchemaChangePolicy struct {
	_ struct{} `type:"structure"`

	// Whether to use the specified update behavior when the crawler finds a changed
	// schema.
	EnableUpdateCatalog *bool `type:"boolean"`

	// The update behavior when the crawler finds a changed schema.
	UpdateBehavior *string `type:"string" enum:"UpdateCatalogBehavior"`
}

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

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

// SetEnableUpdateCatalog sets the EnableUpdateCatalog field's value.
func (s *CatalogSchemaChangePolicy) SetEnableUpdateCatalog(v bool) *CatalogSchemaChangePolicy {
	s.EnableUpdateCatalog = &v
	return s
}

// SetUpdateBehavior sets the UpdateBehavior field's value.
func (s *CatalogSchemaChangePolicy) SetUpdateBehavior(v string) *CatalogSchemaChangePolicy {
	s.UpdateBehavior = &v
	return s
}

// Specifies a data store in the Glue Data Catalog.
type CatalogSource struct {
	_ struct{} `type:"structure"`

	// The name of the database to read from.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The name of the data store.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The name of the table in the database to read from.
	//
	// Table is a required field
	Table *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 CatalogSource) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDatabase sets the Database field's value.
func (s *CatalogSource) SetDatabase(v string) *CatalogSource {
	s.Database = &v
	return s
}

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

// SetTable sets the Table field's value.
func (s *CatalogSource) SetTable(v string) *CatalogSource {
	s.Table = &v
	return s
}

// Specifies an Glue Data Catalog target.
type CatalogTarget struct {
	_ struct{} `type:"structure"`

	// The name of the connection for an Amazon S3-backed Data Catalog table to
	// be a target of the crawl when using a Catalog connection type paired with
	// a NETWORK Connection type.
	ConnectionName *string `type:"string"`

	// The name of the database to be synchronized.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// A valid Amazon dead-letter SQS ARN. For example, arn:aws:sqs:region:account:deadLetterQueue.
	DlqEventQueueArn *string `type:"string"`

	// A valid Amazon SQS ARN. For example, arn:aws:sqs:region:account:sqs.
	EventQueueArn *string `type:"string"`

	// A list of the tables to be synchronized.
	//
	// Tables is a required field
	Tables []*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 CatalogTarget) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetConnectionName sets the ConnectionName field's value.
func (s *CatalogTarget) SetConnectionName(v string) *CatalogTarget {
	s.ConnectionName = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *CatalogTarget) SetDatabaseName(v string) *CatalogTarget {
	s.DatabaseName = &v
	return s
}

// SetDlqEventQueueArn sets the DlqEventQueueArn field's value.
func (s *CatalogTarget) SetDlqEventQueueArn(v string) *CatalogTarget {
	s.DlqEventQueueArn = &v
	return s
}

// SetEventQueueArn sets the EventQueueArn field's value.
func (s *CatalogTarget) SetEventQueueArn(v string) *CatalogTarget {
	s.EventQueueArn = &v
	return s
}

// SetTables sets the Tables field's value.
func (s *CatalogTarget) SetTables(v []*string) *CatalogTarget {
	s.Tables = v
	return s
}

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

	// The data format of the schema definition. Currently AVRO, JSON and PROTOBUF
	// are supported.
	//
	// DataFormat is a required field
	DataFormat *string `type:"string" required:"true" enum:"DataFormat"`

	// The definition of the schema that has to be validated.
	//
	// SchemaDefinition is a required field
	SchemaDefinition *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 CheckSchemaVersionValidityInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDataFormat sets the DataFormat field's value.
func (s *CheckSchemaVersionValidityInput) SetDataFormat(v string) *CheckSchemaVersionValidityInput {
	s.DataFormat = &v
	return s
}

// SetSchemaDefinition sets the SchemaDefinition field's value.
func (s *CheckSchemaVersionValidityInput) SetSchemaDefinition(v string) *CheckSchemaVersionValidityInput {
	s.SchemaDefinition = &v
	return s
}

type CheckSchemaVersionValidityOutput struct {
	_ struct{} `type:"structure"`

	// A validation failure error message.
	Error *string `min:"1" type:"string"`

	// Return true, if the schema is valid and false otherwise.
	Valid *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 CheckSchemaVersionValidityOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CheckSchemaVersionValidityOutput) GoString() string {
	return s.String()
}

// SetError sets the Error field's value.
func (s *CheckSchemaVersionValidityOutput) SetError(v string) *CheckSchemaVersionValidityOutput {
	s.Error = &v
	return s
}

// SetValid sets the Valid field's value.
func (s *CheckSchemaVersionValidityOutput) SetValid(v bool) *CheckSchemaVersionValidityOutput {
	s.Valid = &v
	return s
}

// Classifiers are triggered during a crawl task. A classifier checks whether
// a given file is in a format it can handle. If it is, the classifier creates
// a schema in the form of a StructType object that matches that data format.
//
// You can use the standard classifiers that Glue provides, or you can write
// your own classifiers to best categorize your data sources and specify the
// appropriate schemas to use for them. A classifier can be a grok classifier,
// an XML classifier, a JSON classifier, or a custom CSV classifier, as specified
// in one of the fields in the Classifier object.
type Classifier struct {
	_ struct{} `type:"structure"`

	// A classifier for comma-separated values (CSV).
	CsvClassifier *CsvClassifier `type:"structure"`

	// A classifier that uses grok.
	GrokClassifier *GrokClassifier `type:"structure"`

	// A classifier for JSON content.
	JsonClassifier *JsonClassifier `type:"structure"`

	// A classifier for XML content.
	XMLClassifier *XMLClassifier `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Classifier) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Classifier) GoString() string {
	return s.String()
}

// SetCsvClassifier sets the CsvClassifier field's value.
func (s *Classifier) SetCsvClassifier(v *CsvClassifier) *Classifier {
	s.CsvClassifier = v
	return s
}

// SetGrokClassifier sets the GrokClassifier field's value.
func (s *Classifier) SetGrokClassifier(v *GrokClassifier) *Classifier {
	s.GrokClassifier = v
	return s
}

// SetJsonClassifier sets the JsonClassifier field's value.
func (s *Classifier) SetJsonClassifier(v *JsonClassifier) *Classifier {
	s.JsonClassifier = v
	return s
}

// SetXMLClassifier sets the XMLClassifier field's value.
func (s *Classifier) SetXMLClassifier(v *XMLClassifier) *Classifier {
	s.XMLClassifier = v
	return s
}

// Specifies how Amazon CloudWatch data should be encrypted.
type CloudWatchEncryption struct {
	_ struct{} `type:"structure"`

	// The encryption mode to use for CloudWatch data.
	CloudWatchEncryptionMode *string `type:"string" enum:"CloudWatchEncryptionMode"`

	// The Amazon Resource Name (ARN) of the KMS key to be used to encrypt the data.
	KmsKeyArn *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 CloudWatchEncryption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CloudWatchEncryption) GoString() string {
	return s.String()
}

// SetCloudWatchEncryptionMode sets the CloudWatchEncryptionMode field's value.
func (s *CloudWatchEncryption) SetCloudWatchEncryptionMode(v string) *CloudWatchEncryption {
	s.CloudWatchEncryptionMode = &v
	return s
}

// SetKmsKeyArn sets the KmsKeyArn field's value.
func (s *CloudWatchEncryption) SetKmsKeyArn(v string) *CloudWatchEncryption {
	s.KmsKeyArn = &v
	return s
}

// CodeGenConfigurationNode enumerates all valid Node types. One and only one
// of its member variables can be populated.
type CodeGenConfigurationNode struct {
	_ struct{} `type:"structure"`

	// Specifies a transform that groups rows by chosen fields and computes the
	// aggregated value by specified function.
	Aggregate *Aggregate `type:"structure"`

	// Specifies a target that writes to a data source in Amazon Redshift.
	AmazonRedshiftSource *AmazonRedshiftSource `type:"structure"`

	// Specifies a target that writes to a data target in Amazon Redshift.
	AmazonRedshiftTarget *AmazonRedshiftTarget `type:"structure"`

	// Specifies a transform that maps data property keys in the data source to
	// data property keys in the data target. You can rename keys, modify the data
	// types for keys, and choose which keys to drop from the dataset.
	ApplyMapping *ApplyMapping `type:"structure"`

	// Specifies a connector to an Amazon Athena data source.
	AthenaConnectorSource *AthenaConnectorSource `type:"structure"`

	// Specifies a Delta Lake data source that is registered in the Glue Data Catalog.
	CatalogDeltaSource *CatalogDeltaSource `type:"structure"`

	// Specifies a Hudi data source that is registered in the Glue Data Catalog.
	CatalogHudiSource *CatalogHudiSource `type:"structure"`

	// Specifies an Apache Kafka data store in the Data Catalog.
	CatalogKafkaSource *CatalogKafkaSource `type:"structure"`

	// Specifies a Kinesis data source in the Glue Data Catalog.
	CatalogKinesisSource *CatalogKinesisSource `type:"structure"`

	// Specifies a data store in the Glue Data Catalog.
	CatalogSource *CatalogSource `type:"structure"`

	// Specifies a target that uses a Glue Data Catalog table.
	CatalogTarget *BasicCatalogTarget `type:"structure"`

	// Specifies a source generated with standard connection options.
	ConnectorDataSource *ConnectorDataSource `type:"structure"`

	// Specifies a target generated with standard connection options.
	ConnectorDataTarget *ConnectorDataTarget `type:"structure"`

	// Specifies a transform that uses custom code you provide to perform the data
	// transformation. The output is a collection of DynamicFrames.
	CustomCode *CustomCode `type:"structure"`

	// Specifies the direct JDBC source connection.
	DirectJDBCSource *DirectJDBCSource `type:"structure"`

	// Specifies an Apache Kafka data store.
	DirectKafkaSource *DirectKafkaSource `type:"structure"`

	// Specifies a direct Amazon Kinesis data source.
	DirectKinesisSource *DirectKinesisSource `type:"structure"`

	// Specifies a transform that removes rows of repeating data from a data set.
	DropDuplicates *DropDuplicates `type:"structure"`

	// Specifies a transform that chooses the data property keys that you want to
	// drop.
	DropFields *DropFields `type:"structure"`

	// Specifies a transform that removes columns from the dataset if all values
	// in the column are 'null'. By default, Glue Studio will recognize null objects,
	// but some values such as empty strings, strings that are "null", -1 integers
	// or other placeholders such as zeros, are not automatically recognized as
	// nulls.
	DropNullFields *DropNullFields `type:"structure"`

	// Specifies a custom visual transform created by a user.
	DynamicTransform *DynamicTransform `type:"structure"`

	// Specifies a DynamoDBC Catalog data store in the Glue Data Catalog.
	DynamoDBCatalogSource *DynamoDBCatalogSource `type:"structure"`

	// Specifies your data quality evaluation criteria.
	EvaluateDataQuality *EvaluateDataQuality `type:"structure"`

	// Specifies your data quality evaluation criteria. Allows multiple input data
	// and returns a collection of Dynamic Frames.
	EvaluateDataQualityMultiFrame *EvaluateDataQualityMultiFrame `type:"structure"`

	// Specifies a transform that locates records in the dataset that have missing
	// values and adds a new field with a value determined by imputation. The input
	// data set is used to train the machine learning model that determines what
	// the missing value should be.
	FillMissingValues *FillMissingValues `type:"structure"`

	// Specifies a transform that splits a dataset into two, based on a filter condition.
	Filter *Filter `type:"structure"`

	// Specifies a data source in a goverened Data Catalog.
	GovernedCatalogSource *GovernedCatalogSource `type:"structure"`

	// Specifies a data target that writes to a goverened catalog.
	GovernedCatalogTarget *GovernedCatalogTarget `type:"structure"`

	// Specifies a connector to a JDBC data source.
	JDBCConnectorSource *JDBCConnectorSource `type:"structure"`

	// Specifies a data target that writes to Amazon S3 in Apache Parquet columnar
	// storage.
	JDBCConnectorTarget *JDBCConnectorTarget `type:"structure"`

	// Specifies a transform that joins two datasets into one dataset using a comparison
	// phrase on the specified data property keys. You can use inner, outer, left,
	// right, left semi, and left anti joins.
	Join *Join `type:"structure"`

	// Specifies a transform that merges a DynamicFrame with a staging DynamicFrame
	// based on the specified primary keys to identify records. Duplicate records
	// (records with the same primary keys) are not de-duplicated.
	Merge *Merge `type:"structure"`

	// Specifies a Microsoft SQL server data source in the Glue Data Catalog.
	MicrosoftSQLServerCatalogSource *MicrosoftSQLServerCatalogSource `type:"structure"`

	// Specifies a target that uses Microsoft SQL.
	MicrosoftSQLServerCatalogTarget *MicrosoftSQLServerCatalogTarget `type:"structure"`

	// Specifies a MySQL data source in the Glue Data Catalog.
	MySQLCatalogSource *MySQLCatalogSource `type:"structure"`

	// Specifies a target that uses MySQL.
	MySQLCatalogTarget *MySQLCatalogTarget `type:"structure"`

	// Specifies an Oracle data source in the Glue Data Catalog.
	OracleSQLCatalogSource *OracleSQLCatalogSource `type:"structure"`

	// Specifies a target that uses Oracle SQL.
	OracleSQLCatalogTarget *OracleSQLCatalogTarget `type:"structure"`

	// Specifies a transform that identifies, removes or masks PII data.
	PIIDetection *PIIDetection `type:"structure"`

	// Specifies a PostgresSQL data source in the Glue Data Catalog.
	PostgreSQLCatalogSource *PostgreSQLCatalogSource `type:"structure"`

	// Specifies a target that uses Postgres SQL.
	PostgreSQLCatalogTarget *PostgreSQLCatalogTarget `type:"structure"`

	// Specifies a Glue DataBrew recipe node.
	Recipe *Recipe `type:"structure"`

	// Specifies an Amazon Redshift data store.
	RedshiftSource *RedshiftSource `type:"structure"`

	// Specifies a target that uses Amazon Redshift.
	RedshiftTarget *RedshiftTarget `type:"structure"`

	// Specifies a relational catalog data store in the Glue Data Catalog.
	RelationalCatalogSource *RelationalCatalogSource `type:"structure"`

	// Specifies a transform that renames a single data property key.
	RenameField *RenameField `type:"structure"`

	// Specifies a Delta Lake data source that is registered in the Glue Data Catalog.
	// The data source must be stored in Amazon S3.
	S3CatalogDeltaSource *S3CatalogDeltaSource `type:"structure"`

	// Specifies a Hudi data source that is registered in the Glue Data Catalog.
	// The data source must be stored in Amazon S3.
	S3CatalogHudiSource *S3CatalogHudiSource `type:"structure"`

	// Specifies an Amazon S3 data store in the Glue Data Catalog.
	S3CatalogSource *S3CatalogSource `type:"structure"`

	// Specifies a data target that writes to Amazon S3 using the Glue Data Catalog.
	S3CatalogTarget *S3CatalogTarget `type:"structure"`

	// Specifies a command-separated value (CSV) data store stored in Amazon S3.
	S3CsvSource *S3CsvSource `type:"structure"`

	// Specifies a target that writes to a Delta Lake data source in the Glue Data
	// Catalog.
	S3DeltaCatalogTarget *S3DeltaCatalogTarget `type:"structure"`

	// Specifies a target that writes to a Delta Lake data source in Amazon S3.
	S3DeltaDirectTarget *S3DeltaDirectTarget `type:"structure"`

	// Specifies a Delta Lake data source stored in Amazon S3.
	S3DeltaSource *S3DeltaSource `type:"structure"`

	// Specifies a data target that writes to Amazon S3.
	S3DirectTarget *S3DirectTarget `type:"structure"`

	// Specifies a data target that writes to Amazon S3 in Apache Parquet columnar
	// storage.
	S3GlueParquetTarget *S3GlueParquetTarget `type:"structure"`

	// Specifies a target that writes to a Hudi data source in the Glue Data Catalog.
	S3HudiCatalogTarget *S3HudiCatalogTarget `type:"structure"`

	// Specifies a target that writes to a Hudi data source in Amazon S3.
	S3HudiDirectTarget *S3HudiDirectTarget `type:"structure"`

	// Specifies a Hudi data source stored in Amazon S3.
	S3HudiSource *S3HudiSource `type:"structure"`

	// Specifies a JSON data store stored in Amazon S3.
	S3JsonSource *S3JsonSource `type:"structure"`

	// Specifies an Apache Parquet data store stored in Amazon S3.
	S3ParquetSource *S3ParquetSource `type:"structure"`

	// Specifies a transform that chooses the data property keys that you want to
	// keep.
	SelectFields *SelectFields `type:"structure"`

	// Specifies a transform that chooses one DynamicFrame from a collection of
	// DynamicFrames. The output is the selected DynamicFrame
	SelectFromCollection *SelectFromCollection `type:"structure"`

	// Specifies a Snowflake data source.
	SnowflakeSource *SnowflakeSource `type:"structure"`

	// Specifies a target that writes to a Snowflake data source.
	SnowflakeTarget *SnowflakeTarget `type:"structure"`

	// Specifies a connector to an Apache Spark data source.
	SparkConnectorSource *SparkConnectorSource `type:"structure"`

	// Specifies a target that uses an Apache Spark connector.
	SparkConnectorTarget *SparkConnectorTarget `type:"structure"`

	// Specifies a transform where you enter a SQL query using Spark SQL syntax
	// to transform the data. The output is a single DynamicFrame.
	SparkSQL *SparkSQL `type:"structure"`

	// Specifies a transform that writes samples of the data to an Amazon S3 bucket.
	Spigot *Spigot `type:"structure"`

	// Specifies a transform that splits data property keys into two DynamicFrames.
	// The output is a collection of DynamicFrames: one with selected data property
	// keys, and one with the remaining data property keys.
	SplitFields *SplitFields `type:"structure"`

	// Specifies a transform that combines the rows from two or more datasets into
	// a single result.
	Union *Union `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CodeGenConfigurationNode) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CodeGenConfigurationNode) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CodeGenConfigurationNode) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CodeGenConfigurationNode"}
	if s.Aggregate != nil {
		if err := s.Aggregate.Validate(); err != nil {
			invalidParams.AddNested("Aggregate", err.(request.ErrInvalidParams))
		}
	}
	if s.AmazonRedshiftTarget != nil {
		if err := s.AmazonRedshiftTarget.Validate(); err != nil {
			invalidParams.AddNested("AmazonRedshiftTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.ApplyMapping != nil {
		if err := s.ApplyMapping.Validate(); err != nil {
			invalidParams.AddNested("ApplyMapping", err.(request.ErrInvalidParams))
		}
	}
	if s.AthenaConnectorSource != nil {
		if err := s.AthenaConnectorSource.Validate(); err != nil {
			invalidParams.AddNested("AthenaConnectorSource", err.(request.ErrInvalidParams))
		}
	}
	if s.CatalogDeltaSource != nil {
		if err := s.CatalogDeltaSource.Validate(); err != nil {
			invalidParams.AddNested("CatalogDeltaSource", err.(request.ErrInvalidParams))
		}
	}
	if s.CatalogHudiSource != nil {
		if err := s.CatalogHudiSource.Validate(); err != nil {
			invalidParams.AddNested("CatalogHudiSource", err.(request.ErrInvalidParams))
		}
	}
	if s.CatalogKafkaSource != nil {
		if err := s.CatalogKafkaSource.Validate(); err != nil {
			invalidParams.AddNested("CatalogKafkaSource", err.(request.ErrInvalidParams))
		}
	}
	if s.CatalogKinesisSource != nil {
		if err := s.CatalogKinesisSource.Validate(); err != nil {
			invalidParams.AddNested("CatalogKinesisSource", err.(request.ErrInvalidParams))
		}
	}
	if s.CatalogSource != nil {
		if err := s.CatalogSource.Validate(); err != nil {
			invalidParams.AddNested("CatalogSource", err.(request.ErrInvalidParams))
		}
	}
	if s.CatalogTarget != nil {
		if err := s.CatalogTarget.Validate(); err != nil {
			invalidParams.AddNested("CatalogTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.ConnectorDataSource != nil {
		if err := s.ConnectorDataSource.Validate(); err != nil {
			invalidParams.AddNested("ConnectorDataSource", err.(request.ErrInvalidParams))
		}
	}
	if s.ConnectorDataTarget != nil {
		if err := s.ConnectorDataTarget.Validate(); err != nil {
			invalidParams.AddNested("ConnectorDataTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.CustomCode != nil {
		if err := s.CustomCode.Validate(); err != nil {
			invalidParams.AddNested("CustomCode", err.(request.ErrInvalidParams))
		}
	}
	if s.DirectJDBCSource != nil {
		if err := s.DirectJDBCSource.Validate(); err != nil {
			invalidParams.AddNested("DirectJDBCSource", err.(request.ErrInvalidParams))
		}
	}
	if s.DirectKafkaSource != nil {
		if err := s.DirectKafkaSource.Validate(); err != nil {
			invalidParams.AddNested("DirectKafkaSource", err.(request.ErrInvalidParams))
		}
	}
	if s.DirectKinesisSource != nil {
		if err := s.DirectKinesisSource.Validate(); err != nil {
			invalidParams.AddNested("DirectKinesisSource", err.(request.ErrInvalidParams))
		}
	}
	if s.DropDuplicates != nil {
		if err := s.DropDuplicates.Validate(); err != nil {
			invalidParams.AddNested("DropDuplicates", err.(request.ErrInvalidParams))
		}
	}
	if s.DropFields != nil {
		if err := s.DropFields.Validate(); err != nil {
			invalidParams.AddNested("DropFields", err.(request.ErrInvalidParams))
		}
	}
	if s.DropNullFields != nil {
		if err := s.DropNullFields.Validate(); err != nil {
			invalidParams.AddNested("DropNullFields", err.(request.ErrInvalidParams))
		}
	}
	if s.DynamicTransform != nil {
		if err := s.DynamicTransform.Validate(); err != nil {
			invalidParams.AddNested("DynamicTransform", err.(request.ErrInvalidParams))
		}
	}
	if s.DynamoDBCatalogSource != nil {
		if err := s.DynamoDBCatalogSource.Validate(); err != nil {
			invalidParams.AddNested("DynamoDBCatalogSource", err.(request.ErrInvalidParams))
		}
	}
	if s.EvaluateDataQuality != nil {
		if err := s.EvaluateDataQuality.Validate(); err != nil {
			invalidParams.AddNested("EvaluateDataQuality", err.(request.ErrInvalidParams))
		}
	}
	if s.EvaluateDataQualityMultiFrame != nil {
		if err := s.EvaluateDataQualityMultiFrame.Validate(); err != nil {
			invalidParams.AddNested("EvaluateDataQualityMultiFrame", err.(request.ErrInvalidParams))
		}
	}
	if s.FillMissingValues != nil {
		if err := s.FillMissingValues.Validate(); err != nil {
			invalidParams.AddNested("FillMissingValues", err.(request.ErrInvalidParams))
		}
	}
	if s.Filter != nil {
		if err := s.Filter.Validate(); err != nil {
			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
		}
	}
	if s.GovernedCatalogSource != nil {
		if err := s.GovernedCatalogSource.Validate(); err != nil {
			invalidParams.AddNested("GovernedCatalogSource", err.(request.ErrInvalidParams))
		}
	}
	if s.GovernedCatalogTarget != nil {
		if err := s.GovernedCatalogTarget.Validate(); err != nil {
			invalidParams.AddNested("GovernedCatalogTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.JDBCConnectorSource != nil {
		if err := s.JDBCConnectorSource.Validate(); err != nil {
			invalidParams.AddNested("JDBCConnectorSource", err.(request.ErrInvalidParams))
		}
	}
	if s.JDBCConnectorTarget != nil {
		if err := s.JDBCConnectorTarget.Validate(); err != nil {
			invalidParams.AddNested("JDBCConnectorTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.Join != nil {
		if err := s.Join.Validate(); err != nil {
			invalidParams.AddNested("Join", err.(request.ErrInvalidParams))
		}
	}
	if s.Merge != nil {
		if err := s.Merge.Validate(); err != nil {
			invalidParams.AddNested("Merge", err.(request.ErrInvalidParams))
		}
	}
	if s.MicrosoftSQLServerCatalogSource != nil {
		if err := s.MicrosoftSQLServerCatalogSource.Validate(); err != nil {
			invalidParams.AddNested("MicrosoftSQLServerCatalogSource", err.(request.ErrInvalidParams))
		}
	}
	if s.MicrosoftSQLServerCatalogTarget != nil {
		if err := s.MicrosoftSQLServerCatalogTarget.Validate(); err != nil {
			invalidParams.AddNested("MicrosoftSQLServerCatalogTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.MySQLCatalogSource != nil {
		if err := s.MySQLCatalogSource.Validate(); err != nil {
			invalidParams.AddNested("MySQLCatalogSource", err.(request.ErrInvalidParams))
		}
	}
	if s.MySQLCatalogTarget != nil {
		if err := s.MySQLCatalogTarget.Validate(); err != nil {
			invalidParams.AddNested("MySQLCatalogTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.OracleSQLCatalogSource != nil {
		if err := s.OracleSQLCatalogSource.Validate(); err != nil {
			invalidParams.AddNested("OracleSQLCatalogSource", err.(request.ErrInvalidParams))
		}
	}
	if s.OracleSQLCatalogTarget != nil {
		if err := s.OracleSQLCatalogTarget.Validate(); err != nil {
			invalidParams.AddNested("OracleSQLCatalogTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.PIIDetection != nil {
		if err := s.PIIDetection.Validate(); err != nil {
			invalidParams.AddNested("PIIDetection", err.(request.ErrInvalidParams))
		}
	}
	if s.PostgreSQLCatalogSource != nil {
		if err := s.PostgreSQLCatalogSource.Validate(); err != nil {
			invalidParams.AddNested("PostgreSQLCatalogSource", err.(request.ErrInvalidParams))
		}
	}
	if s.PostgreSQLCatalogTarget != nil {
		if err := s.PostgreSQLCatalogTarget.Validate(); err != nil {
			invalidParams.AddNested("PostgreSQLCatalogTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.Recipe != nil {
		if err := s.Recipe.Validate(); err != nil {
			invalidParams.AddNested("Recipe", err.(request.ErrInvalidParams))
		}
	}
	if s.RedshiftSource != nil {
		if err := s.RedshiftSource.Validate(); err != nil {
			invalidParams.AddNested("RedshiftSource", err.(request.ErrInvalidParams))
		}
	}
	if s.RedshiftTarget != nil {
		if err := s.RedshiftTarget.Validate(); err != nil {
			invalidParams.AddNested("RedshiftTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.RelationalCatalogSource != nil {
		if err := s.RelationalCatalogSource.Validate(); err != nil {
			invalidParams.AddNested("RelationalCatalogSource", err.(request.ErrInvalidParams))
		}
	}
	if s.RenameField != nil {
		if err := s.RenameField.Validate(); err != nil {
			invalidParams.AddNested("RenameField", err.(request.ErrInvalidParams))
		}
	}
	if s.S3CatalogDeltaSource != nil {
		if err := s.S3CatalogDeltaSource.Validate(); err != nil {
			invalidParams.AddNested("S3CatalogDeltaSource", err.(request.ErrInvalidParams))
		}
	}
	if s.S3CatalogHudiSource != nil {
		if err := s.S3CatalogHudiSource.Validate(); err != nil {
			invalidParams.AddNested("S3CatalogHudiSource", err.(request.ErrInvalidParams))
		}
	}
	if s.S3CatalogSource != nil {
		if err := s.S3CatalogSource.Validate(); err != nil {
			invalidParams.AddNested("S3CatalogSource", err.(request.ErrInvalidParams))
		}
	}
	if s.S3CatalogTarget != nil {
		if err := s.S3CatalogTarget.Validate(); err != nil {
			invalidParams.AddNested("S3CatalogTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.S3CsvSource != nil {
		if err := s.S3CsvSource.Validate(); err != nil {
			invalidParams.AddNested("S3CsvSource", err.(request.ErrInvalidParams))
		}
	}
	if s.S3DeltaCatalogTarget != nil {
		if err := s.S3DeltaCatalogTarget.Validate(); err != nil {
			invalidParams.AddNested("S3DeltaCatalogTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.S3DeltaDirectTarget != nil {
		if err := s.S3DeltaDirectTarget.Validate(); err != nil {
			invalidParams.AddNested("S3DeltaDirectTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.S3DeltaSource != nil {
		if err := s.S3DeltaSource.Validate(); err != nil {
			invalidParams.AddNested("S3DeltaSource", err.(request.ErrInvalidParams))
		}
	}
	if s.S3DirectTarget != nil {
		if err := s.S3DirectTarget.Validate(); err != nil {
			invalidParams.AddNested("S3DirectTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.S3GlueParquetTarget != nil {
		if err := s.S3GlueParquetTarget.Validate(); err != nil {
			invalidParams.AddNested("S3GlueParquetTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.S3HudiCatalogTarget != nil {
		if err := s.S3HudiCatalogTarget.Validate(); err != nil {
			invalidParams.AddNested("S3HudiCatalogTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.S3HudiDirectTarget != nil {
		if err := s.S3HudiDirectTarget.Validate(); err != nil {
			invalidParams.AddNested("S3HudiDirectTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.S3HudiSource != nil {
		if err := s.S3HudiSource.Validate(); err != nil {
			invalidParams.AddNested("S3HudiSource", err.(request.ErrInvalidParams))
		}
	}
	if s.S3JsonSource != nil {
		if err := s.S3JsonSource.Validate(); err != nil {
			invalidParams.AddNested("S3JsonSource", err.(request.ErrInvalidParams))
		}
	}
	if s.S3ParquetSource != nil {
		if err := s.S3ParquetSource.Validate(); err != nil {
			invalidParams.AddNested("S3ParquetSource", err.(request.ErrInvalidParams))
		}
	}
	if s.SelectFields != nil {
		if err := s.SelectFields.Validate(); err != nil {
			invalidParams.AddNested("SelectFields", err.(request.ErrInvalidParams))
		}
	}
	if s.SelectFromCollection != nil {
		if err := s.SelectFromCollection.Validate(); err != nil {
			invalidParams.AddNested("SelectFromCollection", err.(request.ErrInvalidParams))
		}
	}
	if s.SnowflakeSource != nil {
		if err := s.SnowflakeSource.Validate(); err != nil {
			invalidParams.AddNested("SnowflakeSource", err.(request.ErrInvalidParams))
		}
	}
	if s.SnowflakeTarget != nil {
		if err := s.SnowflakeTarget.Validate(); err != nil {
			invalidParams.AddNested("SnowflakeTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.SparkConnectorSource != nil {
		if err := s.SparkConnectorSource.Validate(); err != nil {
			invalidParams.AddNested("SparkConnectorSource", err.(request.ErrInvalidParams))
		}
	}
	if s.SparkConnectorTarget != nil {
		if err := s.SparkConnectorTarget.Validate(); err != nil {
			invalidParams.AddNested("SparkConnectorTarget", err.(request.ErrInvalidParams))
		}
	}
	if s.SparkSQL != nil {
		if err := s.SparkSQL.Validate(); err != nil {
			invalidParams.AddNested("SparkSQL", err.(request.ErrInvalidParams))
		}
	}
	if s.Spigot != nil {
		if err := s.Spigot.Validate(); err != nil {
			invalidParams.AddNested("Spigot", err.(request.ErrInvalidParams))
		}
	}
	if s.SplitFields != nil {
		if err := s.SplitFields.Validate(); err != nil {
			invalidParams.AddNested("SplitFields", err.(request.ErrInvalidParams))
		}
	}
	if s.Union != nil {
		if err := s.Union.Validate(); err != nil {
			invalidParams.AddNested("Union", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAggregate sets the Aggregate field's value.
func (s *CodeGenConfigurationNode) SetAggregate(v *Aggregate) *CodeGenConfigurationNode {
	s.Aggregate = v
	return s
}

// SetAmazonRedshiftSource sets the AmazonRedshiftSource field's value.
func (s *CodeGenConfigurationNode) SetAmazonRedshiftSource(v *AmazonRedshiftSource) *CodeGenConfigurationNode {
	s.AmazonRedshiftSource = v
	return s
}

// SetAmazonRedshiftTarget sets the AmazonRedshiftTarget field's value.
func (s *CodeGenConfigurationNode) SetAmazonRedshiftTarget(v *AmazonRedshiftTarget) *CodeGenConfigurationNode {
	s.AmazonRedshiftTarget = v
	return s
}

// SetApplyMapping sets the ApplyMapping field's value.
func (s *CodeGenConfigurationNode) SetApplyMapping(v *ApplyMapping) *CodeGenConfigurationNode {
	s.ApplyMapping = v
	return s
}

// SetAthenaConnectorSource sets the AthenaConnectorSource field's value.
func (s *CodeGenConfigurationNode) SetAthenaConnectorSource(v *AthenaConnectorSource) *CodeGenConfigurationNode {
	s.AthenaConnectorSource = v
	return s
}

// SetCatalogDeltaSource sets the CatalogDeltaSource field's value.
func (s *CodeGenConfigurationNode) SetCatalogDeltaSource(v *CatalogDeltaSource) *CodeGenConfigurationNode {
	s.CatalogDeltaSource = v
	return s
}

// SetCatalogHudiSource sets the CatalogHudiSource field's value.
func (s *CodeGenConfigurationNode) SetCatalogHudiSource(v *CatalogHudiSource) *CodeGenConfigurationNode {
	s.CatalogHudiSource = v
	return s
}

// SetCatalogKafkaSource sets the CatalogKafkaSource field's value.
func (s *CodeGenConfigurationNode) SetCatalogKafkaSource(v *CatalogKafkaSource) *CodeGenConfigurationNode {
	s.CatalogKafkaSource = v
	return s
}

// SetCatalogKinesisSource sets the CatalogKinesisSource field's value.
func (s *CodeGenConfigurationNode) SetCatalogKinesisSource(v *CatalogKinesisSource) *CodeGenConfigurationNode {
	s.CatalogKinesisSource = v
	return s
}

// SetCatalogSource sets the CatalogSource field's value.
func (s *CodeGenConfigurationNode) SetCatalogSource(v *CatalogSource) *CodeGenConfigurationNode {
	s.CatalogSource = v
	return s
}

// SetCatalogTarget sets the CatalogTarget field's value.
func (s *CodeGenConfigurationNode) SetCatalogTarget(v *BasicCatalogTarget) *CodeGenConfigurationNode {
	s.CatalogTarget = v
	return s
}

// SetConnectorDataSource sets the ConnectorDataSource field's value.
func (s *CodeGenConfigurationNode) SetConnectorDataSource(v *ConnectorDataSource) *CodeGenConfigurationNode {
	s.ConnectorDataSource = v
	return s
}

// SetConnectorDataTarget sets the ConnectorDataTarget field's value.
func (s *CodeGenConfigurationNode) SetConnectorDataTarget(v *ConnectorDataTarget) *CodeGenConfigurationNode {
	s.ConnectorDataTarget = v
	return s
}

// SetCustomCode sets the CustomCode field's value.
func (s *CodeGenConfigurationNode) SetCustomCode(v *CustomCode) *CodeGenConfigurationNode {
	s.CustomCode = v
	return s
}

// SetDirectJDBCSource sets the DirectJDBCSource field's value.
func (s *CodeGenConfigurationNode) SetDirectJDBCSource(v *DirectJDBCSource) *CodeGenConfigurationNode {
	s.DirectJDBCSource = v
	return s
}

// SetDirectKafkaSource sets the DirectKafkaSource field's value.
func (s *CodeGenConfigurationNode) SetDirectKafkaSource(v *DirectKafkaSource) *CodeGenConfigurationNode {
	s.DirectKafkaSource = v
	return s
}

// SetDirectKinesisSource sets the DirectKinesisSource field's value.
func (s *CodeGenConfigurationNode) SetDirectKinesisSource(v *DirectKinesisSource) *CodeGenConfigurationNode {
	s.DirectKinesisSource = v
	return s
}

// SetDropDuplicates sets the DropDuplicates field's value.
func (s *CodeGenConfigurationNode) SetDropDuplicates(v *DropDuplicates) *CodeGenConfigurationNode {
	s.DropDuplicates = v
	return s
}

// SetDropFields sets the DropFields field's value.
func (s *CodeGenConfigurationNode) SetDropFields(v *DropFields) *CodeGenConfigurationNode {
	s.DropFields = v
	return s
}

// SetDropNullFields sets the DropNullFields field's value.
func (s *CodeGenConfigurationNode) SetDropNullFields(v *DropNullFields) *CodeGenConfigurationNode {
	s.DropNullFields = v
	return s
}

// SetDynamicTransform sets the DynamicTransform field's value.
func (s *CodeGenConfigurationNode) SetDynamicTransform(v *DynamicTransform) *CodeGenConfigurationNode {
	s.DynamicTransform = v
	return s
}

// SetDynamoDBCatalogSource sets the DynamoDBCatalogSource field's value.
func (s *CodeGenConfigurationNode) SetDynamoDBCatalogSource(v *DynamoDBCatalogSource) *CodeGenConfigurationNode {
	s.DynamoDBCatalogSource = v
	return s
}

// SetEvaluateDataQuality sets the EvaluateDataQuality field's value.
func (s *CodeGenConfigurationNode) SetEvaluateDataQuality(v *EvaluateDataQuality) *CodeGenConfigurationNode {
	s.EvaluateDataQuality = v
	return s
}

// SetEvaluateDataQualityMultiFrame sets the EvaluateDataQualityMultiFrame field's value.
func (s *CodeGenConfigurationNode) SetEvaluateDataQualityMultiFrame(v *EvaluateDataQualityMultiFrame) *CodeGenConfigurationNode {
	s.EvaluateDataQualityMultiFrame = v
	return s
}

// SetFillMissingValues sets the FillMissingValues field's value.
func (s *CodeGenConfigurationNode) SetFillMissingValues(v *FillMissingValues) *CodeGenConfigurationNode {
	s.FillMissingValues = v
	return s
}

// SetFilter sets the Filter field's value.
func (s *CodeGenConfigurationNode) SetFilter(v *Filter) *CodeGenConfigurationNode {
	s.Filter = v
	return s
}

// SetGovernedCatalogSource sets the GovernedCatalogSource field's value.
func (s *CodeGenConfigurationNode) SetGovernedCatalogSource(v *GovernedCatalogSource) *CodeGenConfigurationNode {
	s.GovernedCatalogSource = v
	return s
}

// SetGovernedCatalogTarget sets the GovernedCatalogTarget field's value.
func (s *CodeGenConfigurationNode) SetGovernedCatalogTarget(v *GovernedCatalogTarget) *CodeGenConfigurationNode {
	s.GovernedCatalogTarget = v
	return s
}

// SetJDBCConnectorSource sets the JDBCConnectorSource field's value.
func (s *CodeGenConfigurationNode) SetJDBCConnectorSource(v *JDBCConnectorSource) *CodeGenConfigurationNode {
	s.JDBCConnectorSource = v
	return s
}

// SetJDBCConnectorTarget sets the JDBCConnectorTarget field's value.
func (s *CodeGenConfigurationNode) SetJDBCConnectorTarget(v *JDBCConnectorTarget) *CodeGenConfigurationNode {
	s.JDBCConnectorTarget = v
	return s
}

// SetJoin sets the Join field's value.
func (s *CodeGenConfigurationNode) SetJoin(v *Join) *CodeGenConfigurationNode {
	s.Join = v
	return s
}

// SetMerge sets the Merge field's value.
func (s *CodeGenConfigurationNode) SetMerge(v *Merge) *CodeGenConfigurationNode {
	s.Merge = v
	return s
}

// SetMicrosoftSQLServerCatalogSource sets the MicrosoftSQLServerCatalogSource field's value.
func (s *CodeGenConfigurationNode) SetMicrosoftSQLServerCatalogSource(v *MicrosoftSQLServerCatalogSource) *CodeGenConfigurationNode {
	s.MicrosoftSQLServerCatalogSource = v
	return s
}

// SetMicrosoftSQLServerCatalogTarget sets the MicrosoftSQLServerCatalogTarget field's value.
func (s *CodeGenConfigurationNode) SetMicrosoftSQLServerCatalogTarget(v *MicrosoftSQLServerCatalogTarget) *CodeGenConfigurationNode {
	s.MicrosoftSQLServerCatalogTarget = v
	return s
}

// SetMySQLCatalogSource sets the MySQLCatalogSource field's value.
func (s *CodeGenConfigurationNode) SetMySQLCatalogSource(v *MySQLCatalogSource) *CodeGenConfigurationNode {
	s.MySQLCatalogSource = v
	return s
}

// SetMySQLCatalogTarget sets the MySQLCatalogTarget field's value.
func (s *CodeGenConfigurationNode) SetMySQLCatalogTarget(v *MySQLCatalogTarget) *CodeGenConfigurationNode {
	s.MySQLCatalogTarget = v
	return s
}

// SetOracleSQLCatalogSource sets the OracleSQLCatalogSource field's value.
func (s *CodeGenConfigurationNode) SetOracleSQLCatalogSource(v *OracleSQLCatalogSource) *CodeGenConfigurationNode {
	s.OracleSQLCatalogSource = v
	return s
}

// SetOracleSQLCatalogTarget sets the OracleSQLCatalogTarget field's value.
func (s *CodeGenConfigurationNode) SetOracleSQLCatalogTarget(v *OracleSQLCatalogTarget) *CodeGenConfigurationNode {
	s.OracleSQLCatalogTarget = v
	return s
}

// SetPIIDetection sets the PIIDetection field's value.
func (s *CodeGenConfigurationNode) SetPIIDetection(v *PIIDetection) *CodeGenConfigurationNode {
	s.PIIDetection = v
	return s
}

// SetPostgreSQLCatalogSource sets the PostgreSQLCatalogSource field's value.
func (s *CodeGenConfigurationNode) SetPostgreSQLCatalogSource(v *PostgreSQLCatalogSource) *CodeGenConfigurationNode {
	s.PostgreSQLCatalogSource = v
	return s
}

// SetPostgreSQLCatalogTarget sets the PostgreSQLCatalogTarget field's value.
func (s *CodeGenConfigurationNode) SetPostgreSQLCatalogTarget(v *PostgreSQLCatalogTarget) *CodeGenConfigurationNode {
	s.PostgreSQLCatalogTarget = v
	return s
}

// SetRecipe sets the Recipe field's value.
func (s *CodeGenConfigurationNode) SetRecipe(v *Recipe) *CodeGenConfigurationNode {
	s.Recipe = v
	return s
}

// SetRedshiftSource sets the RedshiftSource field's value.
func (s *CodeGenConfigurationNode) SetRedshiftSource(v *RedshiftSource) *CodeGenConfigurationNode {
	s.RedshiftSource = v
	return s
}

// SetRedshiftTarget sets the RedshiftTarget field's value.
func (s *CodeGenConfigurationNode) SetRedshiftTarget(v *RedshiftTarget) *CodeGenConfigurationNode {
	s.RedshiftTarget = v
	return s
}

// SetRelationalCatalogSource sets the RelationalCatalogSource field's value.
func (s *CodeGenConfigurationNode) SetRelationalCatalogSource(v *RelationalCatalogSource) *CodeGenConfigurationNode {
	s.RelationalCatalogSource = v
	return s
}

// SetRenameField sets the RenameField field's value.
func (s *CodeGenConfigurationNode) SetRenameField(v *RenameField) *CodeGenConfigurationNode {
	s.RenameField = v
	return s
}

// SetS3CatalogDeltaSource sets the S3CatalogDeltaSource field's value.
func (s *CodeGenConfigurationNode) SetS3CatalogDeltaSource(v *S3CatalogDeltaSource) *CodeGenConfigurationNode {
	s.S3CatalogDeltaSource = v
	return s
}

// SetS3CatalogHudiSource sets the S3CatalogHudiSource field's value.
func (s *CodeGenConfigurationNode) SetS3CatalogHudiSource(v *S3CatalogHudiSource) *CodeGenConfigurationNode {
	s.S3CatalogHudiSource = v
	return s
}

// SetS3CatalogSource sets the S3CatalogSource field's value.
func (s *CodeGenConfigurationNode) SetS3CatalogSource(v *S3CatalogSource) *CodeGenConfigurationNode {
	s.S3CatalogSource = v
	return s
}

// SetS3CatalogTarget sets the S3CatalogTarget field's value.
func (s *CodeGenConfigurationNode) SetS3CatalogTarget(v *S3CatalogTarget) *CodeGenConfigurationNode {
	s.S3CatalogTarget = v
	return s
}

// SetS3CsvSource sets the S3CsvSource field's value.
func (s *CodeGenConfigurationNode) SetS3CsvSource(v *S3CsvSource) *CodeGenConfigurationNode {
	s.S3CsvSource = v
	return s
}

// SetS3DeltaCatalogTarget sets the S3DeltaCatalogTarget field's value.
func (s *CodeGenConfigurationNode) SetS3DeltaCatalogTarget(v *S3DeltaCatalogTarget) *CodeGenConfigurationNode {
	s.S3DeltaCatalogTarget = v
	return s
}

// SetS3DeltaDirectTarget sets the S3DeltaDirectTarget field's value.
func (s *CodeGenConfigurationNode) SetS3DeltaDirectTarget(v *S3DeltaDirectTarget) *CodeGenConfigurationNode {
	s.S3DeltaDirectTarget = v
	return s
}

// SetS3DeltaSource sets the S3DeltaSource field's value.
func (s *CodeGenConfigurationNode) SetS3DeltaSource(v *S3DeltaSource) *CodeGenConfigurationNode {
	s.S3DeltaSource = v
	return s
}

// SetS3DirectTarget sets the S3DirectTarget field's value.
func (s *CodeGenConfigurationNode) SetS3DirectTarget(v *S3DirectTarget) *CodeGenConfigurationNode {
	s.S3DirectTarget = v
	return s
}

// SetS3GlueParquetTarget sets the S3GlueParquetTarget field's value.
func (s *CodeGenConfigurationNode) SetS3GlueParquetTarget(v *S3GlueParquetTarget) *CodeGenConfigurationNode {
	s.S3GlueParquetTarget = v
	return s
}

// SetS3HudiCatalogTarget sets the S3HudiCatalogTarget field's value.
func (s *CodeGenConfigurationNode) SetS3HudiCatalogTarget(v *S3HudiCatalogTarget) *CodeGenConfigurationNode {
	s.S3HudiCatalogTarget = v
	return s
}

// SetS3HudiDirectTarget sets the S3HudiDirectTarget field's value.
func (s *CodeGenConfigurationNode) SetS3HudiDirectTarget(v *S3HudiDirectTarget) *CodeGenConfigurationNode {
	s.S3HudiDirectTarget = v
	return s
}

// SetS3HudiSource sets the S3HudiSource field's value.
func (s *CodeGenConfigurationNode) SetS3HudiSource(v *S3HudiSource) *CodeGenConfigurationNode {
	s.S3HudiSource = v
	return s
}

// SetS3JsonSource sets the S3JsonSource field's value.
func (s *CodeGenConfigurationNode) SetS3JsonSource(v *S3JsonSource) *CodeGenConfigurationNode {
	s.S3JsonSource = v
	return s
}

// SetS3ParquetSource sets the S3ParquetSource field's value.
func (s *CodeGenConfigurationNode) SetS3ParquetSource(v *S3ParquetSource) *CodeGenConfigurationNode {
	s.S3ParquetSource = v
	return s
}

// SetSelectFields sets the SelectFields field's value.
func (s *CodeGenConfigurationNode) SetSelectFields(v *SelectFields) *CodeGenConfigurationNode {
	s.SelectFields = v
	return s
}

// SetSelectFromCollection sets the SelectFromCollection field's value.
func (s *CodeGenConfigurationNode) SetSelectFromCollection(v *SelectFromCollection) *CodeGenConfigurationNode {
	s.SelectFromCollection = v
	return s
}

// SetSnowflakeSource sets the SnowflakeSource field's value.
func (s *CodeGenConfigurationNode) SetSnowflakeSource(v *SnowflakeSource) *CodeGenConfigurationNode {
	s.SnowflakeSource = v
	return s
}

// SetSnowflakeTarget sets the SnowflakeTarget field's value.
func (s *CodeGenConfigurationNode) SetSnowflakeTarget(v *SnowflakeTarget) *CodeGenConfigurationNode {
	s.SnowflakeTarget = v
	return s
}

// SetSparkConnectorSource sets the SparkConnectorSource field's value.
func (s *CodeGenConfigurationNode) SetSparkConnectorSource(v *SparkConnectorSource) *CodeGenConfigurationNode {
	s.SparkConnectorSource = v
	return s
}

// SetSparkConnectorTarget sets the SparkConnectorTarget field's value.
func (s *CodeGenConfigurationNode) SetSparkConnectorTarget(v *SparkConnectorTarget) *CodeGenConfigurationNode {
	s.SparkConnectorTarget = v
	return s
}

// SetSparkSQL sets the SparkSQL field's value.
func (s *CodeGenConfigurationNode) SetSparkSQL(v *SparkSQL) *CodeGenConfigurationNode {
	s.SparkSQL = v
	return s
}

// SetSpigot sets the Spigot field's value.
func (s *CodeGenConfigurationNode) SetSpigot(v *Spigot) *CodeGenConfigurationNode {
	s.Spigot = v
	return s
}

// SetSplitFields sets the SplitFields field's value.
func (s *CodeGenConfigurationNode) SetSplitFields(v *SplitFields) *CodeGenConfigurationNode {
	s.SplitFields = v
	return s
}

// SetUnion sets the Union field's value.
func (s *CodeGenConfigurationNode) SetUnion(v *Union) *CodeGenConfigurationNode {
	s.Union = v
	return s
}

// Represents a directional edge in a directed acyclic graph (DAG).
type CodeGenEdge struct {
	_ struct{} `type:"structure"`

	// The ID of the node at which the edge starts.
	//
	// Source is a required field
	Source *string `min:"1" type:"string" required:"true"`

	// The ID of the node at which the edge ends.
	//
	// Target is a required field
	Target *string `min:"1" type:"string" required:"true"`

	// The target of the edge.
	TargetParameter *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 CodeGenEdge) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CodeGenEdge) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CodeGenEdge) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CodeGenEdge"}
	if s.Source == nil {
		invalidParams.Add(request.NewErrParamRequired("Source"))
	}
	if s.Source != nil && len(*s.Source) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Source", 1))
	}
	if s.Target == nil {
		invalidParams.Add(request.NewErrParamRequired("Target"))
	}
	if s.Target != nil && len(*s.Target) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Target", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSource sets the Source field's value.
func (s *CodeGenEdge) SetSource(v string) *CodeGenEdge {
	s.Source = &v
	return s
}

// SetTarget sets the Target field's value.
func (s *CodeGenEdge) SetTarget(v string) *CodeGenEdge {
	s.Target = &v
	return s
}

// SetTargetParameter sets the TargetParameter field's value.
func (s *CodeGenEdge) SetTargetParameter(v string) *CodeGenEdge {
	s.TargetParameter = &v
	return s
}

// Represents a node in a directed acyclic graph (DAG)
type CodeGenNode struct {
	_ struct{} `type:"structure"`

	// Properties of the node, in the form of name-value pairs.
	//
	// Args is a required field
	Args []*CodeGenNodeArg `type:"list" required:"true"`

	// A node identifier that is unique within the node's graph.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// The line number of the node.
	LineNumber *int64 `type:"integer"`

	// The type of node that this is.
	//
	// NodeType is a required field
	NodeType *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 CodeGenNode) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CodeGenNode) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CodeGenNode) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CodeGenNode"}
	if s.Args == nil {
		invalidParams.Add(request.NewErrParamRequired("Args"))
	}
	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.NodeType == nil {
		invalidParams.Add(request.NewErrParamRequired("NodeType"))
	}
	if s.Args != nil {
		for i, v := range s.Args {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Args", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetArgs sets the Args field's value.
func (s *CodeGenNode) SetArgs(v []*CodeGenNodeArg) *CodeGenNode {
	s.Args = v
	return s
}

// SetId sets the Id field's value.
func (s *CodeGenNode) SetId(v string) *CodeGenNode {
	s.Id = &v
	return s
}

// SetLineNumber sets the LineNumber field's value.
func (s *CodeGenNode) SetLineNumber(v int64) *CodeGenNode {
	s.LineNumber = &v
	return s
}

// SetNodeType sets the NodeType field's value.
func (s *CodeGenNode) SetNodeType(v string) *CodeGenNode {
	s.NodeType = &v
	return s
}

// An argument or property of a node.
type CodeGenNodeArg struct {
	_ struct{} `type:"structure"`

	// The name of the argument or property.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// True if the value is used as a parameter.
	Param *bool `type:"boolean"`

	// The value of the argument or property.
	//
	// 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 CodeGenNodeArg) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CodeGenNodeArg) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CodeGenNodeArg) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CodeGenNodeArg"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	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 *CodeGenNodeArg) SetName(v string) *CodeGenNodeArg {
	s.Name = &v
	return s
}

// SetParam sets the Param field's value.
func (s *CodeGenNodeArg) SetParam(v bool) *CodeGenNodeArg {
	s.Param = &v
	return s
}

// SetValue sets the Value field's value.
func (s *CodeGenNodeArg) SetValue(v string) *CodeGenNodeArg {
	s.Value = &v
	return s
}

// A column in a Table.
type Column struct {
	_ struct{} `type:"structure"`

	// A free-form text comment.
	Comment *string `type:"string"`

	// The name of the Column.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// These key-value pairs define properties associated with the column.
	Parameters map[string]*string `type:"map"`

	// The data type of the Column.
	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 Column) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Column) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Column) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Column"}
	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
}

// SetComment sets the Comment field's value.
func (s *Column) SetComment(v string) *Column {
	s.Comment = &v
	return s
}

// SetName sets the Name field's value.
func (s *Column) SetName(v string) *Column {
	s.Name = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *Column) SetParameters(v map[string]*string) *Column {
	s.Parameters = v
	return s
}

// SetType sets the Type field's value.
func (s *Column) SetType(v string) *Column {
	s.Type = &v
	return s
}

// Encapsulates a column name that failed and the reason for failure.
type ColumnError struct {
	_ struct{} `type:"structure"`

	// The name of the column that failed.
	ColumnName *string `min:"1" type:"string"`

	// An error message with the reason for the failure of an operation.
	Error *ErrorDetail `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnError) GoString() string {
	return s.String()
}

// SetColumnName sets the ColumnName field's value.
func (s *ColumnError) SetColumnName(v string) *ColumnError {
	s.ColumnName = &v
	return s
}

// SetError sets the Error field's value.
func (s *ColumnError) SetError(v *ErrorDetail) *ColumnError {
	s.Error = v
	return s
}

// A structure containing the column name and column importance score for a
// column.
//
// Column importance helps you understand how columns contribute to your model,
// by identifying which columns in your records are more important than others.
type ColumnImportance struct {
	_ struct{} `type:"structure"`

	// The name of a column.
	ColumnName *string `min:"1" type:"string"`

	// The column importance score for the column, as a decimal.
	Importance *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 ColumnImportance) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnImportance) GoString() string {
	return s.String()
}

// SetColumnName sets the ColumnName field's value.
func (s *ColumnImportance) SetColumnName(v string) *ColumnImportance {
	s.ColumnName = &v
	return s
}

// SetImportance sets the Importance field's value.
func (s *ColumnImportance) SetImportance(v float64) *ColumnImportance {
	s.Importance = &v
	return s
}

// A filter that uses both column-level and row-level filtering.
type ColumnRowFilter struct {
	_ struct{} `type:"structure"`

	// A string containing the name of the column.
	ColumnName *string `min:"1" type:"string"`

	// A string containing the row-level filter expression.
	RowFilterExpression *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 ColumnRowFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnRowFilter) GoString() string {
	return s.String()
}

// SetColumnName sets the ColumnName field's value.
func (s *ColumnRowFilter) SetColumnName(v string) *ColumnRowFilter {
	s.ColumnName = &v
	return s
}

// SetRowFilterExpression sets the RowFilterExpression field's value.
func (s *ColumnRowFilter) SetRowFilterExpression(v string) *ColumnRowFilter {
	s.RowFilterExpression = &v
	return s
}

// Represents the generated column-level statistics for a table or partition.
type ColumnStatistics struct {
	_ struct{} `type:"structure"`

	// The timestamp of when column statistics were generated.
	//
	// AnalyzedTime is a required field
	AnalyzedTime *time.Time `type:"timestamp" required:"true"`

	// Name of column which statistics belong to.
	//
	// ColumnName is a required field
	ColumnName *string `min:"1" type:"string" required:"true"`

	// The data type of the column.
	//
	// ColumnType is a required field
	ColumnType *string `type:"string" required:"true"`

	// A ColumnStatisticData object that contains the statistics data values.
	//
	// StatisticsData is a required field
	StatisticsData *ColumnStatisticsData `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 ColumnStatistics) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnStatistics) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ColumnStatistics) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ColumnStatistics"}
	if s.AnalyzedTime == nil {
		invalidParams.Add(request.NewErrParamRequired("AnalyzedTime"))
	}
	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.ColumnType == nil {
		invalidParams.Add(request.NewErrParamRequired("ColumnType"))
	}
	if s.StatisticsData == nil {
		invalidParams.Add(request.NewErrParamRequired("StatisticsData"))
	}
	if s.StatisticsData != nil {
		if err := s.StatisticsData.Validate(); err != nil {
			invalidParams.AddNested("StatisticsData", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAnalyzedTime sets the AnalyzedTime field's value.
func (s *ColumnStatistics) SetAnalyzedTime(v time.Time) *ColumnStatistics {
	s.AnalyzedTime = &v
	return s
}

// SetColumnName sets the ColumnName field's value.
func (s *ColumnStatistics) SetColumnName(v string) *ColumnStatistics {
	s.ColumnName = &v
	return s
}

// SetColumnType sets the ColumnType field's value.
func (s *ColumnStatistics) SetColumnType(v string) *ColumnStatistics {
	s.ColumnType = &v
	return s
}

// SetStatisticsData sets the StatisticsData field's value.
func (s *ColumnStatistics) SetStatisticsData(v *ColumnStatisticsData) *ColumnStatistics {
	s.StatisticsData = v
	return s
}

// Contains the individual types of column statistics data. Only one data object
// should be set and indicated by the Type attribute.
type ColumnStatisticsData struct {
	_ struct{} `type:"structure"`

	// Binary column statistics data.
	BinaryColumnStatisticsData *BinaryColumnStatisticsData `type:"structure"`

	// Boolean column statistics data.
	BooleanColumnStatisticsData *BooleanColumnStatisticsData `type:"structure"`

	// Date column statistics data.
	DateColumnStatisticsData *DateColumnStatisticsData `type:"structure"`

	// Decimal column statistics data. UnscaledValues within are Base64-encoded
	// binary objects storing big-endian, two's complement representations of the
	// decimal's unscaled value.
	DecimalColumnStatisticsData *DecimalColumnStatisticsData `type:"structure"`

	// Double column statistics data.
	DoubleColumnStatisticsData *DoubleColumnStatisticsData `type:"structure"`

	// Long column statistics data.
	LongColumnStatisticsData *LongColumnStatisticsData `type:"structure"`

	// String column statistics data.
	StringColumnStatisticsData *StringColumnStatisticsData `type:"structure"`

	// The type of column statistics data.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"ColumnStatisticsType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnStatisticsData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnStatisticsData) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ColumnStatisticsData) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ColumnStatisticsData"}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.BinaryColumnStatisticsData != nil {
		if err := s.BinaryColumnStatisticsData.Validate(); err != nil {
			invalidParams.AddNested("BinaryColumnStatisticsData", err.(request.ErrInvalidParams))
		}
	}
	if s.BooleanColumnStatisticsData != nil {
		if err := s.BooleanColumnStatisticsData.Validate(); err != nil {
			invalidParams.AddNested("BooleanColumnStatisticsData", err.(request.ErrInvalidParams))
		}
	}
	if s.DateColumnStatisticsData != nil {
		if err := s.DateColumnStatisticsData.Validate(); err != nil {
			invalidParams.AddNested("DateColumnStatisticsData", err.(request.ErrInvalidParams))
		}
	}
	if s.DecimalColumnStatisticsData != nil {
		if err := s.DecimalColumnStatisticsData.Validate(); err != nil {
			invalidParams.AddNested("DecimalColumnStatisticsData", err.(request.ErrInvalidParams))
		}
	}
	if s.DoubleColumnStatisticsData != nil {
		if err := s.DoubleColumnStatisticsData.Validate(); err != nil {
			invalidParams.AddNested("DoubleColumnStatisticsData", err.(request.ErrInvalidParams))
		}
	}
	if s.LongColumnStatisticsData != nil {
		if err := s.LongColumnStatisticsData.Validate(); err != nil {
			invalidParams.AddNested("LongColumnStatisticsData", err.(request.ErrInvalidParams))
		}
	}
	if s.StringColumnStatisticsData != nil {
		if err := s.StringColumnStatisticsData.Validate(); err != nil {
			invalidParams.AddNested("StringColumnStatisticsData", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBinaryColumnStatisticsData sets the BinaryColumnStatisticsData field's value.
func (s *ColumnStatisticsData) SetBinaryColumnStatisticsData(v *BinaryColumnStatisticsData) *ColumnStatisticsData {
	s.BinaryColumnStatisticsData = v
	return s
}

// SetBooleanColumnStatisticsData sets the BooleanColumnStatisticsData field's value.
func (s *ColumnStatisticsData) SetBooleanColumnStatisticsData(v *BooleanColumnStatisticsData) *ColumnStatisticsData {
	s.BooleanColumnStatisticsData = v
	return s
}

// SetDateColumnStatisticsData sets the DateColumnStatisticsData field's value.
func (s *ColumnStatisticsData) SetDateColumnStatisticsData(v *DateColumnStatisticsData) *ColumnStatisticsData {
	s.DateColumnStatisticsData = v
	return s
}

// SetDecimalColumnStatisticsData sets the DecimalColumnStatisticsData field's value.
func (s *ColumnStatisticsData) SetDecimalColumnStatisticsData(v *DecimalColumnStatisticsData) *ColumnStatisticsData {
	s.DecimalColumnStatisticsData = v
	return s
}

// SetDoubleColumnStatisticsData sets the DoubleColumnStatisticsData field's value.
func (s *ColumnStatisticsData) SetDoubleColumnStatisticsData(v *DoubleColumnStatisticsData) *ColumnStatisticsData {
	s.DoubleColumnStatisticsData = v
	return s
}

// SetLongColumnStatisticsData sets the LongColumnStatisticsData field's value.
func (s *ColumnStatisticsData) SetLongColumnStatisticsData(v *LongColumnStatisticsData) *ColumnStatisticsData {
	s.LongColumnStatisticsData = v
	return s
}

// SetStringColumnStatisticsData sets the StringColumnStatisticsData field's value.
func (s *ColumnStatisticsData) SetStringColumnStatisticsData(v *StringColumnStatisticsData) *ColumnStatisticsData {
	s.StringColumnStatisticsData = v
	return s
}

// SetType sets the Type field's value.
func (s *ColumnStatisticsData) SetType(v string) *ColumnStatisticsData {
	s.Type = &v
	return s
}

// Encapsulates a ColumnStatistics object that failed and the reason for failure.
type ColumnStatisticsError struct {
	_ struct{} `type:"structure"`

	// The ColumnStatistics of the column.
	ColumnStatistics *ColumnStatistics `type:"structure"`

	// An error message with the reason for the failure of an operation.
	Error *ErrorDetail `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnStatisticsError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnStatisticsError) GoString() string {
	return s.String()
}

// SetColumnStatistics sets the ColumnStatistics field's value.
func (s *ColumnStatisticsError) SetColumnStatistics(v *ColumnStatistics) *ColumnStatisticsError {
	s.ColumnStatistics = v
	return s
}

// SetError sets the Error field's value.
func (s *ColumnStatisticsError) SetError(v *ErrorDetail) *ColumnStatisticsError {
	s.Error = v
	return s
}

// An exception thrown when you try to stop a task run when there is no task
// running.
type ColumnStatisticsTaskNotRunningException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnStatisticsTaskNotRunningException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnStatisticsTaskNotRunningException) GoString() string {
	return s.String()
}

func newErrorColumnStatisticsTaskNotRunningException(v protocol.ResponseMetadata) error {
	return &ColumnStatisticsTaskNotRunningException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ColumnStatisticsTaskNotRunningException) Code() string {
	return "ColumnStatisticsTaskNotRunningException"
}

// Message returns the exception's message.
func (s *ColumnStatisticsTaskNotRunningException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ColumnStatisticsTaskNotRunningException) OrigErr() error {
	return nil
}

func (s *ColumnStatisticsTaskNotRunningException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ColumnStatisticsTaskNotRunningException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ColumnStatisticsTaskNotRunningException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The object that shows the details of the column stats run.
type ColumnStatisticsTaskRun struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the table resides. If none is supplied,
	// the Amazon Web Services account ID is used by default.
	CatalogID *string `min:"1" type:"string"`

	// A list of the column names. If none is supplied, all column names for the
	// table will be used by default.
	ColumnNameList []*string `type:"list"`

	// The identifier for the particular column statistics task run.
	ColumnStatisticsTaskRunId *string `min:"1" type:"string"`

	// The time that this task was created.
	CreationTime *time.Time `type:"timestamp"`

	// The Amazon Web Services account ID.
	CustomerId *string `type:"string"`

	// The calculated DPU usage in seconds for all autoscaled workers.
	DPUSeconds *float64 `type:"double"`

	// The database where the table resides.
	DatabaseName *string `type:"string"`

	// The end time of the task.
	EndTime *time.Time `type:"timestamp"`

	// The error message for the job.
	ErrorMessage *string `type:"string"`

	// The last point in time when this task was modified.
	LastUpdated *time.Time `type:"timestamp"`

	// The number of workers used to generate column statistics. The job is preconfigured
	// to autoscale up to 25 instances.
	NumberOfWorkers *int64 `min:"1" type:"integer"`

	// The IAM role that the service assumes to generate statistics.
	Role *string `type:"string"`

	// The percentage of rows used to generate statistics. If none is supplied,
	// the entire table will be used to generate stats.
	SampleSize *float64 `type:"double"`

	// Name of the security configuration that is used to encrypt CloudWatch logs
	// for the column stats task run.
	SecurityConfiguration *string `type:"string"`

	// The start time of the task.
	StartTime *time.Time `type:"timestamp"`

	// The status of the task run.
	Status *string `type:"string" enum:"ColumnStatisticsState"`

	// The name of the table for which column statistics is generated.
	TableName *string `type:"string"`

	// The type of workers being used for generating stats. The default is g.1x.
	WorkerType *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 ColumnStatisticsTaskRun) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnStatisticsTaskRun) GoString() string {
	return s.String()
}

// SetCatalogID sets the CatalogID field's value.
func (s *ColumnStatisticsTaskRun) SetCatalogID(v string) *ColumnStatisticsTaskRun {
	s.CatalogID = &v
	return s
}

// SetColumnNameList sets the ColumnNameList field's value.
func (s *ColumnStatisticsTaskRun) SetColumnNameList(v []*string) *ColumnStatisticsTaskRun {
	s.ColumnNameList = v
	return s
}

// SetColumnStatisticsTaskRunId sets the ColumnStatisticsTaskRunId field's value.
func (s *ColumnStatisticsTaskRun) SetColumnStatisticsTaskRunId(v string) *ColumnStatisticsTaskRun {
	s.ColumnStatisticsTaskRunId = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *ColumnStatisticsTaskRun) SetCreationTime(v time.Time) *ColumnStatisticsTaskRun {
	s.CreationTime = &v
	return s
}

// SetCustomerId sets the CustomerId field's value.
func (s *ColumnStatisticsTaskRun) SetCustomerId(v string) *ColumnStatisticsTaskRun {
	s.CustomerId = &v
	return s
}

// SetDPUSeconds sets the DPUSeconds field's value.
func (s *ColumnStatisticsTaskRun) SetDPUSeconds(v float64) *ColumnStatisticsTaskRun {
	s.DPUSeconds = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *ColumnStatisticsTaskRun) SetDatabaseName(v string) *ColumnStatisticsTaskRun {
	s.DatabaseName = &v
	return s
}

// SetEndTime sets the EndTime field's value.
func (s *ColumnStatisticsTaskRun) SetEndTime(v time.Time) *ColumnStatisticsTaskRun {
	s.EndTime = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *ColumnStatisticsTaskRun) SetErrorMessage(v string) *ColumnStatisticsTaskRun {
	s.ErrorMessage = &v
	return s
}

// SetLastUpdated sets the LastUpdated field's value.
func (s *ColumnStatisticsTaskRun) SetLastUpdated(v time.Time) *ColumnStatisticsTaskRun {
	s.LastUpdated = &v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *ColumnStatisticsTaskRun) SetNumberOfWorkers(v int64) *ColumnStatisticsTaskRun {
	s.NumberOfWorkers = &v
	return s
}

// SetRole sets the Role field's value.
func (s *ColumnStatisticsTaskRun) SetRole(v string) *ColumnStatisticsTaskRun {
	s.Role = &v
	return s
}

// SetSampleSize sets the SampleSize field's value.
func (s *ColumnStatisticsTaskRun) SetSampleSize(v float64) *ColumnStatisticsTaskRun {
	s.SampleSize = &v
	return s
}

// SetSecurityConfiguration sets the SecurityConfiguration field's value.
func (s *ColumnStatisticsTaskRun) SetSecurityConfiguration(v string) *ColumnStatisticsTaskRun {
	s.SecurityConfiguration = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *ColumnStatisticsTaskRun) SetStartTime(v time.Time) *ColumnStatisticsTaskRun {
	s.StartTime = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ColumnStatisticsTaskRun) SetStatus(v string) *ColumnStatisticsTaskRun {
	s.Status = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *ColumnStatisticsTaskRun) SetTableName(v string) *ColumnStatisticsTaskRun {
	s.TableName = &v
	return s
}

// SetWorkerType sets the WorkerType field's value.
func (s *ColumnStatisticsTaskRun) SetWorkerType(v string) *ColumnStatisticsTaskRun {
	s.WorkerType = &v
	return s
}

// An exception thrown when you try to start another job while running a column
// stats generation job.
type ColumnStatisticsTaskRunningException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnStatisticsTaskRunningException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnStatisticsTaskRunningException) GoString() string {
	return s.String()
}

func newErrorColumnStatisticsTaskRunningException(v protocol.ResponseMetadata) error {
	return &ColumnStatisticsTaskRunningException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ColumnStatisticsTaskRunningException) Code() string {
	return "ColumnStatisticsTaskRunningException"
}

// Message returns the exception's message.
func (s *ColumnStatisticsTaskRunningException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ColumnStatisticsTaskRunningException) OrigErr() error {
	return nil
}

func (s *ColumnStatisticsTaskRunningException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ColumnStatisticsTaskRunningException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ColumnStatisticsTaskRunningException) RequestID() string {
	return s.RespMetadata.RequestID
}

// An exception thrown when you try to stop a task run.
type ColumnStatisticsTaskStoppingException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnStatisticsTaskStoppingException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ColumnStatisticsTaskStoppingException) GoString() string {
	return s.String()
}

func newErrorColumnStatisticsTaskStoppingException(v protocol.ResponseMetadata) error {
	return &ColumnStatisticsTaskStoppingException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ColumnStatisticsTaskStoppingException) Code() string {
	return "ColumnStatisticsTaskStoppingException"
}

// Message returns the exception's message.
func (s *ColumnStatisticsTaskStoppingException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ColumnStatisticsTaskStoppingException) OrigErr() error {
	return nil
}

func (s *ColumnStatisticsTaskStoppingException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ColumnStatisticsTaskStoppingException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ColumnStatisticsTaskStoppingException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Two processes are trying to modify a resource simultaneously.
type ConcurrentModificationException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConcurrentModificationException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConcurrentModificationException) GoString() string {
	return s.String()
}

func newErrorConcurrentModificationException(v protocol.ResponseMetadata) error {
	return &ConcurrentModificationException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ConcurrentModificationException) Code() string {
	return "ConcurrentModificationException"
}

// Message returns the exception's message.
func (s *ConcurrentModificationException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ConcurrentModificationException) OrigErr() error {
	return nil
}

func (s *ConcurrentModificationException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ConcurrentModificationException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ConcurrentModificationException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Too many jobs are being run concurrently.
type ConcurrentRunsExceededException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConcurrentRunsExceededException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConcurrentRunsExceededException) GoString() string {
	return s.String()
}

func newErrorConcurrentRunsExceededException(v protocol.ResponseMetadata) error {
	return &ConcurrentRunsExceededException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ConcurrentRunsExceededException) Code() string {
	return "ConcurrentRunsExceededException"
}

// Message returns the exception's message.
func (s *ConcurrentRunsExceededException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ConcurrentRunsExceededException) OrigErr() error {
	return nil
}

func (s *ConcurrentRunsExceededException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ConcurrentRunsExceededException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ConcurrentRunsExceededException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Defines a condition under which a trigger fires.
type Condition struct {
	_ struct{} `type:"structure"`

	// The state of the crawler to which this condition applies.
	CrawlState *string `type:"string" enum:"CrawlState"`

	// The name of the crawler to which this condition applies.
	CrawlerName *string `min:"1" type:"string"`

	// The name of the job whose JobRuns this condition applies to, and on which
	// this trigger waits.
	JobName *string `min:"1" type:"string"`

	// A logical operator.
	LogicalOperator *string `type:"string" enum:"LogicalOperator"`

	// The condition state. Currently, the only job states that a trigger can listen
	// for are SUCCEEDED, STOPPED, FAILED, and TIMEOUT. The only crawler states
	// that a trigger can listen for are SUCCEEDED, FAILED, and CANCELLED.
	State *string `type:"string" enum:"JobRunState"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Condition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Condition) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Condition) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Condition"}
	if s.CrawlerName != nil && len(*s.CrawlerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CrawlerName", 1))
	}
	if s.JobName != nil && len(*s.JobName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("JobName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCrawlState sets the CrawlState field's value.
func (s *Condition) SetCrawlState(v string) *Condition {
	s.CrawlState = &v
	return s
}

// SetCrawlerName sets the CrawlerName field's value.
func (s *Condition) SetCrawlerName(v string) *Condition {
	s.CrawlerName = &v
	return s
}

// SetJobName sets the JobName field's value.
func (s *Condition) SetJobName(v string) *Condition {
	s.JobName = &v
	return s
}

// SetLogicalOperator sets the LogicalOperator field's value.
func (s *Condition) SetLogicalOperator(v string) *Condition {
	s.LogicalOperator = &v
	return s
}

// SetState sets the State field's value.
func (s *Condition) SetState(v string) *Condition {
	s.State = &v
	return s
}

// A specified condition was not satisfied.
type ConditionCheckFailureException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConditionCheckFailureException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConditionCheckFailureException) GoString() string {
	return s.String()
}

func newErrorConditionCheckFailureException(v protocol.ResponseMetadata) error {
	return &ConditionCheckFailureException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ConditionCheckFailureException) Code() string {
	return "ConditionCheckFailureException"
}

// Message returns the exception's message.
func (s *ConditionCheckFailureException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ConditionCheckFailureException) OrigErr() error {
	return nil
}

func (s *ConditionCheckFailureException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ConditionCheckFailureException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ConditionCheckFailureException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Specifies the values that an admin sets for each job or session parameter
// configured in a Glue usage profile.
type ConfigurationObject struct {
	_ struct{} `type:"structure"`

	// A list of allowed values for the parameter.
	AllowedValues []*string `type:"list"`

	// A default value for the parameter.
	DefaultValue *string `min:"1" type:"string"`

	// A maximum allowed value for the parameter.
	MaxValue *string `min:"1" type:"string"`

	// A minimum allowed value for the parameter.
	MinValue *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 ConfigurationObject) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConfigurationObject) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ConfigurationObject) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ConfigurationObject"}
	if s.DefaultValue != nil && len(*s.DefaultValue) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DefaultValue", 1))
	}
	if s.MaxValue != nil && len(*s.MaxValue) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("MaxValue", 1))
	}
	if s.MinValue != nil && len(*s.MinValue) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("MinValue", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllowedValues sets the AllowedValues field's value.
func (s *ConfigurationObject) SetAllowedValues(v []*string) *ConfigurationObject {
	s.AllowedValues = v
	return s
}

// SetDefaultValue sets the DefaultValue field's value.
func (s *ConfigurationObject) SetDefaultValue(v string) *ConfigurationObject {
	s.DefaultValue = &v
	return s
}

// SetMaxValue sets the MaxValue field's value.
func (s *ConfigurationObject) SetMaxValue(v string) *ConfigurationObject {
	s.MaxValue = &v
	return s
}

// SetMinValue sets the MinValue field's value.
func (s *ConfigurationObject) SetMinValue(v string) *ConfigurationObject {
	s.MinValue = &v
	return s
}

// The CreatePartitions API was called on a table that has indexes enabled.
type ConflictException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConflictException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConflictException) GoString() string {
	return s.String()
}

func newErrorConflictException(v protocol.ResponseMetadata) error {
	return &ConflictException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ConflictException) Code() string {
	return "ConflictException"
}

// Message returns the exception's message.
func (s *ConflictException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ConflictException) OrigErr() error {
	return nil
}

func (s *ConflictException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ConflictException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ConflictException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The confusion matrix shows you what your transform is predicting accurately
// and what types of errors it is making.
//
// For more information, see Confusion matrix (https://en.wikipedia.org/wiki/Confusion_matrix)
// in Wikipedia.
type ConfusionMatrix struct {
	_ struct{} `type:"structure"`

	// The number of matches in the data that the transform didn't find, in the
	// confusion matrix for your transform.
	NumFalseNegatives *int64 `type:"long"`

	// The number of nonmatches in the data that the transform incorrectly classified
	// as a match, in the confusion matrix for your transform.
	NumFalsePositives *int64 `type:"long"`

	// The number of nonmatches in the data that the transform correctly rejected,
	// in the confusion matrix for your transform.
	NumTrueNegatives *int64 `type:"long"`

	// The number of matches in the data that the transform correctly found, in
	// the confusion matrix for your transform.
	NumTruePositives *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 ConfusionMatrix) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConfusionMatrix) GoString() string {
	return s.String()
}

// SetNumFalseNegatives sets the NumFalseNegatives field's value.
func (s *ConfusionMatrix) SetNumFalseNegatives(v int64) *ConfusionMatrix {
	s.NumFalseNegatives = &v
	return s
}

// SetNumFalsePositives sets the NumFalsePositives field's value.
func (s *ConfusionMatrix) SetNumFalsePositives(v int64) *ConfusionMatrix {
	s.NumFalsePositives = &v
	return s
}

// SetNumTrueNegatives sets the NumTrueNegatives field's value.
func (s *ConfusionMatrix) SetNumTrueNegatives(v int64) *ConfusionMatrix {
	s.NumTrueNegatives = &v
	return s
}

// SetNumTruePositives sets the NumTruePositives field's value.
func (s *ConfusionMatrix) SetNumTruePositives(v int64) *ConfusionMatrix {
	s.NumTruePositives = &v
	return s
}

// Defines a connection to a data source.
type Connection struct {
	_ struct{} `type:"structure"`

	// The authentication properties of the connection.
	AuthenticationConfiguration *AuthenticationConfiguration `type:"structure"`

	// These key-value pairs define parameters for the connection:
	//
	//    * HOST - The host URI: either the fully qualified domain name (FQDN) or
	//    the IPv4 address of the database host.
	//
	//    * PORT - The port number, between 1024 and 65535, of the port on which
	//    the database host is listening for database connections.
	//
	//    * USER_NAME - The name under which to log in to the database. The value
	//    string for USER_NAME is "USERNAME".
	//
	//    * PASSWORD - A password, if one is used, for the user name.
	//
	//    * ENCRYPTED_PASSWORD - When you enable connection password protection
	//    by setting ConnectionPasswordEncryption in the Data Catalog encryption
	//    settings, this field stores the encrypted password.
	//
	//    * JDBC_DRIVER_JAR_URI - The Amazon Simple Storage Service (Amazon S3)
	//    path of the JAR file that contains the JDBC driver to use.
	//
	//    * JDBC_DRIVER_CLASS_NAME - The class name of the JDBC driver to use.
	//
	//    * JDBC_ENGINE - The name of the JDBC engine to use.
	//
	//    * JDBC_ENGINE_VERSION - The version of the JDBC engine to use.
	//
	//    * CONFIG_FILES - (Reserved for future use.)
	//
	//    * INSTANCE_ID - The instance ID to use.
	//
	//    * JDBC_CONNECTION_URL - The URL for connecting to a JDBC data source.
	//
	//    * JDBC_ENFORCE_SSL - A Boolean string (true, false) specifying whether
	//    Secure Sockets Layer (SSL) with hostname matching is enforced for the
	//    JDBC connection on the client. The default is false.
	//
	//    * CUSTOM_JDBC_CERT - An Amazon S3 location specifying the customer's root
	//    certificate. Glue uses this root certificate to validate the customer’s
	//    certificate when connecting to the customer database. Glue only handles
	//    X.509 certificates. The certificate provided must be DER-encoded and supplied
	//    in Base64 encoding PEM format.
	//
	//    * SKIP_CUSTOM_JDBC_CERT_VALIDATION - By default, this is false. Glue validates
	//    the Signature algorithm and Subject Public Key Algorithm for the customer
	//    certificate. The only permitted algorithms for the Signature algorithm
	//    are SHA256withRSA, SHA384withRSA or SHA512withRSA. For the Subject Public
	//    Key Algorithm, the key length must be at least 2048. You can set the value
	//    of this property to true to skip Glue’s validation of the customer certificate.
	//
	//    * CUSTOM_JDBC_CERT_STRING - A custom JDBC certificate string which is
	//    used for domain match or distinguished name match to prevent a man-in-the-middle
	//    attack. In Oracle database, this is used as the SSL_SERVER_CERT_DN; in
	//    Microsoft SQL Server, this is used as the hostNameInCertificate.
	//
	//    * CONNECTION_URL - The URL for connecting to a general (non-JDBC) data
	//    source.
	//
	//    * SECRET_ID - The secret ID used for the secret manager of credentials.
	//
	//    * CONNECTOR_URL - The connector URL for a MARKETPLACE or CUSTOM connection.
	//
	//    * CONNECTOR_TYPE - The connector type for a MARKETPLACE or CUSTOM connection.
	//
	//    * CONNECTOR_CLASS_NAME - The connector class name for a MARKETPLACE or
	//    CUSTOM connection.
	//
	//    * KAFKA_BOOTSTRAP_SERVERS - A comma-separated list of host and port pairs
	//    that are the addresses of the Apache Kafka brokers in a Kafka cluster
	//    to which a Kafka client will connect to and bootstrap itself.
	//
	//    * KAFKA_SSL_ENABLED - Whether to enable or disable SSL on an Apache Kafka
	//    connection. Default value is "true".
	//
	//    * KAFKA_CUSTOM_CERT - The Amazon S3 URL for the private CA cert file (.pem
	//    format). The default is an empty string.
	//
	//    * KAFKA_SKIP_CUSTOM_CERT_VALIDATION - Whether to skip the validation of
	//    the CA cert file or not. Glue validates for three algorithms: SHA256withRSA,
	//    SHA384withRSA and SHA512withRSA. Default value is "false".
	//
	//    * KAFKA_CLIENT_KEYSTORE - The Amazon S3 location of the client keystore
	//    file for Kafka client side authentication (Optional).
	//
	//    * KAFKA_CLIENT_KEYSTORE_PASSWORD - The password to access the provided
	//    keystore (Optional).
	//
	//    * KAFKA_CLIENT_KEY_PASSWORD - A keystore can consist of multiple keys,
	//    so this is the password to access the client key to be used with the Kafka
	//    server side key (Optional).
	//
	//    * ENCRYPTED_KAFKA_CLIENT_KEYSTORE_PASSWORD - The encrypted version of
	//    the Kafka client keystore password (if the user has the Glue encrypt passwords
	//    setting selected).
	//
	//    * ENCRYPTED_KAFKA_CLIENT_KEY_PASSWORD - The encrypted version of the Kafka
	//    client key password (if the user has the Glue encrypt passwords setting
	//    selected).
	//
	//    * KAFKA_SASL_MECHANISM - "SCRAM-SHA-512", "GSSAPI", "AWS_MSK_IAM", or
	//    "PLAIN". These are the supported SASL Mechanisms (https://www.iana.org/assignments/sasl-mechanisms/sasl-mechanisms.xhtml).
	//
	//    * KAFKA_SASL_PLAIN_USERNAME - A plaintext username used to authenticate
	//    with the "PLAIN" mechanism.
	//
	//    * KAFKA_SASL_PLAIN_PASSWORD - A plaintext password used to authenticate
	//    with the "PLAIN" mechanism.
	//
	//    * ENCRYPTED_KAFKA_SASL_PLAIN_PASSWORD - The encrypted version of the Kafka
	//    SASL PLAIN password (if the user has the Glue encrypt passwords setting
	//    selected).
	//
	//    * KAFKA_SASL_SCRAM_USERNAME - A plaintext username used to authenticate
	//    with the "SCRAM-SHA-512" mechanism.
	//
	//    * KAFKA_SASL_SCRAM_PASSWORD - A plaintext password used to authenticate
	//    with the "SCRAM-SHA-512" mechanism.
	//
	//    * ENCRYPTED_KAFKA_SASL_SCRAM_PASSWORD - The encrypted version of the Kafka
	//    SASL SCRAM password (if the user has the Glue encrypt passwords setting
	//    selected).
	//
	//    * KAFKA_SASL_SCRAM_SECRETS_ARN - The Amazon Resource Name of a secret
	//    in Amazon Web Services Secrets Manager.
	//
	//    * KAFKA_SASL_GSSAPI_KEYTAB - The S3 location of a Kerberos keytab file.
	//    A keytab stores long-term keys for one or more principals. For more information,
	//    see MIT Kerberos Documentation: Keytab (https://web.mit.edu/kerberos/krb5-latest/doc/basic/keytab_def.html).
	//
	//    * KAFKA_SASL_GSSAPI_KRB5_CONF - The S3 location of a Kerberos krb5.conf
	//    file. A krb5.conf stores Kerberos configuration information, such as the
	//    location of the KDC server. For more information, see MIT Kerberos Documentation:
	//    krb5.conf (https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html).
	//
	//    * KAFKA_SASL_GSSAPI_SERVICE - The Kerberos service name, as set with sasl.kerberos.service.name
	//    in your Kafka Configuration (https://kafka.apache.org/documentation/#brokerconfigs_sasl.kerberos.service.name).
	//
	//    * KAFKA_SASL_GSSAPI_PRINCIPAL - The name of the Kerberos princial used
	//    by Glue. For more information, see Kafka Documentation: Configuring Kafka
	//    Brokers (https://kafka.apache.org/documentation/#security_sasl_kerberos_clientconfig).
	ConnectionProperties map[string]*string `type:"map"`

	// The type of the connection. Currently, SFTP is not supported.
	ConnectionType *string `type:"string" enum:"ConnectionType"`

	// The timestamp of the time that this connection definition was created.
	CreationTime *time.Time `type:"timestamp"`

	// The description of the connection.
	Description *string `type:"string"`

	// A timestamp of the time this connection was last validated.
	LastConnectionValidationTime *time.Time `type:"timestamp"`

	// The user, group, or role that last updated this connection definition.
	LastUpdatedBy *string `min:"1" type:"string"`

	// The timestamp of the last time the connection definition was updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// A list of criteria that can be used in selecting this connection.
	MatchCriteria []*string `type:"list"`

	// The name of the connection definition.
	Name *string `min:"1" type:"string"`

	// The physical connection requirements, such as virtual private cloud (VPC)
	// and SecurityGroup, that are needed to make this connection successfully.
	PhysicalConnectionRequirements *PhysicalConnectionRequirements `type:"structure"`

	// The status of the connection. Can be one of: READY, IN_PROGRESS, or FAILED.
	Status *string `type:"string" enum:"ConnectionStatus"`

	// The reason for the connection status.
	StatusReason *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 Connection) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Connection) GoString() string {
	return s.String()
}

// SetAuthenticationConfiguration sets the AuthenticationConfiguration field's value.
func (s *Connection) SetAuthenticationConfiguration(v *AuthenticationConfiguration) *Connection {
	s.AuthenticationConfiguration = v
	return s
}

// SetConnectionProperties sets the ConnectionProperties field's value.
func (s *Connection) SetConnectionProperties(v map[string]*string) *Connection {
	s.ConnectionProperties = v
	return s
}

// SetConnectionType sets the ConnectionType field's value.
func (s *Connection) SetConnectionType(v string) *Connection {
	s.ConnectionType = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *Connection) SetCreationTime(v time.Time) *Connection {
	s.CreationTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Connection) SetDescription(v string) *Connection {
	s.Description = &v
	return s
}

// SetLastConnectionValidationTime sets the LastConnectionValidationTime field's value.
func (s *Connection) SetLastConnectionValidationTime(v time.Time) *Connection {
	s.LastConnectionValidationTime = &v
	return s
}

// SetLastUpdatedBy sets the LastUpdatedBy field's value.
func (s *Connection) SetLastUpdatedBy(v string) *Connection {
	s.LastUpdatedBy = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *Connection) SetLastUpdatedTime(v time.Time) *Connection {
	s.LastUpdatedTime = &v
	return s
}

// SetMatchCriteria sets the MatchCriteria field's value.
func (s *Connection) SetMatchCriteria(v []*string) *Connection {
	s.MatchCriteria = v
	return s
}

// SetName sets the Name field's value.
func (s *Connection) SetName(v string) *Connection {
	s.Name = &v
	return s
}

// SetPhysicalConnectionRequirements sets the PhysicalConnectionRequirements field's value.
func (s *Connection) SetPhysicalConnectionRequirements(v *PhysicalConnectionRequirements) *Connection {
	s.PhysicalConnectionRequirements = v
	return s
}

// SetStatus sets the Status field's value.
func (s *Connection) SetStatus(v string) *Connection {
	s.Status = &v
	return s
}

// SetStatusReason sets the StatusReason field's value.
func (s *Connection) SetStatusReason(v string) *Connection {
	s.StatusReason = &v
	return s
}

// A structure that is used to specify a connection to create or update.
type ConnectionInput struct {
	_ struct{} `type:"structure"`

	// The authentication properties of the connection. Used for a Salesforce connection.
	AuthenticationConfiguration *AuthenticationConfigurationInput_ `type:"structure"`

	// These key-value pairs define parameters for the connection.
	//
	// ConnectionProperties is a required field
	ConnectionProperties map[string]*string `type:"map" required:"true"`

	// The type of the connection. Currently, these types are supported:
	//
	//    * JDBC - Designates a connection to a database through Java Database Connectivity
	//    (JDBC). JDBC Connections use the following ConnectionParameters. Required:
	//    All of (HOST, PORT, JDBC_ENGINE) or JDBC_CONNECTION_URL. Required: All
	//    of (USERNAME, PASSWORD) or SECRET_ID. Optional: JDBC_ENFORCE_SSL, CUSTOM_JDBC_CERT,
	//    CUSTOM_JDBC_CERT_STRING, SKIP_CUSTOM_JDBC_CERT_VALIDATION. These parameters
	//    are used to configure SSL with JDBC.
	//
	//    * KAFKA - Designates a connection to an Apache Kafka streaming platform.
	//    KAFKA Connections use the following ConnectionParameters. Required: KAFKA_BOOTSTRAP_SERVERS.
	//    Optional: KAFKA_SSL_ENABLED, KAFKA_CUSTOM_CERT, KAFKA_SKIP_CUSTOM_CERT_VALIDATION.
	//    These parameters are used to configure SSL with KAFKA. Optional: KAFKA_CLIENT_KEYSTORE,
	//    KAFKA_CLIENT_KEYSTORE_PASSWORD, KAFKA_CLIENT_KEY_PASSWORD, ENCRYPTED_KAFKA_CLIENT_KEYSTORE_PASSWORD,
	//    ENCRYPTED_KAFKA_CLIENT_KEY_PASSWORD. These parameters are used to configure
	//    TLS client configuration with SSL in KAFKA. Optional: KAFKA_SASL_MECHANISM.
	//    Can be specified as SCRAM-SHA-512, GSSAPI, or AWS_MSK_IAM. Optional: KAFKA_SASL_SCRAM_USERNAME,
	//    KAFKA_SASL_SCRAM_PASSWORD, ENCRYPTED_KAFKA_SASL_SCRAM_PASSWORD. These
	//    parameters are used to configure SASL/SCRAM-SHA-512 authentication with
	//    KAFKA. Optional: KAFKA_SASL_GSSAPI_KEYTAB, KAFKA_SASL_GSSAPI_KRB5_CONF,
	//    KAFKA_SASL_GSSAPI_SERVICE, KAFKA_SASL_GSSAPI_PRINCIPAL. These parameters
	//    are used to configure SASL/GSSAPI authentication with KAFKA.
	//
	//    * MONGODB - Designates a connection to a MongoDB document database. MONGODB
	//    Connections use the following ConnectionParameters. Required: CONNECTION_URL.
	//    Required: All of (USERNAME, PASSWORD) or SECRET_ID.
	//
	//    * SALESFORCE - Designates a connection to Salesforce using OAuth authencation.
	//    Requires the AuthenticationConfiguration member to be configured.
	//
	//    * NETWORK - Designates a network connection to a data source within an
	//    Amazon Virtual Private Cloud environment (Amazon VPC). NETWORK Connections
	//    do not require ConnectionParameters. Instead, provide a PhysicalConnectionRequirements.
	//
	//    * MARKETPLACE - Uses configuration settings contained in a connector purchased
	//    from Amazon Web Services Marketplace to read from and write to data stores
	//    that are not natively supported by Glue. MARKETPLACE Connections use the
	//    following ConnectionParameters. Required: CONNECTOR_TYPE, CONNECTOR_URL,
	//    CONNECTOR_CLASS_NAME, CONNECTION_URL. Required for JDBC CONNECTOR_TYPE
	//    connections: All of (USERNAME, PASSWORD) or SECRET_ID.
	//
	//    * CUSTOM - Uses configuration settings contained in a custom connector
	//    to read from and write to data stores that are not natively supported
	//    by Glue.
	//
	// SFTP is not supported.
	//
	// For more information about how optional ConnectionProperties are used to
	// configure features in Glue, consult Glue connection properties (https://docs.aws.amazon.com/glue/latest/dg/connection-defining.html).
	//
	// For more information about how optional ConnectionProperties are used to
	// configure features in Glue Studio, consult Using connectors and connections
	// (https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html).
	//
	// ConnectionType is a required field
	ConnectionType *string `type:"string" required:"true" enum:"ConnectionType"`

	// The description of the connection.
	Description *string `type:"string"`

	// A list of criteria that can be used in selecting this connection.
	MatchCriteria []*string `type:"list"`

	// The name of the connection.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The physical connection requirements, such as virtual private cloud (VPC)
	// and SecurityGroup, that are needed to successfully make this connection.
	PhysicalConnectionRequirements *PhysicalConnectionRequirements `type:"structure"`

	// A flag to validate the credentials during create connection. Used for a Salesforce
	// connection. Default is true.
	ValidateCredentials *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 ConnectionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConnectionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ConnectionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ConnectionInput"}
	if s.ConnectionProperties == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionProperties"))
	}
	if s.ConnectionType == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionType"))
	}
	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.AuthenticationConfiguration != nil {
		if err := s.AuthenticationConfiguration.Validate(); err != nil {
			invalidParams.AddNested("AuthenticationConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.PhysicalConnectionRequirements != nil {
		if err := s.PhysicalConnectionRequirements.Validate(); err != nil {
			invalidParams.AddNested("PhysicalConnectionRequirements", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAuthenticationConfiguration sets the AuthenticationConfiguration field's value.
func (s *ConnectionInput) SetAuthenticationConfiguration(v *AuthenticationConfigurationInput_) *ConnectionInput {
	s.AuthenticationConfiguration = v
	return s
}

// SetConnectionProperties sets the ConnectionProperties field's value.
func (s *ConnectionInput) SetConnectionProperties(v map[string]*string) *ConnectionInput {
	s.ConnectionProperties = v
	return s
}

// SetConnectionType sets the ConnectionType field's value.
func (s *ConnectionInput) SetConnectionType(v string) *ConnectionInput {
	s.ConnectionType = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *ConnectionInput) SetDescription(v string) *ConnectionInput {
	s.Description = &v
	return s
}

// SetMatchCriteria sets the MatchCriteria field's value.
func (s *ConnectionInput) SetMatchCriteria(v []*string) *ConnectionInput {
	s.MatchCriteria = v
	return s
}

// SetName sets the Name field's value.
func (s *ConnectionInput) SetName(v string) *ConnectionInput {
	s.Name = &v
	return s
}

// SetPhysicalConnectionRequirements sets the PhysicalConnectionRequirements field's value.
func (s *ConnectionInput) SetPhysicalConnectionRequirements(v *PhysicalConnectionRequirements) *ConnectionInput {
	s.PhysicalConnectionRequirements = v
	return s
}

// SetValidateCredentials sets the ValidateCredentials field's value.
func (s *ConnectionInput) SetValidateCredentials(v bool) *ConnectionInput {
	s.ValidateCredentials = &v
	return s
}

// The data structure used by the Data Catalog to encrypt the password as part
// of CreateConnection or UpdateConnection and store it in the ENCRYPTED_PASSWORD
// field in the connection properties. You can enable catalog encryption or
// only password encryption.
//
// When a CreationConnection request arrives containing a password, the Data
// Catalog first encrypts the password using your KMS key. It then encrypts
// the whole connection object again if catalog encryption is also enabled.
//
// This encryption requires that you set KMS key permissions to enable or restrict
// access on the password key according to your security requirements. For example,
// you might want only administrators to have decrypt permission on the password
// key.
type ConnectionPasswordEncryption struct {
	_ struct{} `type:"structure"`

	// An KMS key that is used to encrypt the connection password.
	//
	// If connection password protection is enabled, the caller of CreateConnection
	// and UpdateConnection needs at least kms:Encrypt permission on the specified
	// KMS key, to encrypt passwords before storing them in the Data Catalog.
	//
	// You can set the decrypt permission to enable or restrict access on the password
	// key according to your security requirements.
	AwsKmsKeyId *string `min:"1" type:"string"`

	// When the ReturnConnectionPasswordEncrypted flag is set to "true", passwords
	// remain encrypted in the responses of GetConnection and GetConnections. This
	// encryption takes effect independently from catalog encryption.
	//
	// ReturnConnectionPasswordEncrypted is a required field
	ReturnConnectionPasswordEncrypted *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 ConnectionPasswordEncryption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConnectionPasswordEncryption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ConnectionPasswordEncryption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ConnectionPasswordEncryption"}
	if s.AwsKmsKeyId != nil && len(*s.AwsKmsKeyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AwsKmsKeyId", 1))
	}
	if s.ReturnConnectionPasswordEncrypted == nil {
		invalidParams.Add(request.NewErrParamRequired("ReturnConnectionPasswordEncrypted"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsKmsKeyId sets the AwsKmsKeyId field's value.
func (s *ConnectionPasswordEncryption) SetAwsKmsKeyId(v string) *ConnectionPasswordEncryption {
	s.AwsKmsKeyId = &v
	return s
}

// SetReturnConnectionPasswordEncrypted sets the ReturnConnectionPasswordEncrypted field's value.
func (s *ConnectionPasswordEncryption) SetReturnConnectionPasswordEncrypted(v bool) *ConnectionPasswordEncryption {
	s.ReturnConnectionPasswordEncrypted = &v
	return s
}

// Specifies the connections used by a job.
type ConnectionsList struct {
	_ struct{} `type:"structure"`

	// A list of connections used by the job.
	Connections []*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 ConnectionsList) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConnectionsList) GoString() string {
	return s.String()
}

// SetConnections sets the Connections field's value.
func (s *ConnectionsList) SetConnections(v []*string) *ConnectionsList {
	s.Connections = v
	return s
}

// Specifies a source generated with standard connection options.
type ConnectorDataSource struct {
	_ struct{} `type:"structure"`

	// The connectionType, as provided to the underlying Glue library. This node
	// type supports the following connection types:
	//
	//    * opensearch
	//
	//    * azuresql
	//
	//    * azurecosmos
	//
	//    * bigquery
	//
	//    * saphana
	//
	//    * teradata
	//
	//    * vertica
	//
	// ConnectionType is a required field
	ConnectionType *string `type:"string" required:"true"`

	// A map specifying connection options for the node. You can find standard connection
	// options for the corresponding connection type in the Connection parameters
	// (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html)
	// section of the Glue documentation.
	//
	// Data is a required field
	Data map[string]*string `type:"map" required:"true"`

	// The name of this source node.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the data schema for this source.
	OutputSchemas []*GlueSchema `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 ConnectorDataSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConnectorDataSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ConnectorDataSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ConnectorDataSource"}
	if s.ConnectionType == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionType"))
	}
	if s.Data == nil {
		invalidParams.Add(request.NewErrParamRequired("Data"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.OutputSchemas != nil {
		for i, v := range s.OutputSchemas {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputSchemas", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConnectionType sets the ConnectionType field's value.
func (s *ConnectorDataSource) SetConnectionType(v string) *ConnectorDataSource {
	s.ConnectionType = &v
	return s
}

// SetData sets the Data field's value.
func (s *ConnectorDataSource) SetData(v map[string]*string) *ConnectorDataSource {
	s.Data = v
	return s
}

// SetName sets the Name field's value.
func (s *ConnectorDataSource) SetName(v string) *ConnectorDataSource {
	s.Name = &v
	return s
}

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *ConnectorDataSource) SetOutputSchemas(v []*GlueSchema) *ConnectorDataSource {
	s.OutputSchemas = v
	return s
}

// Specifies a target generated with standard connection options.
type ConnectorDataTarget struct {
	_ struct{} `type:"structure"`

	// The connectionType, as provided to the underlying Glue library. This node
	// type supports the following connection types:
	//
	//    * opensearch
	//
	//    * azuresql
	//
	//    * azurecosmos
	//
	//    * bigquery
	//
	//    * saphana
	//
	//    * teradata
	//
	//    * vertica
	//
	// ConnectionType is a required field
	ConnectionType *string `type:"string" required:"true"`

	// A map specifying connection options for the node. You can find standard connection
	// options for the corresponding connection type in the Connection parameters
	// (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html)
	// section of the Glue documentation.
	//
	// Data is a required field
	Data map[string]*string `type:"map" required:"true"`

	// The nodes that are inputs to the data target.
	Inputs []*string `min:"1" type:"list"`

	// The name of this target node.
	//
	// Name is a required field
	Name *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 ConnectorDataTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConnectorDataTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ConnectorDataTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ConnectorDataTarget"}
	if s.ConnectionType == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionType"))
	}
	if s.Data == nil {
		invalidParams.Add(request.NewErrParamRequired("Data"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConnectionType sets the ConnectionType field's value.
func (s *ConnectorDataTarget) SetConnectionType(v string) *ConnectorDataTarget {
	s.ConnectionType = &v
	return s
}

// SetData sets the Data field's value.
func (s *ConnectorDataTarget) SetData(v map[string]*string) *ConnectorDataTarget {
	s.Data = v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *ConnectorDataTarget) SetInputs(v []*string) *ConnectorDataTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *ConnectorDataTarget) SetName(v string) *ConnectorDataTarget {
	s.Name = &v
	return s
}

// The details of a crawl in the workflow.
type Crawl struct {
	_ struct{} `type:"structure"`

	// The date and time on which the crawl completed.
	CompletedOn *time.Time `type:"timestamp"`

	// The error message associated with the crawl.
	ErrorMessage *string `type:"string"`

	// The log group associated with the crawl.
	LogGroup *string `min:"1" type:"string"`

	// The log stream associated with the crawl.
	LogStream *string `min:"1" type:"string"`

	// The date and time on which the crawl started.
	StartedOn *time.Time `type:"timestamp"`

	// The state of the crawler.
	State *string `type:"string" enum:"CrawlState"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Crawl) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Crawl) GoString() string {
	return s.String()
}

// SetCompletedOn sets the CompletedOn field's value.
func (s *Crawl) SetCompletedOn(v time.Time) *Crawl {
	s.CompletedOn = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *Crawl) SetErrorMessage(v string) *Crawl {
	s.ErrorMessage = &v
	return s
}

// SetLogGroup sets the LogGroup field's value.
func (s *Crawl) SetLogGroup(v string) *Crawl {
	s.LogGroup = &v
	return s
}

// SetLogStream sets the LogStream field's value.
func (s *Crawl) SetLogStream(v string) *Crawl {
	s.LogStream = &v
	return s
}

// SetStartedOn sets the StartedOn field's value.
func (s *Crawl) SetStartedOn(v time.Time) *Crawl {
	s.StartedOn = &v
	return s
}

// SetState sets the State field's value.
func (s *Crawl) SetState(v string) *Crawl {
	s.State = &v
	return s
}

// Specifies a crawler program that examines a data source and uses classifiers
// to try to determine its schema. If successful, the crawler records metadata
// concerning the data source in the Glue Data Catalog.
type Crawler struct {
	_ struct{} `type:"structure"`

	// A list of UTF-8 strings that specify the custom classifiers that are associated
	// with the crawler.
	Classifiers []*string `type:"list"`

	// Crawler configuration information. This versioned JSON string allows users
	// to specify aspects of a crawler's behavior. For more information, see Setting
	// crawler configuration options (https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html).
	Configuration *string `type:"string"`

	// If the crawler is running, contains the total time elapsed since the last
	// crawl began.
	CrawlElapsedTime *int64 `type:"long"`

	// The name of the SecurityConfiguration structure to be used by this crawler.
	CrawlerSecurityConfiguration *string `type:"string"`

	// The time that the crawler was created.
	CreationTime *time.Time `type:"timestamp"`

	// The name of the database in which the crawler's output is stored.
	DatabaseName *string `type:"string"`

	// A description of the crawler.
	Description *string `type:"string"`

	// Specifies whether the crawler should use Lake Formation credentials for the
	// crawler instead of the IAM role credentials.
	LakeFormationConfiguration *LakeFormationConfiguration `type:"structure"`

	// The status of the last crawl, and potentially error information if an error
	// occurred.
	LastCrawl *LastCrawlInfo `type:"structure"`

	// The time that the crawler was last updated.
	LastUpdated *time.Time `type:"timestamp"`

	// A configuration that specifies whether data lineage is enabled for the crawler.
	LineageConfiguration *LineageConfiguration `type:"structure"`

	// The name of the crawler.
	Name *string `min:"1" type:"string"`

	// A policy that specifies whether to crawl the entire dataset again, or to
	// crawl only folders that were added since the last crawler run.
	RecrawlPolicy *RecrawlPolicy `type:"structure"`

	// The Amazon Resource Name (ARN) of an IAM role that's used to access customer
	// resources, such as Amazon Simple Storage Service (Amazon S3) data.
	Role *string `type:"string"`

	// For scheduled crawlers, the schedule when the crawler runs.
	Schedule *Schedule `type:"structure"`

	// The policy that specifies update and delete behaviors for the crawler.
	SchemaChangePolicy *SchemaChangePolicy `type:"structure"`

	// Indicates whether the crawler is running, or whether a run is pending.
	State *string `type:"string" enum:"CrawlerState"`

	// The prefix added to the names of tables that are created.
	TablePrefix *string `type:"string"`

	// A collection of targets to crawl.
	Targets *CrawlerTargets `type:"structure"`

	// The version of the crawler.
	Version *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 Crawler) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Crawler) GoString() string {
	return s.String()
}

// SetClassifiers sets the Classifiers field's value.
func (s *Crawler) SetClassifiers(v []*string) *Crawler {
	s.Classifiers = v
	return s
}

// SetConfiguration sets the Configuration field's value.
func (s *Crawler) SetConfiguration(v string) *Crawler {
	s.Configuration = &v
	return s
}

// SetCrawlElapsedTime sets the CrawlElapsedTime field's value.
func (s *Crawler) SetCrawlElapsedTime(v int64) *Crawler {
	s.CrawlElapsedTime = &v
	return s
}

// SetCrawlerSecurityConfiguration sets the CrawlerSecurityConfiguration field's value.
func (s *Crawler) SetCrawlerSecurityConfiguration(v string) *Crawler {
	s.CrawlerSecurityConfiguration = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *Crawler) SetCreationTime(v time.Time) *Crawler {
	s.CreationTime = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *Crawler) SetDatabaseName(v string) *Crawler {
	s.DatabaseName = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Crawler) SetDescription(v string) *Crawler {
	s.Description = &v
	return s
}

// SetLakeFormationConfiguration sets the LakeFormationConfiguration field's value.
func (s *Crawler) SetLakeFormationConfiguration(v *LakeFormationConfiguration) *Crawler {
	s.LakeFormationConfiguration = v
	return s
}

// SetLastCrawl sets the LastCrawl field's value.
func (s *Crawler) SetLastCrawl(v *LastCrawlInfo) *Crawler {
	s.LastCrawl = v
	return s
}

// SetLastUpdated sets the LastUpdated field's value.
func (s *Crawler) SetLastUpdated(v time.Time) *Crawler {
	s.LastUpdated = &v
	return s
}

// SetLineageConfiguration sets the LineageConfiguration field's value.
func (s *Crawler) SetLineageConfiguration(v *LineageConfiguration) *Crawler {
	s.LineageConfiguration = v
	return s
}

// SetName sets the Name field's value.
func (s *Crawler) SetName(v string) *Crawler {
	s.Name = &v
	return s
}

// SetRecrawlPolicy sets the RecrawlPolicy field's value.
func (s *Crawler) SetRecrawlPolicy(v *RecrawlPolicy) *Crawler {
	s.RecrawlPolicy = v
	return s
}

// SetRole sets the Role field's value.
func (s *Crawler) SetRole(v string) *Crawler {
	s.Role = &v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *Crawler) SetSchedule(v *Schedule) *Crawler {
	s.Schedule = v
	return s
}

// SetSchemaChangePolicy sets the SchemaChangePolicy field's value.
func (s *Crawler) SetSchemaChangePolicy(v *SchemaChangePolicy) *Crawler {
	s.SchemaChangePolicy = v
	return s
}

// SetState sets the State field's value.
func (s *Crawler) SetState(v string) *Crawler {
	s.State = &v
	return s
}

// SetTablePrefix sets the TablePrefix field's value.
func (s *Crawler) SetTablePrefix(v string) *Crawler {
	s.TablePrefix = &v
	return s
}

// SetTargets sets the Targets field's value.
func (s *Crawler) SetTargets(v *CrawlerTargets) *Crawler {
	s.Targets = v
	return s
}

// SetVersion sets the Version field's value.
func (s *Crawler) SetVersion(v int64) *Crawler {
	s.Version = &v
	return s
}

// Contains the information for a run of a crawler.
type CrawlerHistory struct {
	_ struct{} `type:"structure"`

	// A UUID identifier for each crawl.
	CrawlId *string `type:"string"`

	// The number of data processing units (DPU) used in hours for the crawl.
	DPUHour *float64 `type:"double"`

	// The date and time on which the crawl ended.
	EndTime *time.Time `type:"timestamp"`

	// If an error occurred, the error message associated with the crawl.
	ErrorMessage *string `type:"string"`

	// The log group associated with the crawl.
	LogGroup *string `min:"1" type:"string"`

	// The log stream associated with the crawl.
	LogStream *string `min:"1" type:"string"`

	// The prefix for a CloudWatch message about this crawl.
	MessagePrefix *string `min:"1" type:"string"`

	// The date and time on which the crawl started.
	StartTime *time.Time `type:"timestamp"`

	// The state of the crawl.
	State *string `type:"string" enum:"CrawlerHistoryState"`

	// A run summary for the specific crawl in JSON. Contains the catalog tables
	// and partitions that were added, updated, or deleted.
	Summary *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 CrawlerHistory) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CrawlerHistory) GoString() string {
	return s.String()
}

// SetCrawlId sets the CrawlId field's value.
func (s *CrawlerHistory) SetCrawlId(v string) *CrawlerHistory {
	s.CrawlId = &v
	return s
}

// SetDPUHour sets the DPUHour field's value.
func (s *CrawlerHistory) SetDPUHour(v float64) *CrawlerHistory {
	s.DPUHour = &v
	return s
}

// SetEndTime sets the EndTime field's value.
func (s *CrawlerHistory) SetEndTime(v time.Time) *CrawlerHistory {
	s.EndTime = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *CrawlerHistory) SetErrorMessage(v string) *CrawlerHistory {
	s.ErrorMessage = &v
	return s
}

// SetLogGroup sets the LogGroup field's value.
func (s *CrawlerHistory) SetLogGroup(v string) *CrawlerHistory {
	s.LogGroup = &v
	return s
}

// SetLogStream sets the LogStream field's value.
func (s *CrawlerHistory) SetLogStream(v string) *CrawlerHistory {
	s.LogStream = &v
	return s
}

// SetMessagePrefix sets the MessagePrefix field's value.
func (s *CrawlerHistory) SetMessagePrefix(v string) *CrawlerHistory {
	s.MessagePrefix = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *CrawlerHistory) SetStartTime(v time.Time) *CrawlerHistory {
	s.StartTime = &v
	return s
}

// SetState sets the State field's value.
func (s *CrawlerHistory) SetState(v string) *CrawlerHistory {
	s.State = &v
	return s
}

// SetSummary sets the Summary field's value.
func (s *CrawlerHistory) SetSummary(v string) *CrawlerHistory {
	s.Summary = &v
	return s
}

// Metrics for a specified crawler.
type CrawlerMetrics struct {
	_ struct{} `type:"structure"`

	// The name of the crawler.
	CrawlerName *string `min:"1" type:"string"`

	// The duration of the crawler's most recent run, in seconds.
	LastRuntimeSeconds *float64 `type:"double"`

	// The median duration of this crawler's runs, in seconds.
	MedianRuntimeSeconds *float64 `type:"double"`

	// True if the crawler is still estimating how long it will take to complete
	// this run.
	StillEstimating *bool `type:"boolean"`

	// The number of tables created by this crawler.
	TablesCreated *int64 `type:"integer"`

	// The number of tables deleted by this crawler.
	TablesDeleted *int64 `type:"integer"`

	// The number of tables updated by this crawler.
	TablesUpdated *int64 `type:"integer"`

	// The estimated time left to complete a running crawl.
	TimeLeftSeconds *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 CrawlerMetrics) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CrawlerMetrics) GoString() string {
	return s.String()
}

// SetCrawlerName sets the CrawlerName field's value.
func (s *CrawlerMetrics) SetCrawlerName(v string) *CrawlerMetrics {
	s.CrawlerName = &v
	return s
}

// SetLastRuntimeSeconds sets the LastRuntimeSeconds field's value.
func (s *CrawlerMetrics) SetLastRuntimeSeconds(v float64) *CrawlerMetrics {
	s.LastRuntimeSeconds = &v
	return s
}

// SetMedianRuntimeSeconds sets the MedianRuntimeSeconds field's value.
func (s *CrawlerMetrics) SetMedianRuntimeSeconds(v float64) *CrawlerMetrics {
	s.MedianRuntimeSeconds = &v
	return s
}

// SetStillEstimating sets the StillEstimating field's value.
func (s *CrawlerMetrics) SetStillEstimating(v bool) *CrawlerMetrics {
	s.StillEstimating = &v
	return s
}

// SetTablesCreated sets the TablesCreated field's value.
func (s *CrawlerMetrics) SetTablesCreated(v int64) *CrawlerMetrics {
	s.TablesCreated = &v
	return s
}

// SetTablesDeleted sets the TablesDeleted field's value.
func (s *CrawlerMetrics) SetTablesDeleted(v int64) *CrawlerMetrics {
	s.TablesDeleted = &v
	return s
}

// SetTablesUpdated sets the TablesUpdated field's value.
func (s *CrawlerMetrics) SetTablesUpdated(v int64) *CrawlerMetrics {
	s.TablesUpdated = &v
	return s
}

// SetTimeLeftSeconds sets the TimeLeftSeconds field's value.
func (s *CrawlerMetrics) SetTimeLeftSeconds(v float64) *CrawlerMetrics {
	s.TimeLeftSeconds = &v
	return s
}

// The details of a Crawler node present in the workflow.
type CrawlerNodeDetails struct {
	_ struct{} `type:"structure"`

	// A list of crawls represented by the crawl node.
	Crawls []*Crawl `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 CrawlerNodeDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CrawlerNodeDetails) GoString() string {
	return s.String()
}

// SetCrawls sets the Crawls field's value.
func (s *CrawlerNodeDetails) SetCrawls(v []*Crawl) *CrawlerNodeDetails {
	s.Crawls = v
	return s
}

// The specified crawler is not running.
type CrawlerNotRunningException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CrawlerNotRunningException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CrawlerNotRunningException) GoString() string {
	return s.String()
}

func newErrorCrawlerNotRunningException(v protocol.ResponseMetadata) error {
	return &CrawlerNotRunningException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *CrawlerNotRunningException) Code() string {
	return "CrawlerNotRunningException"
}

// Message returns the exception's message.
func (s *CrawlerNotRunningException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *CrawlerNotRunningException) OrigErr() error {
	return nil
}

func (s *CrawlerNotRunningException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *CrawlerNotRunningException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *CrawlerNotRunningException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The operation cannot be performed because the crawler is already running.
type CrawlerRunningException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CrawlerRunningException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CrawlerRunningException) GoString() string {
	return s.String()
}

func newErrorCrawlerRunningException(v protocol.ResponseMetadata) error {
	return &CrawlerRunningException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *CrawlerRunningException) Code() string {
	return "CrawlerRunningException"
}

// Message returns the exception's message.
func (s *CrawlerRunningException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *CrawlerRunningException) OrigErr() error {
	return nil
}

func (s *CrawlerRunningException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *CrawlerRunningException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *CrawlerRunningException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The specified crawler is stopping.
type CrawlerStoppingException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CrawlerStoppingException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CrawlerStoppingException) GoString() string {
	return s.String()
}

func newErrorCrawlerStoppingException(v protocol.ResponseMetadata) error {
	return &CrawlerStoppingException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *CrawlerStoppingException) Code() string {
	return "CrawlerStoppingException"
}

// Message returns the exception's message.
func (s *CrawlerStoppingException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *CrawlerStoppingException) OrigErr() error {
	return nil
}

func (s *CrawlerStoppingException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *CrawlerStoppingException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *CrawlerStoppingException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Specifies data stores to crawl.
type CrawlerTargets struct {
	_ struct{} `type:"structure"`

	// Specifies Glue Data Catalog targets.
	CatalogTargets []*CatalogTarget `type:"list"`

	// Specifies Delta data store targets.
	DeltaTargets []*DeltaTarget `type:"list"`

	// Specifies Amazon DynamoDB targets.
	DynamoDBTargets []*DynamoDBTarget `type:"list"`

	// Specifies Apache Hudi data store targets.
	HudiTargets []*HudiTarget `type:"list"`

	// Specifies Apache Iceberg data store targets.
	IcebergTargets []*IcebergTarget `type:"list"`

	// Specifies JDBC targets.
	JdbcTargets []*JdbcTarget `type:"list"`

	// Specifies Amazon DocumentDB or MongoDB targets.
	MongoDBTargets []*MongoDBTarget `type:"list"`

	// Specifies Amazon Simple Storage Service (Amazon S3) targets.
	S3Targets []*S3Target `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 CrawlerTargets) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CrawlerTargets) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CrawlerTargets) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CrawlerTargets"}
	if s.CatalogTargets != nil {
		for i, v := range s.CatalogTargets {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CatalogTargets", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogTargets sets the CatalogTargets field's value.
func (s *CrawlerTargets) SetCatalogTargets(v []*CatalogTarget) *CrawlerTargets {
	s.CatalogTargets = v
	return s
}

// SetDeltaTargets sets the DeltaTargets field's value.
func (s *CrawlerTargets) SetDeltaTargets(v []*DeltaTarget) *CrawlerTargets {
	s.DeltaTargets = v
	return s
}

// SetDynamoDBTargets sets the DynamoDBTargets field's value.
func (s *CrawlerTargets) SetDynamoDBTargets(v []*DynamoDBTarget) *CrawlerTargets {
	s.DynamoDBTargets = v
	return s
}

// SetHudiTargets sets the HudiTargets field's value.
func (s *CrawlerTargets) SetHudiTargets(v []*HudiTarget) *CrawlerTargets {
	s.HudiTargets = v
	return s
}

// SetIcebergTargets sets the IcebergTargets field's value.
func (s *CrawlerTargets) SetIcebergTargets(v []*IcebergTarget) *CrawlerTargets {
	s.IcebergTargets = v
	return s
}

// SetJdbcTargets sets the JdbcTargets field's value.
func (s *CrawlerTargets) SetJdbcTargets(v []*JdbcTarget) *CrawlerTargets {
	s.JdbcTargets = v
	return s
}

// SetMongoDBTargets sets the MongoDBTargets field's value.
func (s *CrawlerTargets) SetMongoDBTargets(v []*MongoDBTarget) *CrawlerTargets {
	s.MongoDBTargets = v
	return s
}

// SetS3Targets sets the S3Targets field's value.
func (s *CrawlerTargets) SetS3Targets(v []*S3Target) *CrawlerTargets {
	s.S3Targets = v
	return s
}

// A list of fields, comparators and value that you can use to filter the crawler
// runs for a specified crawler.
type CrawlsFilter struct {
	_ struct{} `type:"structure"`

	// A key used to filter the crawler runs for a specified crawler. Valid values
	// for each of the field names are:
	//
	//    * CRAWL_ID: A string representing the UUID identifier for a crawl.
	//
	//    * STATE: A string representing the state of the crawl.
	//
	//    * START_TIME and END_TIME: The epoch timestamp in milliseconds.
	//
	//    * DPU_HOUR: The number of data processing unit (DPU) hours used for the
	//    crawl.
	FieldName *string `type:"string" enum:"FieldName"`

	// The value provided for comparison on the crawl field.
	FieldValue *string `type:"string"`

	// A defined comparator that operates on the value. The available operators
	// are:
	//
	//    * GT: Greater than.
	//
	//    * GE: Greater than or equal to.
	//
	//    * LT: Less than.
	//
	//    * LE: Less than or equal to.
	//
	//    * EQ: Equal to.
	//
	//    * NE: Not equal to.
	FilterOperator *string `type:"string" enum:"FilterOperator"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CrawlsFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CrawlsFilter) GoString() string {
	return s.String()
}

// SetFieldName sets the FieldName field's value.
func (s *CrawlsFilter) SetFieldName(v string) *CrawlsFilter {
	s.FieldName = &v
	return s
}

// SetFieldValue sets the FieldValue field's value.
func (s *CrawlsFilter) SetFieldValue(v string) *CrawlsFilter {
	s.FieldValue = &v
	return s
}

// SetFilterOperator sets the FilterOperator field's value.
func (s *CrawlsFilter) SetFilterOperator(v string) *CrawlsFilter {
	s.FilterOperator = &v
	return s
}

type CreateBlueprintInput struct {
	_ struct{} `type:"structure"`

	// Specifies a path in Amazon S3 where the blueprint is published.
	//
	// BlueprintLocation is a required field
	BlueprintLocation *string `min:"1" type:"string" required:"true"`

	// A description of the blueprint.
	Description *string `min:"1" type:"string"`

	// The name of the blueprint.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The tags to be applied to this blueprint.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateBlueprintInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateBlueprintInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateBlueprintInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateBlueprintInput"}
	if s.BlueprintLocation == nil {
		invalidParams.Add(request.NewErrParamRequired("BlueprintLocation"))
	}
	if s.BlueprintLocation != nil && len(*s.BlueprintLocation) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("BlueprintLocation", 1))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 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
}

// SetBlueprintLocation sets the BlueprintLocation field's value.
func (s *CreateBlueprintInput) SetBlueprintLocation(v string) *CreateBlueprintInput {
	s.BlueprintLocation = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateBlueprintInput) SetDescription(v string) *CreateBlueprintInput {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateBlueprintInput) SetName(v string) *CreateBlueprintInput {
	s.Name = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateBlueprintInput) SetTags(v map[string]*string) *CreateBlueprintInput {
	s.Tags = v
	return s
}

type CreateBlueprintOutput struct {
	_ struct{} `type:"structure"`

	// Returns the name of the blueprint that was registered.
	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 CreateBlueprintOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateBlueprintOutput) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *CreateBlueprintOutput) SetName(v string) *CreateBlueprintOutput {
	s.Name = &v
	return s
}

type CreateClassifierInput struct {
	_ struct{} `type:"structure"`

	// A CsvClassifier object specifying the classifier to create.
	CsvClassifier *CreateCsvClassifierRequest `type:"structure"`

	// A GrokClassifier object specifying the classifier to create.
	GrokClassifier *CreateGrokClassifierRequest `type:"structure"`

	// A JsonClassifier object specifying the classifier to create.
	JsonClassifier *CreateJsonClassifierRequest `type:"structure"`

	// An XMLClassifier object specifying the classifier to create.
	XMLClassifier *CreateXMLClassifierRequest `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateClassifierInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateClassifierInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateClassifierInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateClassifierInput"}
	if s.CsvClassifier != nil {
		if err := s.CsvClassifier.Validate(); err != nil {
			invalidParams.AddNested("CsvClassifier", err.(request.ErrInvalidParams))
		}
	}
	if s.GrokClassifier != nil {
		if err := s.GrokClassifier.Validate(); err != nil {
			invalidParams.AddNested("GrokClassifier", err.(request.ErrInvalidParams))
		}
	}
	if s.JsonClassifier != nil {
		if err := s.JsonClassifier.Validate(); err != nil {
			invalidParams.AddNested("JsonClassifier", err.(request.ErrInvalidParams))
		}
	}
	if s.XMLClassifier != nil {
		if err := s.XMLClassifier.Validate(); err != nil {
			invalidParams.AddNested("XMLClassifier", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCsvClassifier sets the CsvClassifier field's value.
func (s *CreateClassifierInput) SetCsvClassifier(v *CreateCsvClassifierRequest) *CreateClassifierInput {
	s.CsvClassifier = v
	return s
}

// SetGrokClassifier sets the GrokClassifier field's value.
func (s *CreateClassifierInput) SetGrokClassifier(v *CreateGrokClassifierRequest) *CreateClassifierInput {
	s.GrokClassifier = v
	return s
}

// SetJsonClassifier sets the JsonClassifier field's value.
func (s *CreateClassifierInput) SetJsonClassifier(v *CreateJsonClassifierRequest) *CreateClassifierInput {
	s.JsonClassifier = v
	return s
}

// SetXMLClassifier sets the XMLClassifier field's value.
func (s *CreateClassifierInput) SetXMLClassifier(v *CreateXMLClassifierRequest) *CreateClassifierInput {
	s.XMLClassifier = v
	return s
}

type CreateClassifierOutput 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 CreateClassifierOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateClassifierOutput) GoString() string {
	return s.String()
}

type CreateConnectionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which to create the connection. If none is
	// provided, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// A ConnectionInput object defining the connection to create.
	//
	// ConnectionInput is a required field
	ConnectionInput *ConnectionInput `type:"structure" required:"true"`

	// The tags you assign to the connection.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateConnectionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateConnectionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateConnectionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateConnectionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.ConnectionInput == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionInput"))
	}
	if s.ConnectionInput != nil {
		if err := s.ConnectionInput.Validate(); err != nil {
			invalidParams.AddNested("ConnectionInput", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *CreateConnectionInput) SetCatalogId(v string) *CreateConnectionInput {
	s.CatalogId = &v
	return s
}

// SetConnectionInput sets the ConnectionInput field's value.
func (s *CreateConnectionInput) SetConnectionInput(v *ConnectionInput) *CreateConnectionInput {
	s.ConnectionInput = v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateConnectionInput) SetTags(v map[string]*string) *CreateConnectionInput {
	s.Tags = v
	return s
}

type CreateConnectionOutput struct {
	_ struct{} `type:"structure"`

	// The status of the connection creation request. The request can take some
	// time for certain authentication types, for example when creating an OAuth
	// connection with token exchange over VPC.
	CreateConnectionStatus *string `type:"string" enum:"ConnectionStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateConnectionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateConnectionOutput) GoString() string {
	return s.String()
}

// SetCreateConnectionStatus sets the CreateConnectionStatus field's value.
func (s *CreateConnectionOutput) SetCreateConnectionStatus(v string) *CreateConnectionOutput {
	s.CreateConnectionStatus = &v
	return s
}

type CreateCrawlerInput struct {
	_ struct{} `type:"structure"`

	// A list of custom classifiers that the user has registered. By default, all
	// built-in classifiers are included in a crawl, but these custom classifiers
	// always override the default classifiers for a given classification.
	Classifiers []*string `type:"list"`

	// Crawler configuration information. This versioned JSON string allows users
	// to specify aspects of a crawler's behavior. For more information, see Setting
	// crawler configuration options (https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html).
	Configuration *string `type:"string"`

	// The name of the SecurityConfiguration structure to be used by this crawler.
	CrawlerSecurityConfiguration *string `type:"string"`

	// The Glue database where results are written, such as: arn:aws:daylight:us-east-1::database/sometable/*.
	DatabaseName *string `type:"string"`

	// A description of the new crawler.
	Description *string `type:"string"`

	// Specifies Lake Formation configuration settings for the crawler.
	LakeFormationConfiguration *LakeFormationConfiguration `type:"structure"`

	// Specifies data lineage configuration settings for the crawler.
	LineageConfiguration *LineageConfiguration `type:"structure"`

	// Name of the new crawler.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A policy that specifies whether to crawl the entire dataset again, or to
	// crawl only folders that were added since the last crawler run.
	RecrawlPolicy *RecrawlPolicy `type:"structure"`

	// The IAM role or Amazon Resource Name (ARN) of an IAM role used by the new
	// crawler to access customer resources.
	//
	// Role is a required field
	Role *string `type:"string" required:"true"`

	// A cron expression used to specify the schedule (see Time-Based Schedules
	// for Jobs and Crawlers (https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html).
	// For example, to run something every day at 12:15 UTC, you would specify:
	// cron(15 12 * * ? *).
	Schedule *string `type:"string"`

	// The policy for the crawler's update and deletion behavior.
	SchemaChangePolicy *SchemaChangePolicy `type:"structure"`

	// The table prefix used for catalog tables that are created.
	TablePrefix *string `type:"string"`

	// The tags to use with this crawler request. You may use tags to limit access
	// to the crawler. For more information about tags in Glue, see Amazon Web Services
	// Tags in Glue (https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html)
	// in the developer guide.
	Tags map[string]*string `type:"map"`

	// A list of collection of targets to crawl.
	//
	// Targets is a required field
	Targets *CrawlerTargets `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 CreateCrawlerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateCrawlerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateCrawlerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateCrawlerInput"}
	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.Role == nil {
		invalidParams.Add(request.NewErrParamRequired("Role"))
	}
	if s.Targets == nil {
		invalidParams.Add(request.NewErrParamRequired("Targets"))
	}
	if s.Targets != nil {
		if err := s.Targets.Validate(); err != nil {
			invalidParams.AddNested("Targets", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClassifiers sets the Classifiers field's value.
func (s *CreateCrawlerInput) SetClassifiers(v []*string) *CreateCrawlerInput {
	s.Classifiers = v
	return s
}

// SetConfiguration sets the Configuration field's value.
func (s *CreateCrawlerInput) SetConfiguration(v string) *CreateCrawlerInput {
	s.Configuration = &v
	return s
}

// SetCrawlerSecurityConfiguration sets the CrawlerSecurityConfiguration field's value.
func (s *CreateCrawlerInput) SetCrawlerSecurityConfiguration(v string) *CreateCrawlerInput {
	s.CrawlerSecurityConfiguration = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *CreateCrawlerInput) SetDatabaseName(v string) *CreateCrawlerInput {
	s.DatabaseName = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateCrawlerInput) SetDescription(v string) *CreateCrawlerInput {
	s.Description = &v
	return s
}

// SetLakeFormationConfiguration sets the LakeFormationConfiguration field's value.
func (s *CreateCrawlerInput) SetLakeFormationConfiguration(v *LakeFormationConfiguration) *CreateCrawlerInput {
	s.LakeFormationConfiguration = v
	return s
}

// SetLineageConfiguration sets the LineageConfiguration field's value.
func (s *CreateCrawlerInput) SetLineageConfiguration(v *LineageConfiguration) *CreateCrawlerInput {
	s.LineageConfiguration = v
	return s
}

// SetName sets the Name field's value.
func (s *CreateCrawlerInput) SetName(v string) *CreateCrawlerInput {
	s.Name = &v
	return s
}

// SetRecrawlPolicy sets the RecrawlPolicy field's value.
func (s *CreateCrawlerInput) SetRecrawlPolicy(v *RecrawlPolicy) *CreateCrawlerInput {
	s.RecrawlPolicy = v
	return s
}

// SetRole sets the Role field's value.
func (s *CreateCrawlerInput) SetRole(v string) *CreateCrawlerInput {
	s.Role = &v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *CreateCrawlerInput) SetSchedule(v string) *CreateCrawlerInput {
	s.Schedule = &v
	return s
}

// SetSchemaChangePolicy sets the SchemaChangePolicy field's value.
func (s *CreateCrawlerInput) SetSchemaChangePolicy(v *SchemaChangePolicy) *CreateCrawlerInput {
	s.SchemaChangePolicy = v
	return s
}

// SetTablePrefix sets the TablePrefix field's value.
func (s *CreateCrawlerInput) SetTablePrefix(v string) *CreateCrawlerInput {
	s.TablePrefix = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateCrawlerInput) SetTags(v map[string]*string) *CreateCrawlerInput {
	s.Tags = v
	return s
}

// SetTargets sets the Targets field's value.
func (s *CreateCrawlerInput) SetTargets(v *CrawlerTargets) *CreateCrawlerInput {
	s.Targets = v
	return s
}

type CreateCrawlerOutput 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 CreateCrawlerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateCrawlerOutput) GoString() string {
	return s.String()
}

// Specifies a custom CSV classifier for CreateClassifier to create.
type CreateCsvClassifierRequest struct {
	_ struct{} `type:"structure"`

	// Enables the processing of files that contain only one column.
	AllowSingleColumn *bool `type:"boolean"`

	// Indicates whether the CSV file contains a header.
	ContainsHeader *string `type:"string" enum:"CsvHeaderOption"`

	// Enables the configuration of custom datatypes.
	CustomDatatypeConfigured *bool `type:"boolean"`

	// Creates a list of supported custom datatypes.
	CustomDatatypes []*string `type:"list"`

	// A custom symbol to denote what separates each column entry in the row.
	Delimiter *string `min:"1" type:"string"`

	// Specifies not to trim values before identifying the type of column values.
	// The default value is true.
	DisableValueTrimming *bool `type:"boolean"`

	// A list of strings representing column names.
	Header []*string `type:"list"`

	// The name of the classifier.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A custom symbol to denote what combines content into a single column value.
	// Must be different from the column delimiter.
	QuoteSymbol *string `min:"1" type:"string"`

	// Sets the SerDe for processing CSV in the classifier, which will be applied
	// in the Data Catalog. Valid values are OpenCSVSerDe, LazySimpleSerDe, and
	// None. You can specify the None value when you want the crawler to do the
	// detection.
	Serde *string `type:"string" enum:"CsvSerdeOption"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateCsvClassifierRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateCsvClassifierRequest) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateCsvClassifierRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateCsvClassifierRequest"}
	if s.Delimiter != nil && len(*s.Delimiter) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Delimiter", 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.QuoteSymbol != nil && len(*s.QuoteSymbol) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QuoteSymbol", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllowSingleColumn sets the AllowSingleColumn field's value.
func (s *CreateCsvClassifierRequest) SetAllowSingleColumn(v bool) *CreateCsvClassifierRequest {
	s.AllowSingleColumn = &v
	return s
}

// SetContainsHeader sets the ContainsHeader field's value.
func (s *CreateCsvClassifierRequest) SetContainsHeader(v string) *CreateCsvClassifierRequest {
	s.ContainsHeader = &v
	return s
}

// SetCustomDatatypeConfigured sets the CustomDatatypeConfigured field's value.
func (s *CreateCsvClassifierRequest) SetCustomDatatypeConfigured(v bool) *CreateCsvClassifierRequest {
	s.CustomDatatypeConfigured = &v
	return s
}

// SetCustomDatatypes sets the CustomDatatypes field's value.
func (s *CreateCsvClassifierRequest) SetCustomDatatypes(v []*string) *CreateCsvClassifierRequest {
	s.CustomDatatypes = v
	return s
}

// SetDelimiter sets the Delimiter field's value.
func (s *CreateCsvClassifierRequest) SetDelimiter(v string) *CreateCsvClassifierRequest {
	s.Delimiter = &v
	return s
}

// SetDisableValueTrimming sets the DisableValueTrimming field's value.
func (s *CreateCsvClassifierRequest) SetDisableValueTrimming(v bool) *CreateCsvClassifierRequest {
	s.DisableValueTrimming = &v
	return s
}

// SetHeader sets the Header field's value.
func (s *CreateCsvClassifierRequest) SetHeader(v []*string) *CreateCsvClassifierRequest {
	s.Header = v
	return s
}

// SetName sets the Name field's value.
func (s *CreateCsvClassifierRequest) SetName(v string) *CreateCsvClassifierRequest {
	s.Name = &v
	return s
}

// SetQuoteSymbol sets the QuoteSymbol field's value.
func (s *CreateCsvClassifierRequest) SetQuoteSymbol(v string) *CreateCsvClassifierRequest {
	s.QuoteSymbol = &v
	return s
}

// SetSerde sets the Serde field's value.
func (s *CreateCsvClassifierRequest) SetSerde(v string) *CreateCsvClassifierRequest {
	s.Serde = &v
	return s
}

type CreateCustomEntityTypeInput struct {
	_ struct{} `type:"structure"`

	// A list of context words. If none of these context words are found within
	// the vicinity of the regular expression the data will not be detected as sensitive
	// data.
	//
	// If no context words are passed only a regular expression is checked.
	ContextWords []*string `min:"1" type:"list"`

	// A name for the custom pattern that allows it to be retrieved or deleted later.
	// This name must be unique per Amazon Web Services account.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A regular expression string that is used for detecting sensitive data in
	// a custom pattern.
	//
	// RegexString is a required field
	RegexString *string `min:"1" type:"string" required:"true"`

	// A list of tags applied to the custom entity type.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateCustomEntityTypeInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateCustomEntityTypeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateCustomEntityTypeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateCustomEntityTypeInput"}
	if s.ContextWords != nil && len(s.ContextWords) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ContextWords", 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.RegexString == nil {
		invalidParams.Add(request.NewErrParamRequired("RegexString"))
	}
	if s.RegexString != nil && len(*s.RegexString) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RegexString", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContextWords sets the ContextWords field's value.
func (s *CreateCustomEntityTypeInput) SetContextWords(v []*string) *CreateCustomEntityTypeInput {
	s.ContextWords = v
	return s
}

// SetName sets the Name field's value.
func (s *CreateCustomEntityTypeInput) SetName(v string) *CreateCustomEntityTypeInput {
	s.Name = &v
	return s
}

// SetRegexString sets the RegexString field's value.
func (s *CreateCustomEntityTypeInput) SetRegexString(v string) *CreateCustomEntityTypeInput {
	s.RegexString = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateCustomEntityTypeInput) SetTags(v map[string]*string) *CreateCustomEntityTypeInput {
	s.Tags = v
	return s
}

type CreateCustomEntityTypeOutput struct {
	_ struct{} `type:"structure"`

	// The name of the custom pattern you created.
	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 CreateCustomEntityTypeOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateCustomEntityTypeOutput) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *CreateCustomEntityTypeOutput) SetName(v string) *CreateCustomEntityTypeOutput {
	s.Name = &v
	return s
}

type CreateDataQualityRulesetInput struct {
	_ struct{} `type:"structure"`

	// Used for idempotency and is recommended to be set to a random ID (such as
	// a UUID) to avoid creating or starting multiple instances of the same resource.
	ClientToken *string `min:"1" type:"string"`

	// A description of the data quality ruleset.
	Description *string `type:"string"`

	// A unique name for the data quality ruleset.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A Data Quality Definition Language (DQDL) ruleset. For more information,
	// see the Glue developer guide.
	//
	// Ruleset is a required field
	Ruleset *string `min:"1" type:"string" required:"true"`

	// A list of tags applied to the data quality ruleset.
	Tags map[string]*string `type:"map"`

	// A target table associated with the data quality ruleset.
	TargetTable *DataQualityTargetTable `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateDataQualityRulesetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateDataQualityRulesetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateDataQualityRulesetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateDataQualityRulesetInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.Ruleset == nil {
		invalidParams.Add(request.NewErrParamRequired("Ruleset"))
	}
	if s.Ruleset != nil && len(*s.Ruleset) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Ruleset", 1))
	}
	if s.TargetTable != nil {
		if err := s.TargetTable.Validate(); err != nil {
			invalidParams.AddNested("TargetTable", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *CreateDataQualityRulesetInput) SetClientToken(v string) *CreateDataQualityRulesetInput {
	s.ClientToken = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateDataQualityRulesetInput) SetDescription(v string) *CreateDataQualityRulesetInput {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateDataQualityRulesetInput) SetName(v string) *CreateDataQualityRulesetInput {
	s.Name = &v
	return s
}

// SetRuleset sets the Ruleset field's value.
func (s *CreateDataQualityRulesetInput) SetRuleset(v string) *CreateDataQualityRulesetInput {
	s.Ruleset = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateDataQualityRulesetInput) SetTags(v map[string]*string) *CreateDataQualityRulesetInput {
	s.Tags = v
	return s
}

// SetTargetTable sets the TargetTable field's value.
func (s *CreateDataQualityRulesetInput) SetTargetTable(v *DataQualityTargetTable) *CreateDataQualityRulesetInput {
	s.TargetTable = v
	return s
}

type CreateDataQualityRulesetOutput struct {
	_ struct{} `type:"structure"`

	// A unique name for the data quality ruleset.
	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 CreateDataQualityRulesetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateDataQualityRulesetOutput) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *CreateDataQualityRulesetOutput) SetName(v string) *CreateDataQualityRulesetOutput {
	s.Name = &v
	return s
}

type CreateDatabaseInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which to create the database. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The metadata for the database.
	//
	// DatabaseInput is a required field
	DatabaseInput *DatabaseInput `type:"structure" required:"true"`

	// The tags you assign to the database.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateDatabaseInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateDatabaseInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateDatabaseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateDatabaseInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseInput == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseInput"))
	}
	if s.DatabaseInput != nil {
		if err := s.DatabaseInput.Validate(); err != nil {
			invalidParams.AddNested("DatabaseInput", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *CreateDatabaseInput) SetCatalogId(v string) *CreateDatabaseInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseInput sets the DatabaseInput field's value.
func (s *CreateDatabaseInput) SetDatabaseInput(v *DatabaseInput) *CreateDatabaseInput {
	s.DatabaseInput = v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateDatabaseInput) SetTags(v map[string]*string) *CreateDatabaseInput {
	s.Tags = v
	return s
}

type CreateDatabaseOutput 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 CreateDatabaseOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateDatabaseOutput) GoString() string {
	return s.String()
}

type CreateDevEndpointInput struct {
	_ struct{} `type:"structure"`

	// A map of arguments used to configure the DevEndpoint.
	Arguments map[string]*string `type:"map"`

	// The name to be assigned to the new DevEndpoint.
	//
	// EndpointName is a required field
	EndpointName *string `type:"string" required:"true"`

	// The path to one or more Java .jar files in an S3 bucket that should be loaded
	// in your DevEndpoint.
	ExtraJarsS3Path *string `type:"string"`

	// The paths to one or more Python libraries in an Amazon S3 bucket that should
	// be loaded in your DevEndpoint. Multiple values must be complete paths separated
	// by a comma.
	//
	// You can only use pure Python libraries with a DevEndpoint. Libraries that
	// rely on C extensions, such as the pandas (http://pandas.pydata.org/) Python
	// data analysis library, are not yet supported.
	ExtraPythonLibsS3Path *string `type:"string"`

	// Glue version determines the versions of Apache Spark and Python that Glue
	// supports. The Python version indicates the version supported for running
	// your ETL scripts on development endpoints.
	//
	// For more information about the available Glue versions and corresponding
	// Spark and Python versions, see Glue version (https://docs.aws.amazon.com/glue/latest/dg/add-job.html)
	// in the developer guide.
	//
	// Development endpoints that are created without specifying a Glue version
	// default to Glue 0.9.
	//
	// You can specify a version of Python support for development endpoints by
	// using the Arguments parameter in the CreateDevEndpoint or UpdateDevEndpoint
	// APIs. If no arguments are provided, the version defaults to Python 2.
	GlueVersion *string `min:"1" type:"string"`

	// The number of Glue Data Processing Units (DPUs) to allocate to this DevEndpoint.
	NumberOfNodes *int64 `type:"integer"`

	// The number of workers of a defined workerType that are allocated to the development
	// endpoint.
	//
	// The maximum number of workers you can define are 299 for G.1X, and 149 for
	// G.2X.
	NumberOfWorkers *int64 `type:"integer"`

	// The public key to be used by this DevEndpoint for authentication. This attribute
	// is provided for backward compatibility because the recommended attribute
	// to use is public keys.
	PublicKey *string `type:"string"`

	// A list of public keys to be used by the development endpoints for authentication.
	// The use of this attribute is preferred over a single public key because the
	// public keys allow you to have a different private key per client.
	//
	// If you previously created an endpoint with a public key, you must remove
	// that key to be able to set a list of public keys. Call the UpdateDevEndpoint
	// API with the public key content in the deletePublicKeys attribute, and the
	// list of new keys in the addPublicKeys attribute.
	PublicKeys []*string `type:"list"`

	// The IAM role for the DevEndpoint.
	//
	// RoleArn is a required field
	RoleArn *string `type:"string" required:"true"`

	// The name of the SecurityConfiguration structure to be used with this DevEndpoint.
	SecurityConfiguration *string `min:"1" type:"string"`

	// Security group IDs for the security groups to be used by the new DevEndpoint.
	SecurityGroupIds []*string `type:"list"`

	// The subnet ID for the new DevEndpoint to use.
	SubnetId *string `type:"string"`

	// The tags to use with this DevEndpoint. You may use tags to limit access to
	// the DevEndpoint. For more information about tags in Glue, see Amazon Web
	// Services Tags in Glue (https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html)
	// in the developer guide.
	Tags map[string]*string `type:"map"`

	// The type of predefined worker that is allocated to the development endpoint.
	// Accepts a value of Standard, G.1X, or G.2X.
	//
	//    * For the Standard worker type, each worker provides 4 vCPU, 16 GB of
	//    memory and a 50GB disk, and 2 executors per worker.
	//
	//    * For the G.1X worker type, each worker maps to 1 DPU (4 vCPU, 16 GB of
	//    memory, 64 GB disk), and provides 1 executor per worker. We recommend
	//    this worker type for memory-intensive jobs.
	//
	//    * For the G.2X worker type, each worker maps to 2 DPU (8 vCPU, 32 GB of
	//    memory, 128 GB disk), and provides 1 executor per worker. We recommend
	//    this worker type for memory-intensive jobs.
	//
	// Known issue: when a development endpoint is created with the G.2X WorkerType
	// configuration, the Spark drivers for the development endpoint will run on
	// 4 vCPU, 16 GB of memory, and a 64 GB disk.
	WorkerType *string `type:"string" enum:"WorkerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateDevEndpointInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateDevEndpointInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateDevEndpointInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateDevEndpointInput"}
	if s.EndpointName == nil {
		invalidParams.Add(request.NewErrParamRequired("EndpointName"))
	}
	if s.GlueVersion != nil && len(*s.GlueVersion) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GlueVersion", 1))
	}
	if s.RoleArn == nil {
		invalidParams.Add(request.NewErrParamRequired("RoleArn"))
	}
	if s.SecurityConfiguration != nil && len(*s.SecurityConfiguration) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecurityConfiguration", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetArguments sets the Arguments field's value.
func (s *CreateDevEndpointInput) SetArguments(v map[string]*string) *CreateDevEndpointInput {
	s.Arguments = v
	return s
}

// SetEndpointName sets the EndpointName field's value.
func (s *CreateDevEndpointInput) SetEndpointName(v string) *CreateDevEndpointInput {
	s.EndpointName = &v
	return s
}

// SetExtraJarsS3Path sets the ExtraJarsS3Path field's value.
func (s *CreateDevEndpointInput) SetExtraJarsS3Path(v string) *CreateDevEndpointInput {
	s.ExtraJarsS3Path = &v
	return s
}

// SetExtraPythonLibsS3Path sets the ExtraPythonLibsS3Path field's value.
func (s *CreateDevEndpointInput) SetExtraPythonLibsS3Path(v string) *CreateDevEndpointInput {
	s.ExtraPythonLibsS3Path = &v
	return s
}

// SetGlueVersion sets the GlueVersion field's value.
func (s *CreateDevEndpointInput) SetGlueVersion(v string) *CreateDevEndpointInput {
	s.GlueVersion = &v
	return s
}

// SetNumberOfNodes sets the NumberOfNodes field's value.
func (s *CreateDevEndpointInput) SetNumberOfNodes(v int64) *CreateDevEndpointInput {
	s.NumberOfNodes = &v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *CreateDevEndpointInput) SetNumberOfWorkers(v int64) *CreateDevEndpointInput {
	s.NumberOfWorkers = &v
	return s
}

// SetPublicKey sets the PublicKey field's value.
func (s *CreateDevEndpointInput) SetPublicKey(v string) *CreateDevEndpointInput {
	s.PublicKey = &v
	return s
}

// SetPublicKeys sets the PublicKeys field's value.
func (s *CreateDevEndpointInput) SetPublicKeys(v []*string) *CreateDevEndpointInput {
	s.PublicKeys = v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *CreateDevEndpointInput) SetRoleArn(v string) *CreateDevEndpointInput {
	s.RoleArn = &v
	return s
}

// SetSecurityConfiguration sets the SecurityConfiguration field's value.
func (s *CreateDevEndpointInput) SetSecurityConfiguration(v string) *CreateDevEndpointInput {
	s.SecurityConfiguration = &v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *CreateDevEndpointInput) SetSecurityGroupIds(v []*string) *CreateDevEndpointInput {
	s.SecurityGroupIds = v
	return s
}

// SetSubnetId sets the SubnetId field's value.
func (s *CreateDevEndpointInput) SetSubnetId(v string) *CreateDevEndpointInput {
	s.SubnetId = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateDevEndpointInput) SetTags(v map[string]*string) *CreateDevEndpointInput {
	s.Tags = v
	return s
}

// SetWorkerType sets the WorkerType field's value.
func (s *CreateDevEndpointInput) SetWorkerType(v string) *CreateDevEndpointInput {
	s.WorkerType = &v
	return s
}

type CreateDevEndpointOutput struct {
	_ struct{} `type:"structure"`

	// The map of arguments used to configure this DevEndpoint.
	//
	// Valid arguments are:
	//
	//    * "--enable-glue-datacatalog": ""
	//
	// You can specify a version of Python support for development endpoints by
	// using the Arguments parameter in the CreateDevEndpoint or UpdateDevEndpoint
	// APIs. If no arguments are provided, the version defaults to Python 2.
	Arguments map[string]*string `type:"map"`

	// The Amazon Web Services Availability Zone where this DevEndpoint is located.
	AvailabilityZone *string `type:"string"`

	// The point in time at which this DevEndpoint was created.
	CreatedTimestamp *time.Time `type:"timestamp"`

	// The name assigned to the new DevEndpoint.
	EndpointName *string `type:"string"`

	// Path to one or more Java .jar files in an S3 bucket that will be loaded in
	// your DevEndpoint.
	ExtraJarsS3Path *string `type:"string"`

	// The paths to one or more Python libraries in an S3 bucket that will be loaded
	// in your DevEndpoint.
	ExtraPythonLibsS3Path *string `type:"string"`

	// The reason for a current failure in this DevEndpoint.
	FailureReason *string `type:"string"`

	// Glue version determines the versions of Apache Spark and Python that Glue
	// supports. The Python version indicates the version supported for running
	// your ETL scripts on development endpoints.
	//
	// For more information about the available Glue versions and corresponding
	// Spark and Python versions, see Glue version (https://docs.aws.amazon.com/glue/latest/dg/add-job.html)
	// in the developer guide.
	GlueVersion *string `min:"1" type:"string"`

	// The number of Glue Data Processing Units (DPUs) allocated to this DevEndpoint.
	NumberOfNodes *int64 `type:"integer"`

	// The number of workers of a defined workerType that are allocated to the development
	// endpoint.
	NumberOfWorkers *int64 `type:"integer"`

	// The Amazon Resource Name (ARN) of the role assigned to the new DevEndpoint.
	RoleArn *string `type:"string"`

	// The name of the SecurityConfiguration structure being used with this DevEndpoint.
	SecurityConfiguration *string `min:"1" type:"string"`

	// The security groups assigned to the new DevEndpoint.
	SecurityGroupIds []*string `type:"list"`

	// The current status of the new DevEndpoint.
	Status *string `type:"string"`

	// The subnet ID assigned to the new DevEndpoint.
	SubnetId *string `type:"string"`

	// The ID of the virtual private cloud (VPC) used by this DevEndpoint.
	VpcId *string `type:"string"`

	// The type of predefined worker that is allocated to the development endpoint.
	// May be a value of Standard, G.1X, or G.2X.
	WorkerType *string `type:"string" enum:"WorkerType"`

	// The address of the YARN endpoint used by this DevEndpoint.
	YarnEndpointAddress *string `type:"string"`

	// The Apache Zeppelin port for the remote Apache Spark interpreter.
	ZeppelinRemoteSparkInterpreterPort *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 CreateDevEndpointOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateDevEndpointOutput) GoString() string {
	return s.String()
}

// SetArguments sets the Arguments field's value.
func (s *CreateDevEndpointOutput) SetArguments(v map[string]*string) *CreateDevEndpointOutput {
	s.Arguments = v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *CreateDevEndpointOutput) SetAvailabilityZone(v string) *CreateDevEndpointOutput {
	s.AvailabilityZone = &v
	return s
}

// SetCreatedTimestamp sets the CreatedTimestamp field's value.
func (s *CreateDevEndpointOutput) SetCreatedTimestamp(v time.Time) *CreateDevEndpointOutput {
	s.CreatedTimestamp = &v
	return s
}

// SetEndpointName sets the EndpointName field's value.
func (s *CreateDevEndpointOutput) SetEndpointName(v string) *CreateDevEndpointOutput {
	s.EndpointName = &v
	return s
}

// SetExtraJarsS3Path sets the ExtraJarsS3Path field's value.
func (s *CreateDevEndpointOutput) SetExtraJarsS3Path(v string) *CreateDevEndpointOutput {
	s.ExtraJarsS3Path = &v
	return s
}

// SetExtraPythonLibsS3Path sets the ExtraPythonLibsS3Path field's value.
func (s *CreateDevEndpointOutput) SetExtraPythonLibsS3Path(v string) *CreateDevEndpointOutput {
	s.ExtraPythonLibsS3Path = &v
	return s
}

// SetFailureReason sets the FailureReason field's value.
func (s *CreateDevEndpointOutput) SetFailureReason(v string) *CreateDevEndpointOutput {
	s.FailureReason = &v
	return s
}

// SetGlueVersion sets the GlueVersion field's value.
func (s *CreateDevEndpointOutput) SetGlueVersion(v string) *CreateDevEndpointOutput {
	s.GlueVersion = &v
	return s
}

// SetNumberOfNodes sets the NumberOfNodes field's value.
func (s *CreateDevEndpointOutput) SetNumberOfNodes(v int64) *CreateDevEndpointOutput {
	s.NumberOfNodes = &v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *CreateDevEndpointOutput) SetNumberOfWorkers(v int64) *CreateDevEndpointOutput {
	s.NumberOfWorkers = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *CreateDevEndpointOutput) SetRoleArn(v string) *CreateDevEndpointOutput {
	s.RoleArn = &v
	return s
}

// SetSecurityConfiguration sets the SecurityConfiguration field's value.
func (s *CreateDevEndpointOutput) SetSecurityConfiguration(v string) *CreateDevEndpointOutput {
	s.SecurityConfiguration = &v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *CreateDevEndpointOutput) SetSecurityGroupIds(v []*string) *CreateDevEndpointOutput {
	s.SecurityGroupIds = v
	return s
}

// SetStatus sets the Status field's value.
func (s *CreateDevEndpointOutput) SetStatus(v string) *CreateDevEndpointOutput {
	s.Status = &v
	return s
}

// SetSubnetId sets the SubnetId field's value.
func (s *CreateDevEndpointOutput) SetSubnetId(v string) *CreateDevEndpointOutput {
	s.SubnetId = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *CreateDevEndpointOutput) SetVpcId(v string) *CreateDevEndpointOutput {
	s.VpcId = &v
	return s
}

// SetWorkerType sets the WorkerType field's value.
func (s *CreateDevEndpointOutput) SetWorkerType(v string) *CreateDevEndpointOutput {
	s.WorkerType = &v
	return s
}

// SetYarnEndpointAddress sets the YarnEndpointAddress field's value.
func (s *CreateDevEndpointOutput) SetYarnEndpointAddress(v string) *CreateDevEndpointOutput {
	s.YarnEndpointAddress = &v
	return s
}

// SetZeppelinRemoteSparkInterpreterPort sets the ZeppelinRemoteSparkInterpreterPort field's value.
func (s *CreateDevEndpointOutput) SetZeppelinRemoteSparkInterpreterPort(v int64) *CreateDevEndpointOutput {
	s.ZeppelinRemoteSparkInterpreterPort = &v
	return s
}

// Specifies a grok classifier for CreateClassifier to create.
type CreateGrokClassifierRequest struct {
	_ struct{} `type:"structure"`

	// An identifier of the data format that the classifier matches, such as Twitter,
	// JSON, Omniture logs, Amazon CloudWatch Logs, and so on.
	//
	// Classification is a required field
	Classification *string `type:"string" required:"true"`

	// Optional custom grok patterns used by this classifier.
	CustomPatterns *string `type:"string"`

	// The grok pattern used by this classifier.
	//
	// GrokPattern is a required field
	GrokPattern *string `min:"1" type:"string" required:"true"`

	// The name of the new classifier.
	//
	// 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 CreateGrokClassifierRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateGrokClassifierRequest) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateGrokClassifierRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateGrokClassifierRequest"}
	if s.Classification == nil {
		invalidParams.Add(request.NewErrParamRequired("Classification"))
	}
	if s.GrokPattern == nil {
		invalidParams.Add(request.NewErrParamRequired("GrokPattern"))
	}
	if s.GrokPattern != nil && len(*s.GrokPattern) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GrokPattern", 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
}

// SetClassification sets the Classification field's value.
func (s *CreateGrokClassifierRequest) SetClassification(v string) *CreateGrokClassifierRequest {
	s.Classification = &v
	return s
}

// SetCustomPatterns sets the CustomPatterns field's value.
func (s *CreateGrokClassifierRequest) SetCustomPatterns(v string) *CreateGrokClassifierRequest {
	s.CustomPatterns = &v
	return s
}

// SetGrokPattern sets the GrokPattern field's value.
func (s *CreateGrokClassifierRequest) SetGrokPattern(v string) *CreateGrokClassifierRequest {
	s.GrokPattern = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateGrokClassifierRequest) SetName(v string) *CreateGrokClassifierRequest {
	s.Name = &v
	return s
}

type CreateJobInput struct {
	_ struct{} `type:"structure"`

	// This parameter is deprecated. Use MaxCapacity instead.
	//
	// The number of Glue data processing units (DPUs) to allocate to this Job.
	// You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative
	// measure of processing power that consists of 4 vCPUs of compute capacity
	// and 16 GB of memory. For more information, see the Glue pricing page (https://aws.amazon.com/glue/pricing/).
	//
	// Deprecated: This property is deprecated, use MaxCapacity instead.
	AllocatedCapacity *int64 `deprecated:"true" type:"integer"`

	// The representation of a directed acyclic graph on which both the Glue Studio
	// visual component and Glue Studio code generation is based.
	//
	// CodeGenConfigurationNodes is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateJobInput's
	// String and GoString methods.
	CodeGenConfigurationNodes map[string]*CodeGenConfigurationNode `type:"map" sensitive:"true"`

	// The JobCommand that runs this job.
	//
	// Command is a required field
	Command *JobCommand `type:"structure" required:"true"`

	// The connections used for this job.
	Connections *ConnectionsList `type:"structure"`

	// The default arguments for every run of this job, specified as name-value
	// pairs.
	//
	// You can specify arguments here that your own job-execution script consumes,
	// as well as arguments that Glue itself consumes.
	//
	// Job arguments may be logged. Do not pass plaintext secrets as arguments.
	// Retrieve secrets from a Glue Connection, Secrets Manager or other secret
	// management mechanism if you intend to keep them within the Job.
	//
	// For information about how to specify and consume your own Job arguments,
	// see the Calling Glue APIs in Python (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html)
	// topic in the developer guide.
	//
	// For information about the arguments you can provide to this field when configuring
	// Spark jobs, see the Special Parameters Used by Glue (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html)
	// topic in the developer guide.
	//
	// For information about the arguments you can provide to this field when configuring
	// Ray jobs, see Using job parameters in Ray jobs (https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html)
	// in the developer guide.
	DefaultArguments map[string]*string `type:"map"`

	// Description of the job being defined.
	Description *string `type:"string"`

	// Indicates whether the job is run with a standard or flexible execution class.
	// The standard execution-class is ideal for time-sensitive workloads that require
	// fast job startup and dedicated resources.
	//
	// The flexible execution class is appropriate for time-insensitive jobs whose
	// start and completion times may vary.
	//
	// Only jobs with Glue version 3.0 and above and command type glueetl will be
	// allowed to set ExecutionClass to FLEX. The flexible execution class is available
	// for Spark jobs.
	ExecutionClass *string `type:"string" enum:"ExecutionClass"`

	// An ExecutionProperty specifying the maximum number of concurrent runs allowed
	// for this job.
	ExecutionProperty *ExecutionProperty `type:"structure"`

	// In Spark jobs, GlueVersion determines the versions of Apache Spark and Python
	// that Glue available in a job. The Python version indicates the version supported
	// for jobs of type Spark.
	//
	// Ray jobs should set GlueVersion to 4.0 or greater. However, the versions
	// of Ray, Python and additional libraries available in your Ray job are determined
	// by the Runtime parameter of the Job command.
	//
	// For more information about the available Glue versions and corresponding
	// Spark and Python versions, see Glue version (https://docs.aws.amazon.com/glue/latest/dg/add-job.html)
	// in the developer guide.
	//
	// Jobs that are created without specifying a Glue version default to Glue 0.9.
	GlueVersion *string `min:"1" type:"string"`

	// A mode that describes how a job was created. Valid values are:
	//
	//    * SCRIPT - The job was created using the Glue Studio script editor.
	//
	//    * VISUAL - The job was created using the Glue Studio visual editor.
	//
	//    * NOTEBOOK - The job was created using an interactive sessions notebook.
	//
	// When the JobMode field is missing or null, SCRIPT is assigned as the default
	// value.
	JobMode *string `type:"string" enum:"JobMode"`

	// This field is reserved for future use.
	LogUri *string `type:"string"`

	// This field specifies a day of the week and hour for a maintenance window
	// for streaming jobs. Glue periodically performs maintenance activities. During
	// these maintenance windows, Glue will need to restart your streaming jobs.
	//
	// Glue will restart the job within 3 hours of the specified maintenance window.
	// For instance, if you set up the maintenance window for Monday at 10:00AM
	// GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.
	MaintenanceWindow *string `type:"string"`

	// For Glue version 1.0 or earlier jobs, using the standard worker type, the
	// number of Glue data processing units (DPUs) that can be allocated when this
	// job runs. A DPU is a relative measure of processing power that consists of
	// 4 vCPUs of compute capacity and 16 GB of memory. For more information, see
	// the Glue pricing page (https://aws.amazon.com/glue/pricing/).
	//
	// For Glue version 2.0+ jobs, you cannot specify a Maximum capacity. Instead,
	// you should specify a Worker type and the Number of workers.
	//
	// Do not set MaxCapacity if using WorkerType and NumberOfWorkers.
	//
	// The value that can be allocated for MaxCapacity depends on whether you are
	// running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming
	// ETL job:
	//
	//    * When you specify a Python shell job (JobCommand.Name="pythonshell"),
	//    you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.
	//
	//    * When you specify an Apache Spark ETL job (JobCommand.Name="glueetl")
	//    or Apache Spark streaming ETL job (JobCommand.Name="gluestreaming"), you
	//    can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type
	//    cannot have a fractional DPU allocation.
	MaxCapacity *float64 `type:"double"`

	// The maximum number of times to retry this job if it fails.
	MaxRetries *int64 `type:"integer"`

	// The name you assign to this job definition. It must be unique in your account.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// Arguments for this job that are not overridden when providing job arguments
	// in a job run, specified as name-value pairs.
	NonOverridableArguments map[string]*string `type:"map"`

	// Specifies configuration properties of a job notification.
	NotificationProperty *NotificationProperty `type:"structure"`

	// The number of workers of a defined workerType that are allocated when a job
	// runs.
	NumberOfWorkers *int64 `type:"integer"`

	// The name or Amazon Resource Name (ARN) of the IAM role associated with this
	// job.
	//
	// Role is a required field
	Role *string `type:"string" required:"true"`

	// The name of the SecurityConfiguration structure to be used with this job.
	SecurityConfiguration *string `min:"1" type:"string"`

	// The details for a source control configuration for a job, allowing synchronization
	// of job artifacts to or from a remote repository.
	SourceControlDetails *SourceControlDetails `type:"structure"`

	// The tags to use with this job. You may use tags to limit access to the job.
	// For more information about tags in Glue, see Amazon Web Services Tags in
	// Glue (https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html) in the
	// developer guide.
	Tags map[string]*string `type:"map"`

	// The job timeout in minutes. This is the maximum time that a job run can consume
	// resources before it is terminated and enters TIMEOUT status. The default
	// is 2,880 minutes (48 hours) for batch jobs.
	//
	// Streaming jobs must have timeout values less than 7 days or 10080 minutes.
	// When the value is left blank, the job will be restarted after 7 days based
	// if you have not setup a maintenance window. If you have setup maintenance
	// window, it will be restarted during the maintenance window after 7 days.
	Timeout *int64 `min:"1" type:"integer"`

	// The type of predefined worker that is allocated when a job runs. Accepts
	// a value of G.1X, G.2X, G.4X, G.8X or G.025X for Spark jobs. Accepts the value
	// Z.2X for Ray jobs.
	//
	//    * For the G.1X worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB
	//    of memory) with 84GB disk (approximately 34GB free), and provides 1 executor
	//    per worker. We recommend this worker type for workloads such as data transforms,
	//    joins, and queries, to offers a scalable and cost effective way to run
	//    most jobs.
	//
	//    * For the G.2X worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB
	//    of memory) with 128GB disk (approximately 77GB free), and provides 1 executor
	//    per worker. We recommend this worker type for workloads such as data transforms,
	//    joins, and queries, to offers a scalable and cost effective way to run
	//    most jobs.
	//
	//    * For the G.4X worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB
	//    of memory) with 256GB disk (approximately 235GB free), and provides 1
	//    executor per worker. We recommend this worker type for jobs whose workloads
	//    contain your most demanding transforms, aggregations, joins, and queries.
	//    This worker type is available only for Glue version 3.0 or later Spark
	//    ETL jobs in the following Amazon Web Services Regions: US East (Ohio),
	//    US East (N. Virginia), US West (Oregon), Asia Pacific (Singapore), Asia
	//    Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt),
	//    Europe (Ireland), and Europe (Stockholm).
	//
	//    * For the G.8X worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB
	//    of memory) with 512GB disk (approximately 487GB free), and provides 1
	//    executor per worker. We recommend this worker type for jobs whose workloads
	//    contain your most demanding transforms, aggregations, joins, and queries.
	//    This worker type is available only for Glue version 3.0 or later Spark
	//    ETL jobs, in the same Amazon Web Services Regions as supported for the
	//    G.4X worker type.
	//
	//    * For the G.025X worker type, each worker maps to 0.25 DPU (2 vCPUs, 4
	//    GB of memory) with 84GB disk (approximately 34GB free), and provides 1
	//    executor per worker. We recommend this worker type for low volume streaming
	//    jobs. This worker type is only available for Glue version 3.0 streaming
	//    jobs.
	//
	//    * For the Z.2X worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB
	//    of memory) with 128 GB disk (approximately 120GB free), and provides up
	//    to 8 Ray workers based on the autoscaler.
	WorkerType *string `type:"string" enum:"WorkerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateJobInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateJobInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateJobInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateJobInput"}
	if s.Command == nil {
		invalidParams.Add(request.NewErrParamRequired("Command"))
	}
	if s.GlueVersion != nil && len(*s.GlueVersion) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GlueVersion", 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.Role == nil {
		invalidParams.Add(request.NewErrParamRequired("Role"))
	}
	if s.SecurityConfiguration != nil && len(*s.SecurityConfiguration) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecurityConfiguration", 1))
	}
	if s.Timeout != nil && *s.Timeout < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Timeout", 1))
	}
	if s.CodeGenConfigurationNodes != nil {
		for i, v := range s.CodeGenConfigurationNodes {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CodeGenConfigurationNodes", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.NotificationProperty != nil {
		if err := s.NotificationProperty.Validate(); err != nil {
			invalidParams.AddNested("NotificationProperty", err.(request.ErrInvalidParams))
		}
	}
	if s.SourceControlDetails != nil {
		if err := s.SourceControlDetails.Validate(); err != nil {
			invalidParams.AddNested("SourceControlDetails", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllocatedCapacity sets the AllocatedCapacity field's value.
func (s *CreateJobInput) SetAllocatedCapacity(v int64) *CreateJobInput {
	s.AllocatedCapacity = &v
	return s
}

// SetCodeGenConfigurationNodes sets the CodeGenConfigurationNodes field's value.
func (s *CreateJobInput) SetCodeGenConfigurationNodes(v map[string]*CodeGenConfigurationNode) *CreateJobInput {
	s.CodeGenConfigurationNodes = v
	return s
}

// SetCommand sets the Command field's value.
func (s *CreateJobInput) SetCommand(v *JobCommand) *CreateJobInput {
	s.Command = v
	return s
}

// SetConnections sets the Connections field's value.
func (s *CreateJobInput) SetConnections(v *ConnectionsList) *CreateJobInput {
	s.Connections = v
	return s
}

// SetDefaultArguments sets the DefaultArguments field's value.
func (s *CreateJobInput) SetDefaultArguments(v map[string]*string) *CreateJobInput {
	s.DefaultArguments = v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateJobInput) SetDescription(v string) *CreateJobInput {
	s.Description = &v
	return s
}

// SetExecutionClass sets the ExecutionClass field's value.
func (s *CreateJobInput) SetExecutionClass(v string) *CreateJobInput {
	s.ExecutionClass = &v
	return s
}

// SetExecutionProperty sets the ExecutionProperty field's value.
func (s *CreateJobInput) SetExecutionProperty(v *ExecutionProperty) *CreateJobInput {
	s.ExecutionProperty = v
	return s
}

// SetGlueVersion sets the GlueVersion field's value.
func (s *CreateJobInput) SetGlueVersion(v string) *CreateJobInput {
	s.GlueVersion = &v
	return s
}

// SetJobMode sets the JobMode field's value.
func (s *CreateJobInput) SetJobMode(v string) *CreateJobInput {
	s.JobMode = &v
	return s
}

// SetLogUri sets the LogUri field's value.
func (s *CreateJobInput) SetLogUri(v string) *CreateJobInput {
	s.LogUri = &v
	return s
}

// SetMaintenanceWindow sets the MaintenanceWindow field's value.
func (s *CreateJobInput) SetMaintenanceWindow(v string) *CreateJobInput {
	s.MaintenanceWindow = &v
	return s
}

// SetMaxCapacity sets the MaxCapacity field's value.
func (s *CreateJobInput) SetMaxCapacity(v float64) *CreateJobInput {
	s.MaxCapacity = &v
	return s
}

// SetMaxRetries sets the MaxRetries field's value.
func (s *CreateJobInput) SetMaxRetries(v int64) *CreateJobInput {
	s.MaxRetries = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateJobInput) SetName(v string) *CreateJobInput {
	s.Name = &v
	return s
}

// SetNonOverridableArguments sets the NonOverridableArguments field's value.
func (s *CreateJobInput) SetNonOverridableArguments(v map[string]*string) *CreateJobInput {
	s.NonOverridableArguments = v
	return s
}

// SetNotificationProperty sets the NotificationProperty field's value.
func (s *CreateJobInput) SetNotificationProperty(v *NotificationProperty) *CreateJobInput {
	s.NotificationProperty = v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *CreateJobInput) SetNumberOfWorkers(v int64) *CreateJobInput {
	s.NumberOfWorkers = &v
	return s
}

// SetRole sets the Role field's value.
func (s *CreateJobInput) SetRole(v string) *CreateJobInput {
	s.Role = &v
	return s
}

// SetSecurityConfiguration sets the SecurityConfiguration field's value.
func (s *CreateJobInput) SetSecurityConfiguration(v string) *CreateJobInput {
	s.SecurityConfiguration = &v
	return s
}

// SetSourceControlDetails sets the SourceControlDetails field's value.
func (s *CreateJobInput) SetSourceControlDetails(v *SourceControlDetails) *CreateJobInput {
	s.SourceControlDetails = v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateJobInput) SetTags(v map[string]*string) *CreateJobInput {
	s.Tags = v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *CreateJobInput) SetTimeout(v int64) *CreateJobInput {
	s.Timeout = &v
	return s
}

// SetWorkerType sets the WorkerType field's value.
func (s *CreateJobInput) SetWorkerType(v string) *CreateJobInput {
	s.WorkerType = &v
	return s
}

type CreateJobOutput struct {
	_ struct{} `type:"structure"`

	// The unique name that was provided for this job definition.
	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 CreateJobOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateJobOutput) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *CreateJobOutput) SetName(v string) *CreateJobOutput {
	s.Name = &v
	return s
}

// Specifies a JSON classifier for CreateClassifier to create.
type CreateJsonClassifierRequest struct {
	_ struct{} `type:"structure"`

	// A JsonPath string defining the JSON data for the classifier to classify.
	// Glue supports a subset of JsonPath, as described in Writing JsonPath Custom
	// Classifiers (https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html#custom-classifier-json).
	//
	// JsonPath is a required field
	JsonPath *string `type:"string" required:"true"`

	// The name of the classifier.
	//
	// 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 CreateJsonClassifierRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateJsonClassifierRequest) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateJsonClassifierRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateJsonClassifierRequest"}
	if s.JsonPath == nil {
		invalidParams.Add(request.NewErrParamRequired("JsonPath"))
	}
	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
}

// SetJsonPath sets the JsonPath field's value.
func (s *CreateJsonClassifierRequest) SetJsonPath(v string) *CreateJsonClassifierRequest {
	s.JsonPath = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateJsonClassifierRequest) SetName(v string) *CreateJsonClassifierRequest {
	s.Name = &v
	return s
}

type CreateMLTransformInput struct {
	_ struct{} `type:"structure"`

	// A description of the machine learning transform that is being defined. The
	// default is an empty string.
	Description *string `type:"string"`

	// This value determines which version of Glue this machine learning transform
	// is compatible with. Glue 1.0 is recommended for most customers. If the value
	// is not set, the Glue compatibility defaults to Glue 0.9. For more information,
	// see Glue Versions (https://docs.aws.amazon.com/glue/latest/dg/release-notes.html#release-notes-versions)
	// in the developer guide.
	GlueVersion *string `min:"1" type:"string"`

	// A list of Glue table definitions used by the transform.
	//
	// InputRecordTables is a required field
	InputRecordTables []*Table `type:"list" required:"true"`

	// The number of Glue data processing units (DPUs) that are allocated to task
	// runs for this transform. You can allocate from 2 to 100 DPUs; the default
	// is 10. A DPU is a relative measure of processing power that consists of 4
	// vCPUs of compute capacity and 16 GB of memory. For more information, see
	// the Glue pricing page (https://aws.amazon.com/glue/pricing/).
	//
	// MaxCapacity is a mutually exclusive option with NumberOfWorkers and WorkerType.
	//
	//    * If either NumberOfWorkers or WorkerType is set, then MaxCapacity cannot
	//    be set.
	//
	//    * If MaxCapacity is set then neither NumberOfWorkers or WorkerType can
	//    be set.
	//
	//    * If WorkerType is set, then NumberOfWorkers is required (and vice versa).
	//
	//    * MaxCapacity and NumberOfWorkers must both be at least 1.
	//
	// When the WorkerType field is set to a value other than Standard, the MaxCapacity
	// field is set automatically and becomes read-only.
	//
	// When the WorkerType field is set to a value other than Standard, the MaxCapacity
	// field is set automatically and becomes read-only.
	MaxCapacity *float64 `type:"double"`

	// The maximum number of times to retry a task for this transform after a task
	// run fails.
	MaxRetries *int64 `type:"integer"`

	// The unique name that you give the transform when you create it.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The number of workers of a defined workerType that are allocated when this
	// task runs.
	//
	// If WorkerType is set, then NumberOfWorkers is required (and vice versa).
	NumberOfWorkers *int64 `type:"integer"`

	// The algorithmic parameters that are specific to the transform type used.
	// Conditionally dependent on the transform type.
	//
	// Parameters is a required field
	Parameters *TransformParameters `type:"structure" required:"true"`

	// The name or Amazon Resource Name (ARN) of the IAM role with the required
	// permissions. The required permissions include both Glue service role permissions
	// to Glue resources, and Amazon S3 permissions required by the transform.
	//
	//    * This role needs Glue service role permissions to allow access to resources
	//    in Glue. See Attach a Policy to IAM Users That Access Glue (https://docs.aws.amazon.com/glue/latest/dg/attach-policy-iam-user.html).
	//
	//    * This role needs permission to your Amazon Simple Storage Service (Amazon
	//    S3) sources, targets, temporary directory, scripts, and any libraries
	//    used by the task run for this transform.
	//
	// Role is a required field
	Role *string `type:"string" required:"true"`

	// The tags to use with this machine learning transform. You may use tags to
	// limit access to the machine learning transform. For more information about
	// tags in Glue, see Amazon Web Services Tags in Glue (https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html)
	// in the developer guide.
	Tags map[string]*string `type:"map"`

	// The timeout of the task run for this transform in minutes. This is the maximum
	// time that a task run for this transform can consume resources before it is
	// terminated and enters TIMEOUT status. The default is 2,880 minutes (48 hours).
	Timeout *int64 `min:"1" type:"integer"`

	// The encryption-at-rest settings of the transform that apply to accessing
	// user data. Machine learning transforms can access user data encrypted in
	// Amazon S3 using KMS.
	TransformEncryption *TransformEncryption `type:"structure"`

	// The type of predefined worker that is allocated when this task runs. Accepts
	// a value of Standard, G.1X, or G.2X.
	//
	//    * For the Standard worker type, each worker provides 4 vCPU, 16 GB of
	//    memory and a 50GB disk, and 2 executors per worker.
	//
	//    * For the G.1X worker type, each worker provides 4 vCPU, 16 GB of memory
	//    and a 64GB disk, and 1 executor per worker.
	//
	//    * For the G.2X worker type, each worker provides 8 vCPU, 32 GB of memory
	//    and a 128GB disk, and 1 executor per worker.
	//
	// MaxCapacity is a mutually exclusive option with NumberOfWorkers and WorkerType.
	//
	//    * If either NumberOfWorkers or WorkerType is set, then MaxCapacity cannot
	//    be set.
	//
	//    * If MaxCapacity is set then neither NumberOfWorkers or WorkerType can
	//    be set.
	//
	//    * If WorkerType is set, then NumberOfWorkers is required (and vice versa).
	//
	//    * MaxCapacity and NumberOfWorkers must both be at least 1.
	WorkerType *string `type:"string" enum:"WorkerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateMLTransformInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateMLTransformInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateMLTransformInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateMLTransformInput"}
	if s.GlueVersion != nil && len(*s.GlueVersion) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GlueVersion", 1))
	}
	if s.InputRecordTables == nil {
		invalidParams.Add(request.NewErrParamRequired("InputRecordTables"))
	}
	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.Parameters == nil {
		invalidParams.Add(request.NewErrParamRequired("Parameters"))
	}
	if s.Role == nil {
		invalidParams.Add(request.NewErrParamRequired("Role"))
	}
	if s.Timeout != nil && *s.Timeout < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Timeout", 1))
	}
	if s.InputRecordTables != nil {
		for i, v := range s.InputRecordTables {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InputRecordTables", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Parameters != nil {
		if err := s.Parameters.Validate(); err != nil {
			invalidParams.AddNested("Parameters", err.(request.ErrInvalidParams))
		}
	}
	if s.TransformEncryption != nil {
		if err := s.TransformEncryption.Validate(); err != nil {
			invalidParams.AddNested("TransformEncryption", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *CreateMLTransformInput) SetDescription(v string) *CreateMLTransformInput {
	s.Description = &v
	return s
}

// SetGlueVersion sets the GlueVersion field's value.
func (s *CreateMLTransformInput) SetGlueVersion(v string) *CreateMLTransformInput {
	s.GlueVersion = &v
	return s
}

// SetInputRecordTables sets the InputRecordTables field's value.
func (s *CreateMLTransformInput) SetInputRecordTables(v []*Table) *CreateMLTransformInput {
	s.InputRecordTables = v
	return s
}

// SetMaxCapacity sets the MaxCapacity field's value.
func (s *CreateMLTransformInput) SetMaxCapacity(v float64) *CreateMLTransformInput {
	s.MaxCapacity = &v
	return s
}

// SetMaxRetries sets the MaxRetries field's value.
func (s *CreateMLTransformInput) SetMaxRetries(v int64) *CreateMLTransformInput {
	s.MaxRetries = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateMLTransformInput) SetName(v string) *CreateMLTransformInput {
	s.Name = &v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *CreateMLTransformInput) SetNumberOfWorkers(v int64) *CreateMLTransformInput {
	s.NumberOfWorkers = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *CreateMLTransformInput) SetParameters(v *TransformParameters) *CreateMLTransformInput {
	s.Parameters = v
	return s
}

// SetRole sets the Role field's value.
func (s *CreateMLTransformInput) SetRole(v string) *CreateMLTransformInput {
	s.Role = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateMLTransformInput) SetTags(v map[string]*string) *CreateMLTransformInput {
	s.Tags = v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *CreateMLTransformInput) SetTimeout(v int64) *CreateMLTransformInput {
	s.Timeout = &v
	return s
}

// SetTransformEncryption sets the TransformEncryption field's value.
func (s *CreateMLTransformInput) SetTransformEncryption(v *TransformEncryption) *CreateMLTransformInput {
	s.TransformEncryption = v
	return s
}

// SetWorkerType sets the WorkerType field's value.
func (s *CreateMLTransformInput) SetWorkerType(v string) *CreateMLTransformInput {
	s.WorkerType = &v
	return s
}

type CreateMLTransformOutput struct {
	_ struct{} `type:"structure"`

	// A unique identifier that is generated for the transform.
	TransformId *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 CreateMLTransformOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateMLTransformOutput) GoString() string {
	return s.String()
}

// SetTransformId sets the TransformId field's value.
func (s *CreateMLTransformOutput) SetTransformId(v string) *CreateMLTransformOutput {
	s.TransformId = &v
	return s
}

type CreatePartitionIndexInput struct {
	_ struct{} `type:"structure"`

	// The catalog ID where the table resides.
	CatalogId *string `min:"1" type:"string"`

	// Specifies the name of a database in which you want to create a partition
	// index.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// Specifies a PartitionIndex structure to create a partition index in an existing
	// table.
	//
	// PartitionIndex is a required field
	PartitionIndex *PartitionIndex `type:"structure" required:"true"`

	// Specifies the name of a table in which you want to create a partition index.
	//
	// TableName is a required field
	TableName *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 CreatePartitionIndexInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreatePartitionIndexInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreatePartitionIndexInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreatePartitionIndexInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.PartitionIndex == nil {
		invalidParams.Add(request.NewErrParamRequired("PartitionIndex"))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}
	if s.PartitionIndex != nil {
		if err := s.PartitionIndex.Validate(); err != nil {
			invalidParams.AddNested("PartitionIndex", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *CreatePartitionIndexInput) SetCatalogId(v string) *CreatePartitionIndexInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *CreatePartitionIndexInput) SetDatabaseName(v string) *CreatePartitionIndexInput {
	s.DatabaseName = &v
	return s
}

// SetPartitionIndex sets the PartitionIndex field's value.
func (s *CreatePartitionIndexInput) SetPartitionIndex(v *PartitionIndex) *CreatePartitionIndexInput {
	s.PartitionIndex = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *CreatePartitionIndexInput) SetTableName(v string) *CreatePartitionIndexInput {
	s.TableName = &v
	return s
}

type CreatePartitionIndexOutput 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 CreatePartitionIndexOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreatePartitionIndexOutput) GoString() string {
	return s.String()
}

type CreatePartitionInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID of the catalog in which the partition
	// is to be created.
	CatalogId *string `min:"1" type:"string"`

	// The name of the metadata database in which the partition is to be created.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// A PartitionInput structure defining the partition to be created.
	//
	// PartitionInput is a required field
	PartitionInput *PartitionInput `type:"structure" required:"true"`

	// The name of the metadata table in which the partition is to be created.
	//
	// TableName is a required field
	TableName *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 CreatePartitionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreatePartitionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreatePartitionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreatePartitionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.PartitionInput == nil {
		invalidParams.Add(request.NewErrParamRequired("PartitionInput"))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}
	if s.PartitionInput != nil {
		if err := s.PartitionInput.Validate(); err != nil {
			invalidParams.AddNested("PartitionInput", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *CreatePartitionInput) SetCatalogId(v string) *CreatePartitionInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *CreatePartitionInput) SetDatabaseName(v string) *CreatePartitionInput {
	s.DatabaseName = &v
	return s
}

// SetPartitionInput sets the PartitionInput field's value.
func (s *CreatePartitionInput) SetPartitionInput(v *PartitionInput) *CreatePartitionInput {
	s.PartitionInput = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *CreatePartitionInput) SetTableName(v string) *CreatePartitionInput {
	s.TableName = &v
	return s
}

type CreatePartitionOutput 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 CreatePartitionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreatePartitionOutput) GoString() string {
	return s.String()
}

type CreateRegistryInput struct {
	_ struct{} `type:"structure"`

	// A description of the registry. If description is not provided, there will
	// not be any default value for this.
	Description *string `type:"string"`

	// Name of the registry to be created of max length of 255, and may only contain
	// letters, numbers, hyphen, underscore, dollar sign, or hash mark. No whitespace.
	//
	// RegistryName is a required field
	RegistryName *string `min:"1" type:"string" required:"true"`

	// Amazon Web Services tags that contain a key value pair and may be searched
	// by console, command line, or API.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRegistryInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRegistryInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateRegistryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateRegistryInput"}
	if s.RegistryName == nil {
		invalidParams.Add(request.NewErrParamRequired("RegistryName"))
	}
	if s.RegistryName != nil && len(*s.RegistryName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RegistryName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *CreateRegistryInput) SetDescription(v string) *CreateRegistryInput {
	s.Description = &v
	return s
}

// SetRegistryName sets the RegistryName field's value.
func (s *CreateRegistryInput) SetRegistryName(v string) *CreateRegistryInput {
	s.RegistryName = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateRegistryInput) SetTags(v map[string]*string) *CreateRegistryInput {
	s.Tags = v
	return s
}

type CreateRegistryOutput struct {
	_ struct{} `type:"structure"`

	// A description of the registry.
	Description *string `type:"string"`

	// The Amazon Resource Name (ARN) of the newly created registry.
	RegistryArn *string `min:"1" type:"string"`

	// The name of the registry.
	RegistryName *string `min:"1" type:"string"`

	// The tags for the registry.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRegistryOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateRegistryOutput) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *CreateRegistryOutput) SetDescription(v string) *CreateRegistryOutput {
	s.Description = &v
	return s
}

// SetRegistryArn sets the RegistryArn field's value.
func (s *CreateRegistryOutput) SetRegistryArn(v string) *CreateRegistryOutput {
	s.RegistryArn = &v
	return s
}

// SetRegistryName sets the RegistryName field's value.
func (s *CreateRegistryOutput) SetRegistryName(v string) *CreateRegistryOutput {
	s.RegistryName = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateRegistryOutput) SetTags(v map[string]*string) *CreateRegistryOutput {
	s.Tags = v
	return s
}

type CreateSchemaInput struct {
	_ struct{} `type:"structure"`

	// The compatibility mode of the schema. The possible values are:
	//
	//    * NONE: No compatibility mode applies. You can use this choice in development
	//    scenarios or if you do not know the compatibility mode that you want to
	//    apply to schemas. Any new version added will be accepted without undergoing
	//    a compatibility check.
	//
	//    * DISABLED: This compatibility choice prevents versioning for a particular
	//    schema. You can use this choice to prevent future versioning of a schema.
	//
	//    * BACKWARD: This compatibility choice is recommended as it allows data
	//    receivers to read both the current and one previous schema version. This
	//    means that for instance, a new schema version cannot drop data fields
	//    or change the type of these fields, so they can't be read by readers using
	//    the previous version.
	//
	//    * BACKWARD_ALL: This compatibility choice allows data receivers to read
	//    both the current and all previous schema versions. You can use this choice
	//    when you need to delete fields or add optional fields, and check compatibility
	//    against all previous schema versions.
	//
	//    * FORWARD: This compatibility choice allows data receivers to read both
	//    the current and one next schema version, but not necessarily later versions.
	//    You can use this choice when you need to add fields or delete optional
	//    fields, but only check compatibility against the last schema version.
	//
	//    * FORWARD_ALL: This compatibility choice allows data receivers to read
	//    written by producers of any new registered schema. You can use this choice
	//    when you need to add fields or delete optional fields, and check compatibility
	//    against all previous schema versions.
	//
	//    * FULL: This compatibility choice allows data receivers to read data written
	//    by producers using the previous or next version of the schema, but not
	//    necessarily earlier or later versions. You can use this choice when you
	//    need to add or remove optional fields, but only check compatibility against
	//    the last schema version.
	//
	//    * FULL_ALL: This compatibility choice allows data receivers to read data
	//    written by producers using all previous schema versions. You can use this
	//    choice when you need to add or remove optional fields, and check compatibility
	//    against all previous schema versions.
	Compatibility *string `type:"string" enum:"Compatibility"`

	// The data format of the schema definition. Currently AVRO, JSON and PROTOBUF
	// are supported.
	//
	// DataFormat is a required field
	DataFormat *string `type:"string" required:"true" enum:"DataFormat"`

	// An optional description of the schema. If description is not provided, there
	// will not be any automatic default value for this.
	Description *string `type:"string"`

	// This is a wrapper shape to contain the registry identity fields. If this
	// is not provided, the default registry will be used. The ARN format for the
	// same will be: arn:aws:glue:us-east-2:<customer id>:registry/default-registry:random-5-letter-id.
	RegistryId *RegistryId `type:"structure"`

	// The schema definition using the DataFormat setting for SchemaName.
	SchemaDefinition *string `min:"1" type:"string"`

	// Name of the schema to be created of max length of 255, and may only contain
	// letters, numbers, hyphen, underscore, dollar sign, or hash mark. No whitespace.
	//
	// SchemaName is a required field
	SchemaName *string `min:"1" type:"string" required:"true"`

	// Amazon Web Services tags that contain a key value pair and may be searched
	// by console, command line, or API. If specified, follows the Amazon Web Services
	// tags-on-create pattern.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateSchemaInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateSchemaInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateSchemaInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateSchemaInput"}
	if s.DataFormat == nil {
		invalidParams.Add(request.NewErrParamRequired("DataFormat"))
	}
	if s.SchemaDefinition != nil && len(*s.SchemaDefinition) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SchemaDefinition", 1))
	}
	if s.SchemaName == nil {
		invalidParams.Add(request.NewErrParamRequired("SchemaName"))
	}
	if s.SchemaName != nil && len(*s.SchemaName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SchemaName", 1))
	}
	if s.RegistryId != nil {
		if err := s.RegistryId.Validate(); err != nil {
			invalidParams.AddNested("RegistryId", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCompatibility sets the Compatibility field's value.
func (s *CreateSchemaInput) SetCompatibility(v string) *CreateSchemaInput {
	s.Compatibility = &v
	return s
}

// SetDataFormat sets the DataFormat field's value.
func (s *CreateSchemaInput) SetDataFormat(v string) *CreateSchemaInput {
	s.DataFormat = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateSchemaInput) SetDescription(v string) *CreateSchemaInput {
	s.Description = &v
	return s
}

// SetRegistryId sets the RegistryId field's value.
func (s *CreateSchemaInput) SetRegistryId(v *RegistryId) *CreateSchemaInput {
	s.RegistryId = v
	return s
}

// SetSchemaDefinition sets the SchemaDefinition field's value.
func (s *CreateSchemaInput) SetSchemaDefinition(v string) *CreateSchemaInput {
	s.SchemaDefinition = &v
	return s
}

// SetSchemaName sets the SchemaName field's value.
func (s *CreateSchemaInput) SetSchemaName(v string) *CreateSchemaInput {
	s.SchemaName = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateSchemaInput) SetTags(v map[string]*string) *CreateSchemaInput {
	s.Tags = v
	return s
}

type CreateSchemaOutput struct {
	_ struct{} `type:"structure"`

	// The schema compatibility mode.
	Compatibility *string `type:"string" enum:"Compatibility"`

	// The data format of the schema definition. Currently AVRO, JSON and PROTOBUF
	// are supported.
	DataFormat *string `type:"string" enum:"DataFormat"`

	// A description of the schema if specified when created.
	Description *string `type:"string"`

	// The latest version of the schema associated with the returned schema definition.
	LatestSchemaVersion *int64 `min:"1" type:"long"`

	// The next version of the schema associated with the returned schema definition.
	NextSchemaVersion *int64 `min:"1" type:"long"`

	// The Amazon Resource Name (ARN) of the registry.
	RegistryArn *string `min:"1" type:"string"`

	// The name of the registry.
	RegistryName *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the schema.
	SchemaArn *string `min:"1" type:"string"`

	// The version number of the checkpoint (the last time the compatibility mode
	// was changed).
	SchemaCheckpoint *int64 `min:"1" type:"long"`

	// The name of the schema.
	SchemaName *string `min:"1" type:"string"`

	// The status of the schema.
	SchemaStatus *string `type:"string" enum:"SchemaStatus"`

	// The unique identifier of the first schema version.
	SchemaVersionId *string `min:"36" type:"string"`

	// The status of the first schema version created.
	SchemaVersionStatus *string `type:"string" enum:"SchemaVersionStatus"`

	// The tags for the schema.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateSchemaOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateSchemaOutput) GoString() string {
	return s.String()
}

// SetCompatibility sets the Compatibility field's value.
func (s *CreateSchemaOutput) SetCompatibility(v string) *CreateSchemaOutput {
	s.Compatibility = &v
	return s
}

// SetDataFormat sets the DataFormat field's value.
func (s *CreateSchemaOutput) SetDataFormat(v string) *CreateSchemaOutput {
	s.DataFormat = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateSchemaOutput) SetDescription(v string) *CreateSchemaOutput {
	s.Description = &v
	return s
}

// SetLatestSchemaVersion sets the LatestSchemaVersion field's value.
func (s *CreateSchemaOutput) SetLatestSchemaVersion(v int64) *CreateSchemaOutput {
	s.LatestSchemaVersion = &v
	return s
}

// SetNextSchemaVersion sets the NextSchemaVersion field's value.
func (s *CreateSchemaOutput) SetNextSchemaVersion(v int64) *CreateSchemaOutput {
	s.NextSchemaVersion = &v
	return s
}

// SetRegistryArn sets the RegistryArn field's value.
func (s *CreateSchemaOutput) SetRegistryArn(v string) *CreateSchemaOutput {
	s.RegistryArn = &v
	return s
}

// SetRegistryName sets the RegistryName field's value.
func (s *CreateSchemaOutput) SetRegistryName(v string) *CreateSchemaOutput {
	s.RegistryName = &v
	return s
}

// SetSchemaArn sets the SchemaArn field's value.
func (s *CreateSchemaOutput) SetSchemaArn(v string) *CreateSchemaOutput {
	s.SchemaArn = &v
	return s
}

// SetSchemaCheckpoint sets the SchemaCheckpoint field's value.
func (s *CreateSchemaOutput) SetSchemaCheckpoint(v int64) *CreateSchemaOutput {
	s.SchemaCheckpoint = &v
	return s
}

// SetSchemaName sets the SchemaName field's value.
func (s *CreateSchemaOutput) SetSchemaName(v string) *CreateSchemaOutput {
	s.SchemaName = &v
	return s
}

// SetSchemaStatus sets the SchemaStatus field's value.
func (s *CreateSchemaOutput) SetSchemaStatus(v string) *CreateSchemaOutput {
	s.SchemaStatus = &v
	return s
}

// SetSchemaVersionId sets the SchemaVersionId field's value.
func (s *CreateSchemaOutput) SetSchemaVersionId(v string) *CreateSchemaOutput {
	s.SchemaVersionId = &v
	return s
}

// SetSchemaVersionStatus sets the SchemaVersionStatus field's value.
func (s *CreateSchemaOutput) SetSchemaVersionStatus(v string) *CreateSchemaOutput {
	s.SchemaVersionStatus = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateSchemaOutput) SetTags(v map[string]*string) *CreateSchemaOutput {
	s.Tags = v
	return s
}

type CreateScriptInput struct {
	_ struct{} `type:"structure"`

	// A list of the edges in the DAG.
	DagEdges []*CodeGenEdge `type:"list"`

	// A list of the nodes in the DAG.
	DagNodes []*CodeGenNode `type:"list"`

	// The programming language of the resulting code from the DAG.
	Language *string `type:"string" enum:"Language"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateScriptInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateScriptInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateScriptInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateScriptInput"}
	if s.DagEdges != nil {
		for i, v := range s.DagEdges {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DagEdges", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.DagNodes != nil {
		for i, v := range s.DagNodes {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DagNodes", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDagEdges sets the DagEdges field's value.
func (s *CreateScriptInput) SetDagEdges(v []*CodeGenEdge) *CreateScriptInput {
	s.DagEdges = v
	return s
}

// SetDagNodes sets the DagNodes field's value.
func (s *CreateScriptInput) SetDagNodes(v []*CodeGenNode) *CreateScriptInput {
	s.DagNodes = v
	return s
}

// SetLanguage sets the Language field's value.
func (s *CreateScriptInput) SetLanguage(v string) *CreateScriptInput {
	s.Language = &v
	return s
}

type CreateScriptOutput struct {
	_ struct{} `type:"structure"`

	// The Python script generated from the DAG.
	PythonScript *string `type:"string"`

	// The Scala code generated from the DAG.
	ScalaCode *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 CreateScriptOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateScriptOutput) GoString() string {
	return s.String()
}

// SetPythonScript sets the PythonScript field's value.
func (s *CreateScriptOutput) SetPythonScript(v string) *CreateScriptOutput {
	s.PythonScript = &v
	return s
}

// SetScalaCode sets the ScalaCode field's value.
func (s *CreateScriptOutput) SetScalaCode(v string) *CreateScriptOutput {
	s.ScalaCode = &v
	return s
}

type CreateSecurityConfigurationInput struct {
	_ struct{} `type:"structure"`

	// The encryption configuration for the new security configuration.
	//
	// EncryptionConfiguration is a required field
	EncryptionConfiguration *EncryptionConfiguration `type:"structure" required:"true"`

	// The name for the new security configuration.
	//
	// 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 CreateSecurityConfigurationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateSecurityConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateSecurityConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateSecurityConfigurationInput"}
	if s.EncryptionConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("EncryptionConfiguration"))
	}
	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
}

// SetEncryptionConfiguration sets the EncryptionConfiguration field's value.
func (s *CreateSecurityConfigurationInput) SetEncryptionConfiguration(v *EncryptionConfiguration) *CreateSecurityConfigurationInput {
	s.EncryptionConfiguration = v
	return s
}

// SetName sets the Name field's value.
func (s *CreateSecurityConfigurationInput) SetName(v string) *CreateSecurityConfigurationInput {
	s.Name = &v
	return s
}

type CreateSecurityConfigurationOutput struct {
	_ struct{} `type:"structure"`

	// The time at which the new security configuration was created.
	CreatedTimestamp *time.Time `type:"timestamp"`

	// The name assigned to the new security configuration.
	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 CreateSecurityConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateSecurityConfigurationOutput) GoString() string {
	return s.String()
}

// SetCreatedTimestamp sets the CreatedTimestamp field's value.
func (s *CreateSecurityConfigurationOutput) SetCreatedTimestamp(v time.Time) *CreateSecurityConfigurationOutput {
	s.CreatedTimestamp = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateSecurityConfigurationOutput) SetName(v string) *CreateSecurityConfigurationOutput {
	s.Name = &v
	return s
}

// Request to create a new session.
type CreateSessionInput struct {
	_ struct{} `type:"structure"`

	// The SessionCommand that runs the job.
	//
	// Command is a required field
	Command *SessionCommand `type:"structure" required:"true"`

	// The number of connections to use for the session.
	Connections *ConnectionsList `type:"structure"`

	// A map array of key-value pairs. Max is 75 pairs.
	DefaultArguments map[string]*string `type:"map"`

	// The description of the session.
	Description *string `type:"string"`

	// The Glue version determines the versions of Apache Spark and Python that
	// Glue supports. The GlueVersion must be greater than 2.0.
	GlueVersion *string `min:"1" type:"string"`

	// The ID of the session request.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// The number of minutes when idle before session times out. Default for Spark
	// ETL jobs is value of Timeout. Consult the documentation for other job types.
	IdleTimeout *int64 `min:"1" type:"integer"`

	// The number of Glue data processing units (DPUs) that can be allocated when
	// the job runs. A DPU is a relative measure of processing power that consists
	// of 4 vCPUs of compute capacity and 16 GB memory.
	MaxCapacity *float64 `type:"double"`

	// The number of workers of a defined WorkerType to use for the session.
	NumberOfWorkers *int64 `type:"integer"`

	// The origin of the request.
	RequestOrigin *string `min:"1" type:"string"`

	// The IAM Role ARN
	//
	// Role is a required field
	Role *string `min:"20" type:"string" required:"true"`

	// The name of the SecurityConfiguration structure to be used with the session
	SecurityConfiguration *string `min:"1" type:"string"`

	// The map of key value pairs (tags) belonging to the session.
	Tags map[string]*string `type:"map"`

	// The number of minutes before session times out. Default for Spark ETL jobs
	// is 48 hours (2880 minutes), the maximum session lifetime for this job type.
	// Consult the documentation for other job types.
	Timeout *int64 `min:"1" type:"integer"`

	// The type of predefined worker that is allocated when a job runs. Accepts
	// a value of G.1X, G.2X, G.4X, or G.8X for Spark jobs. Accepts the value Z.2X
	// for Ray notebooks.
	//
	//    * For the G.1X worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB
	//    of memory) with 84GB disk (approximately 34GB free), and provides 1 executor
	//    per worker. We recommend this worker type for workloads such as data transforms,
	//    joins, and queries, to offers a scalable and cost effective way to run
	//    most jobs.
	//
	//    * For the G.2X worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB
	//    of memory) with 128GB disk (approximately 77GB free), and provides 1 executor
	//    per worker. We recommend this worker type for workloads such as data transforms,
	//    joins, and queries, to offers a scalable and cost effective way to run
	//    most jobs.
	//
	//    * For the G.4X worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB
	//    of memory) with 256GB disk (approximately 235GB free), and provides 1
	//    executor per worker. We recommend this worker type for jobs whose workloads
	//    contain your most demanding transforms, aggregations, joins, and queries.
	//    This worker type is available only for Glue version 3.0 or later Spark
	//    ETL jobs in the following Amazon Web Services Regions: US East (Ohio),
	//    US East (N. Virginia), US West (Oregon), Asia Pacific (Singapore), Asia
	//    Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt),
	//    Europe (Ireland), and Europe (Stockholm).
	//
	//    * For the G.8X worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB
	//    of memory) with 512GB disk (approximately 487GB free), and provides 1
	//    executor per worker. We recommend this worker type for jobs whose workloads
	//    contain your most demanding transforms, aggregations, joins, and queries.
	//    This worker type is available only for Glue version 3.0 or later Spark
	//    ETL jobs, in the same Amazon Web Services Regions as supported for the
	//    G.4X worker type.
	//
	//    * For the Z.2X worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB
	//    of memory) with 128 GB disk (approximately 120GB free), and provides up
	//    to 8 Ray workers based on the autoscaler.
	WorkerType *string `type:"string" enum:"WorkerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateSessionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateSessionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateSessionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateSessionInput"}
	if s.Command == nil {
		invalidParams.Add(request.NewErrParamRequired("Command"))
	}
	if s.GlueVersion != nil && len(*s.GlueVersion) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GlueVersion", 1))
	}
	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.IdleTimeout != nil && *s.IdleTimeout < 1 {
		invalidParams.Add(request.NewErrParamMinValue("IdleTimeout", 1))
	}
	if s.RequestOrigin != nil && len(*s.RequestOrigin) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RequestOrigin", 1))
	}
	if s.Role == nil {
		invalidParams.Add(request.NewErrParamRequired("Role"))
	}
	if s.Role != nil && len(*s.Role) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("Role", 20))
	}
	if s.SecurityConfiguration != nil && len(*s.SecurityConfiguration) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecurityConfiguration", 1))
	}
	if s.Timeout != nil && *s.Timeout < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Timeout", 1))
	}
	if s.Command != nil {
		if err := s.Command.Validate(); err != nil {
			invalidParams.AddNested("Command", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCommand sets the Command field's value.
func (s *CreateSessionInput) SetCommand(v *SessionCommand) *CreateSessionInput {
	s.Command = v
	return s
}

// SetConnections sets the Connections field's value.
func (s *CreateSessionInput) SetConnections(v *ConnectionsList) *CreateSessionInput {
	s.Connections = v
	return s
}

// SetDefaultArguments sets the DefaultArguments field's value.
func (s *CreateSessionInput) SetDefaultArguments(v map[string]*string) *CreateSessionInput {
	s.DefaultArguments = v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateSessionInput) SetDescription(v string) *CreateSessionInput {
	s.Description = &v
	return s
}

// SetGlueVersion sets the GlueVersion field's value.
func (s *CreateSessionInput) SetGlueVersion(v string) *CreateSessionInput {
	s.GlueVersion = &v
	return s
}

// SetId sets the Id field's value.
func (s *CreateSessionInput) SetId(v string) *CreateSessionInput {
	s.Id = &v
	return s
}

// SetIdleTimeout sets the IdleTimeout field's value.
func (s *CreateSessionInput) SetIdleTimeout(v int64) *CreateSessionInput {
	s.IdleTimeout = &v
	return s
}

// SetMaxCapacity sets the MaxCapacity field's value.
func (s *CreateSessionInput) SetMaxCapacity(v float64) *CreateSessionInput {
	s.MaxCapacity = &v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *CreateSessionInput) SetNumberOfWorkers(v int64) *CreateSessionInput {
	s.NumberOfWorkers = &v
	return s
}

// SetRequestOrigin sets the RequestOrigin field's value.
func (s *CreateSessionInput) SetRequestOrigin(v string) *CreateSessionInput {
	s.RequestOrigin = &v
	return s
}

// SetRole sets the Role field's value.
func (s *CreateSessionInput) SetRole(v string) *CreateSessionInput {
	s.Role = &v
	return s
}

// SetSecurityConfiguration sets the SecurityConfiguration field's value.
func (s *CreateSessionInput) SetSecurityConfiguration(v string) *CreateSessionInput {
	s.SecurityConfiguration = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateSessionInput) SetTags(v map[string]*string) *CreateSessionInput {
	s.Tags = v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *CreateSessionInput) SetTimeout(v int64) *CreateSessionInput {
	s.Timeout = &v
	return s
}

// SetWorkerType sets the WorkerType field's value.
func (s *CreateSessionInput) SetWorkerType(v string) *CreateSessionInput {
	s.WorkerType = &v
	return s
}

type CreateSessionOutput struct {
	_ struct{} `type:"structure"`

	// Returns the session object in the response.
	Session *Session `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateSessionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateSessionOutput) GoString() string {
	return s.String()
}

// SetSession sets the Session field's value.
func (s *CreateSessionOutput) SetSession(v *Session) *CreateSessionOutput {
	s.Session = v
	return s
}

type CreateTableInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which to create the Table. If none is supplied,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The catalog database in which to create the new table. For Hive compatibility,
	// this name is entirely lowercase.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// Specifies an OpenTableFormatInput structure when creating an open format
	// table.
	OpenTableFormatInput *OpenTableFormatInput_ `type:"structure"`

	// A list of partition indexes, PartitionIndex structures, to create in the
	// table.
	PartitionIndexes []*PartitionIndex `type:"list"`

	// The TableInput object that defines the metadata table to create in the catalog.
	//
	// TableInput is a required field
	TableInput *TableInput `type:"structure" required:"true"`

	// The ID of the transaction.
	TransactionId *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 CreateTableInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTableInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateTableInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateTableInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.TableInput == nil {
		invalidParams.Add(request.NewErrParamRequired("TableInput"))
	}
	if s.TransactionId != nil && len(*s.TransactionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TransactionId", 1))
	}
	if s.OpenTableFormatInput != nil {
		if err := s.OpenTableFormatInput.Validate(); err != nil {
			invalidParams.AddNested("OpenTableFormatInput", err.(request.ErrInvalidParams))
		}
	}
	if s.PartitionIndexes != nil {
		for i, v := range s.PartitionIndexes {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PartitionIndexes", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.TableInput != nil {
		if err := s.TableInput.Validate(); err != nil {
			invalidParams.AddNested("TableInput", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *CreateTableInput) SetCatalogId(v string) *CreateTableInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *CreateTableInput) SetDatabaseName(v string) *CreateTableInput {
	s.DatabaseName = &v
	return s
}

// SetOpenTableFormatInput sets the OpenTableFormatInput field's value.
func (s *CreateTableInput) SetOpenTableFormatInput(v *OpenTableFormatInput_) *CreateTableInput {
	s.OpenTableFormatInput = v
	return s
}

// SetPartitionIndexes sets the PartitionIndexes field's value.
func (s *CreateTableInput) SetPartitionIndexes(v []*PartitionIndex) *CreateTableInput {
	s.PartitionIndexes = v
	return s
}

// SetTableInput sets the TableInput field's value.
func (s *CreateTableInput) SetTableInput(v *TableInput) *CreateTableInput {
	s.TableInput = v
	return s
}

// SetTransactionId sets the TransactionId field's value.
func (s *CreateTableInput) SetTransactionId(v string) *CreateTableInput {
	s.TransactionId = &v
	return s
}

type CreateTableOptimizerInput struct {
	_ struct{} `type:"structure"`

	// The Catalog ID of the table.
	//
	// CatalogId is a required field
	CatalogId *string `min:"1" type:"string" required:"true"`

	// The name of the database in the catalog in which the table resides.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the table.
	//
	// TableName is a required field
	TableName *string `min:"1" type:"string" required:"true"`

	// A TableOptimizerConfiguration object representing the configuration of a
	// table optimizer.
	//
	// TableOptimizerConfiguration is a required field
	TableOptimizerConfiguration *TableOptimizerConfiguration `type:"structure" required:"true"`

	// The type of table optimizer. Currently, the only valid value is compaction.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"TableOptimizerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTableOptimizerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTableOptimizerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateTableOptimizerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateTableOptimizerInput"}
	if s.CatalogId == nil {
		invalidParams.Add(request.NewErrParamRequired("CatalogId"))
	}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}
	if s.TableOptimizerConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("TableOptimizerConfiguration"))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.TableOptimizerConfiguration != nil {
		if err := s.TableOptimizerConfiguration.Validate(); err != nil {
			invalidParams.AddNested("TableOptimizerConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *CreateTableOptimizerInput) SetCatalogId(v string) *CreateTableOptimizerInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *CreateTableOptimizerInput) SetDatabaseName(v string) *CreateTableOptimizerInput {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *CreateTableOptimizerInput) SetTableName(v string) *CreateTableOptimizerInput {
	s.TableName = &v
	return s
}

// SetTableOptimizerConfiguration sets the TableOptimizerConfiguration field's value.
func (s *CreateTableOptimizerInput) SetTableOptimizerConfiguration(v *TableOptimizerConfiguration) *CreateTableOptimizerInput {
	s.TableOptimizerConfiguration = v
	return s
}

// SetType sets the Type field's value.
func (s *CreateTableOptimizerInput) SetType(v string) *CreateTableOptimizerInput {
	s.Type = &v
	return s
}

type CreateTableOptimizerOutput 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 CreateTableOptimizerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTableOptimizerOutput) GoString() string {
	return s.String()
}

type CreateTableOutput 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 CreateTableOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTableOutput) GoString() string {
	return s.String()
}

type CreateTriggerInput struct {
	_ struct{} `type:"structure"`

	// The actions initiated by this trigger when it fires.
	//
	// Actions is a required field
	Actions []*Action `type:"list" required:"true"`

	// A description of the new trigger.
	Description *string `type:"string"`

	// Batch condition that must be met (specified number of events received or
	// batch time window expired) before EventBridge event trigger fires.
	EventBatchingCondition *EventBatchingCondition `type:"structure"`

	// The name of the trigger.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A predicate to specify when the new trigger should fire.
	//
	// This field is required when the trigger type is CONDITIONAL.
	Predicate *Predicate `type:"structure"`

	// A cron expression used to specify the schedule (see Time-Based Schedules
	// for Jobs and Crawlers (https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html).
	// For example, to run something every day at 12:15 UTC, you would specify:
	// cron(15 12 * * ? *).
	//
	// This field is required when the trigger type is SCHEDULED.
	Schedule *string `type:"string"`

	// Set to true to start SCHEDULED and CONDITIONAL triggers when created. True
	// is not supported for ON_DEMAND triggers.
	StartOnCreation *bool `type:"boolean"`

	// The tags to use with this trigger. You may use tags to limit access to the
	// trigger. For more information about tags in Glue, see Amazon Web Services
	// Tags in Glue (https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html)
	// in the developer guide.
	Tags map[string]*string `type:"map"`

	// The type of the new trigger.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"TriggerType"`

	// The name of the workflow associated with the trigger.
	WorkflowName *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 CreateTriggerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTriggerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateTriggerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateTriggerInput"}
	if s.Actions == nil {
		invalidParams.Add(request.NewErrParamRequired("Actions"))
	}
	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 s.WorkflowName != nil && len(*s.WorkflowName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("WorkflowName", 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.EventBatchingCondition != nil {
		if err := s.EventBatchingCondition.Validate(); err != nil {
			invalidParams.AddNested("EventBatchingCondition", err.(request.ErrInvalidParams))
		}
	}
	if s.Predicate != nil {
		if err := s.Predicate.Validate(); err != nil {
			invalidParams.AddNested("Predicate", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *CreateTriggerInput) SetActions(v []*Action) *CreateTriggerInput {
	s.Actions = v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateTriggerInput) SetDescription(v string) *CreateTriggerInput {
	s.Description = &v
	return s
}

// SetEventBatchingCondition sets the EventBatchingCondition field's value.
func (s *CreateTriggerInput) SetEventBatchingCondition(v *EventBatchingCondition) *CreateTriggerInput {
	s.EventBatchingCondition = v
	return s
}

// SetName sets the Name field's value.
func (s *CreateTriggerInput) SetName(v string) *CreateTriggerInput {
	s.Name = &v
	return s
}

// SetPredicate sets the Predicate field's value.
func (s *CreateTriggerInput) SetPredicate(v *Predicate) *CreateTriggerInput {
	s.Predicate = v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *CreateTriggerInput) SetSchedule(v string) *CreateTriggerInput {
	s.Schedule = &v
	return s
}

// SetStartOnCreation sets the StartOnCreation field's value.
func (s *CreateTriggerInput) SetStartOnCreation(v bool) *CreateTriggerInput {
	s.StartOnCreation = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateTriggerInput) SetTags(v map[string]*string) *CreateTriggerInput {
	s.Tags = v
	return s
}

// SetType sets the Type field's value.
func (s *CreateTriggerInput) SetType(v string) *CreateTriggerInput {
	s.Type = &v
	return s
}

// SetWorkflowName sets the WorkflowName field's value.
func (s *CreateTriggerInput) SetWorkflowName(v string) *CreateTriggerInput {
	s.WorkflowName = &v
	return s
}

type CreateTriggerOutput struct {
	_ struct{} `type:"structure"`

	// The name of the trigger.
	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 CreateTriggerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateTriggerOutput) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *CreateTriggerOutput) SetName(v string) *CreateTriggerOutput {
	s.Name = &v
	return s
}

type CreateUsageProfileInput struct {
	_ struct{} `type:"structure"`

	// A ProfileConfiguration object specifying the job and session values for the
	// profile.
	//
	// Configuration is a required field
	Configuration *ProfileConfiguration `type:"structure" required:"true"`

	// A description of the usage profile.
	Description *string `type:"string"`

	// The name of the usage profile.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A list of tags applied to the usage profile.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUsageProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUsageProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateUsageProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateUsageProfileInput"}
	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.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 *CreateUsageProfileInput) SetConfiguration(v *ProfileConfiguration) *CreateUsageProfileInput {
	s.Configuration = v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateUsageProfileInput) SetDescription(v string) *CreateUsageProfileInput {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateUsageProfileInput) SetName(v string) *CreateUsageProfileInput {
	s.Name = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateUsageProfileInput) SetTags(v map[string]*string) *CreateUsageProfileInput {
	s.Tags = v
	return s
}

type CreateUsageProfileOutput struct {
	_ struct{} `type:"structure"`

	// The name of the usage profile that was created.
	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 CreateUsageProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUsageProfileOutput) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *CreateUsageProfileOutput) SetName(v string) *CreateUsageProfileOutput {
	s.Name = &v
	return s
}

type CreateUserDefinedFunctionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which to create the function. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the catalog database in which to create the function.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// A FunctionInput object that defines the function to create in the Data Catalog.
	//
	// FunctionInput is a required field
	FunctionInput *UserDefinedFunctionInput `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 CreateUserDefinedFunctionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUserDefinedFunctionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateUserDefinedFunctionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateUserDefinedFunctionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.FunctionInput == nil {
		invalidParams.Add(request.NewErrParamRequired("FunctionInput"))
	}
	if s.FunctionInput != nil {
		if err := s.FunctionInput.Validate(); err != nil {
			invalidParams.AddNested("FunctionInput", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *CreateUserDefinedFunctionInput) SetCatalogId(v string) *CreateUserDefinedFunctionInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *CreateUserDefinedFunctionInput) SetDatabaseName(v string) *CreateUserDefinedFunctionInput {
	s.DatabaseName = &v
	return s
}

// SetFunctionInput sets the FunctionInput field's value.
func (s *CreateUserDefinedFunctionInput) SetFunctionInput(v *UserDefinedFunctionInput) *CreateUserDefinedFunctionInput {
	s.FunctionInput = v
	return s
}

type CreateUserDefinedFunctionOutput 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 CreateUserDefinedFunctionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateUserDefinedFunctionOutput) GoString() string {
	return s.String()
}

type CreateWorkflowInput struct {
	_ struct{} `type:"structure"`

	// A collection of properties to be used as part of each execution of the workflow.
	DefaultRunProperties map[string]*string `type:"map"`

	// A description of the workflow.
	Description *string `type:"string"`

	// You can use this parameter to prevent unwanted multiple updates to data,
	// to control costs, or in some cases, to prevent exceeding the maximum number
	// of concurrent runs of any of the component jobs. If you leave this parameter
	// blank, there is no limit to the number of concurrent workflow runs.
	MaxConcurrentRuns *int64 `type:"integer"`

	// The name to be assigned to the workflow. It should be unique within your
	// account.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The tags to be used with this workflow.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateWorkflowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateWorkflowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateWorkflowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateWorkflowInput"}
	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
}

// SetDefaultRunProperties sets the DefaultRunProperties field's value.
func (s *CreateWorkflowInput) SetDefaultRunProperties(v map[string]*string) *CreateWorkflowInput {
	s.DefaultRunProperties = v
	return s
}

// SetDescription sets the Description field's value.
func (s *CreateWorkflowInput) SetDescription(v string) *CreateWorkflowInput {
	s.Description = &v
	return s
}

// SetMaxConcurrentRuns sets the MaxConcurrentRuns field's value.
func (s *CreateWorkflowInput) SetMaxConcurrentRuns(v int64) *CreateWorkflowInput {
	s.MaxConcurrentRuns = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateWorkflowInput) SetName(v string) *CreateWorkflowInput {
	s.Name = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *CreateWorkflowInput) SetTags(v map[string]*string) *CreateWorkflowInput {
	s.Tags = v
	return s
}

type CreateWorkflowOutput struct {
	_ struct{} `type:"structure"`

	// The name of the workflow which was provided as part of the request.
	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 CreateWorkflowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateWorkflowOutput) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *CreateWorkflowOutput) SetName(v string) *CreateWorkflowOutput {
	s.Name = &v
	return s
}

// Specifies an XML classifier for CreateClassifier to create.
type CreateXMLClassifierRequest struct {
	_ struct{} `type:"structure"`

	// An identifier of the data format that the classifier matches.
	//
	// Classification is a required field
	Classification *string `type:"string" required:"true"`

	// The name of the classifier.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The XML tag designating the element that contains each record in an XML document
	// being parsed. This can't identify a self-closing element (closed by />).
	// An empty row element that contains only attributes can be parsed as long
	// as it ends with a closing tag (for example, <row item_a="A" item_b="B"></row>
	// is okay, but <row item_a="A" item_b="B" /> is not).
	RowTag *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 CreateXMLClassifierRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CreateXMLClassifierRequest) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateXMLClassifierRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateXMLClassifierRequest"}
	if s.Classification == nil {
		invalidParams.Add(request.NewErrParamRequired("Classification"))
	}
	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
}

// SetClassification sets the Classification field's value.
func (s *CreateXMLClassifierRequest) SetClassification(v string) *CreateXMLClassifierRequest {
	s.Classification = &v
	return s
}

// SetName sets the Name field's value.
func (s *CreateXMLClassifierRequest) SetName(v string) *CreateXMLClassifierRequest {
	s.Name = &v
	return s
}

// SetRowTag sets the RowTag field's value.
func (s *CreateXMLClassifierRequest) SetRowTag(v string) *CreateXMLClassifierRequest {
	s.RowTag = &v
	return s
}

// A classifier for custom CSV content.
type CsvClassifier struct {
	_ struct{} `type:"structure"`

	// Enables the processing of files that contain only one column.
	AllowSingleColumn *bool `type:"boolean"`

	// Indicates whether the CSV file contains a header.
	ContainsHeader *string `type:"string" enum:"CsvHeaderOption"`

	// The time that this classifier was registered.
	CreationTime *time.Time `type:"timestamp"`

	// Enables the custom datatype to be configured.
	CustomDatatypeConfigured *bool `type:"boolean"`

	// A list of custom datatypes including "BINARY", "BOOLEAN", "DATE", "DECIMAL",
	// "DOUBLE", "FLOAT", "INT", "LONG", "SHORT", "STRING", "TIMESTAMP".
	CustomDatatypes []*string `type:"list"`

	// A custom symbol to denote what separates each column entry in the row.
	Delimiter *string `min:"1" type:"string"`

	// Specifies not to trim values before identifying the type of column values.
	// The default value is true.
	DisableValueTrimming *bool `type:"boolean"`

	// A list of strings representing column names.
	Header []*string `type:"list"`

	// The time that this classifier was last updated.
	LastUpdated *time.Time `type:"timestamp"`

	// The name of the classifier.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A custom symbol to denote what combines content into a single column value.
	// It must be different from the column delimiter.
	QuoteSymbol *string `min:"1" type:"string"`

	// Sets the SerDe for processing CSV in the classifier, which will be applied
	// in the Data Catalog. Valid values are OpenCSVSerDe, LazySimpleSerDe, and
	// None. You can specify the None value when you want the crawler to do the
	// detection.
	Serde *string `type:"string" enum:"CsvSerdeOption"`

	// The version of this classifier.
	Version *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 CsvClassifier) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CsvClassifier) GoString() string {
	return s.String()
}

// SetAllowSingleColumn sets the AllowSingleColumn field's value.
func (s *CsvClassifier) SetAllowSingleColumn(v bool) *CsvClassifier {
	s.AllowSingleColumn = &v
	return s
}

// SetContainsHeader sets the ContainsHeader field's value.
func (s *CsvClassifier) SetContainsHeader(v string) *CsvClassifier {
	s.ContainsHeader = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *CsvClassifier) SetCreationTime(v time.Time) *CsvClassifier {
	s.CreationTime = &v
	return s
}

// SetCustomDatatypeConfigured sets the CustomDatatypeConfigured field's value.
func (s *CsvClassifier) SetCustomDatatypeConfigured(v bool) *CsvClassifier {
	s.CustomDatatypeConfigured = &v
	return s
}

// SetCustomDatatypes sets the CustomDatatypes field's value.
func (s *CsvClassifier) SetCustomDatatypes(v []*string) *CsvClassifier {
	s.CustomDatatypes = v
	return s
}

// SetDelimiter sets the Delimiter field's value.
func (s *CsvClassifier) SetDelimiter(v string) *CsvClassifier {
	s.Delimiter = &v
	return s
}

// SetDisableValueTrimming sets the DisableValueTrimming field's value.
func (s *CsvClassifier) SetDisableValueTrimming(v bool) *CsvClassifier {
	s.DisableValueTrimming = &v
	return s
}

// SetHeader sets the Header field's value.
func (s *CsvClassifier) SetHeader(v []*string) *CsvClassifier {
	s.Header = v
	return s
}

// SetLastUpdated sets the LastUpdated field's value.
func (s *CsvClassifier) SetLastUpdated(v time.Time) *CsvClassifier {
	s.LastUpdated = &v
	return s
}

// SetName sets the Name field's value.
func (s *CsvClassifier) SetName(v string) *CsvClassifier {
	s.Name = &v
	return s
}

// SetQuoteSymbol sets the QuoteSymbol field's value.
func (s *CsvClassifier) SetQuoteSymbol(v string) *CsvClassifier {
	s.QuoteSymbol = &v
	return s
}

// SetSerde sets the Serde field's value.
func (s *CsvClassifier) SetSerde(v string) *CsvClassifier {
	s.Serde = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *CsvClassifier) SetVersion(v int64) *CsvClassifier {
	s.Version = &v
	return s
}

// Specifies a transform that uses custom code you provide to perform the data
// transformation. The output is a collection of DynamicFrames.
type CustomCode struct {
	_ struct{} `type:"structure"`

	// The name defined for the custom code node class.
	//
	// ClassName is a required field
	ClassName *string `type:"string" required:"true"`

	// The custom code that is used to perform the data transformation.
	//
	// Code is a required field
	Code *string `type:"string" required:"true"`

	// The data inputs identified by their node names.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the data schema for the custom code transform.
	OutputSchemas []*GlueSchema `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 CustomCode) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomCode) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *CustomCode) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CustomCode"}
	if s.ClassName == nil {
		invalidParams.Add(request.NewErrParamRequired("ClassName"))
	}
	if s.Code == nil {
		invalidParams.Add(request.NewErrParamRequired("Code"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.OutputSchemas != nil {
		for i, v := range s.OutputSchemas {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputSchemas", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClassName sets the ClassName field's value.
func (s *CustomCode) SetClassName(v string) *CustomCode {
	s.ClassName = &v
	return s
}

// SetCode sets the Code field's value.
func (s *CustomCode) SetCode(v string) *CustomCode {
	s.Code = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *CustomCode) SetInputs(v []*string) *CustomCode {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *CustomCode) SetName(v string) *CustomCode {
	s.Name = &v
	return s
}

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *CustomCode) SetOutputSchemas(v []*GlueSchema) *CustomCode {
	s.OutputSchemas = v
	return s
}

// An object representing a custom pattern for detecting sensitive data across
// the columns and rows of your structured data.
type CustomEntityType struct {
	_ struct{} `type:"structure"`

	// A list of context words. If none of these context words are found within
	// the vicinity of the regular expression the data will not be detected as sensitive
	// data.
	//
	// If no context words are passed only a regular expression is checked.
	ContextWords []*string `min:"1" type:"list"`

	// A name for the custom pattern that allows it to be retrieved or deleted later.
	// This name must be unique per Amazon Web Services account.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A regular expression string that is used for detecting sensitive data in
	// a custom pattern.
	//
	// RegexString is a required field
	RegexString *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 CustomEntityType) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s CustomEntityType) GoString() string {
	return s.String()
}

// SetContextWords sets the ContextWords field's value.
func (s *CustomEntityType) SetContextWords(v []*string) *CustomEntityType {
	s.ContextWords = v
	return s
}

// SetName sets the Name field's value.
func (s *CustomEntityType) SetName(v string) *CustomEntityType {
	s.Name = &v
	return s
}

// SetRegexString sets the RegexString field's value.
func (s *CustomEntityType) SetRegexString(v string) *CustomEntityType {
	s.RegexString = &v
	return s
}

// Options to configure how your data quality evaluation results are published.
type DQResultsPublishingOptions struct {
	_ struct{} `type:"structure"`

	// Enable metrics for your data quality results.
	CloudWatchMetricsEnabled *bool `type:"boolean"`

	// The context of the evaluation.
	EvaluationContext *string `type:"string"`

	// Enable publishing for your data quality results.
	ResultsPublishingEnabled *bool `type:"boolean"`

	// The Amazon S3 prefix prepended to the results.
	ResultsS3Prefix *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 DQResultsPublishingOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DQResultsPublishingOptions) GoString() string {
	return s.String()
}

// SetCloudWatchMetricsEnabled sets the CloudWatchMetricsEnabled field's value.
func (s *DQResultsPublishingOptions) SetCloudWatchMetricsEnabled(v bool) *DQResultsPublishingOptions {
	s.CloudWatchMetricsEnabled = &v
	return s
}

// SetEvaluationContext sets the EvaluationContext field's value.
func (s *DQResultsPublishingOptions) SetEvaluationContext(v string) *DQResultsPublishingOptions {
	s.EvaluationContext = &v
	return s
}

// SetResultsPublishingEnabled sets the ResultsPublishingEnabled field's value.
func (s *DQResultsPublishingOptions) SetResultsPublishingEnabled(v bool) *DQResultsPublishingOptions {
	s.ResultsPublishingEnabled = &v
	return s
}

// SetResultsS3Prefix sets the ResultsS3Prefix field's value.
func (s *DQResultsPublishingOptions) SetResultsS3Prefix(v string) *DQResultsPublishingOptions {
	s.ResultsS3Prefix = &v
	return s
}

// Options to configure how your job will stop if your data quality evaluation
// fails.
type DQStopJobOnFailureOptions struct {
	_ struct{} `type:"structure"`

	// When to stop job if your data quality evaluation fails. Options are Immediate
	// or AfterDataLoad.
	StopJobOnFailureTiming *string `type:"string" enum:"DQStopJobOnFailureTiming"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DQStopJobOnFailureOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DQStopJobOnFailureOptions) GoString() string {
	return s.String()
}

// SetStopJobOnFailureTiming sets the StopJobOnFailureTiming field's value.
func (s *DQStopJobOnFailureOptions) SetStopJobOnFailureTiming(v string) *DQStopJobOnFailureOptions {
	s.StopJobOnFailureTiming = &v
	return s
}

// Contains configuration information for maintaining Data Catalog security.
type DataCatalogEncryptionSettings struct {
	_ struct{} `type:"structure"`

	// When connection password protection is enabled, the Data Catalog uses a customer-provided
	// key to encrypt the password as part of CreateConnection or UpdateConnection
	// and store it in the ENCRYPTED_PASSWORD field in the connection properties.
	// You can enable catalog encryption or only password encryption.
	ConnectionPasswordEncryption *ConnectionPasswordEncryption `type:"structure"`

	// Specifies the encryption-at-rest configuration for the Data Catalog.
	EncryptionAtRest *EncryptionAtRest `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataCatalogEncryptionSettings) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataCatalogEncryptionSettings) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DataCatalogEncryptionSettings) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DataCatalogEncryptionSettings"}
	if s.ConnectionPasswordEncryption != nil {
		if err := s.ConnectionPasswordEncryption.Validate(); err != nil {
			invalidParams.AddNested("ConnectionPasswordEncryption", err.(request.ErrInvalidParams))
		}
	}
	if s.EncryptionAtRest != nil {
		if err := s.EncryptionAtRest.Validate(); err != nil {
			invalidParams.AddNested("EncryptionAtRest", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConnectionPasswordEncryption sets the ConnectionPasswordEncryption field's value.
func (s *DataCatalogEncryptionSettings) SetConnectionPasswordEncryption(v *ConnectionPasswordEncryption) *DataCatalogEncryptionSettings {
	s.ConnectionPasswordEncryption = v
	return s
}

// SetEncryptionAtRest sets the EncryptionAtRest field's value.
func (s *DataCatalogEncryptionSettings) SetEncryptionAtRest(v *EncryptionAtRest) *DataCatalogEncryptionSettings {
	s.EncryptionAtRest = v
	return s
}

// The Lake Formation principal.
type DataLakePrincipal struct {
	_ struct{} `type:"structure"`

	// An identifier for the Lake Formation principal.
	DataLakePrincipalIdentifier *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 DataLakePrincipal) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataLakePrincipal) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DataLakePrincipal) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DataLakePrincipal"}
	if s.DataLakePrincipalIdentifier != nil && len(*s.DataLakePrincipalIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataLakePrincipalIdentifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataLakePrincipalIdentifier sets the DataLakePrincipalIdentifier field's value.
func (s *DataLakePrincipal) SetDataLakePrincipalIdentifier(v string) *DataLakePrincipal {
	s.DataLakePrincipalIdentifier = &v
	return s
}

// Describes the result of the evaluation of a data quality analyzer.
type DataQualityAnalyzerResult struct {
	_ struct{} `type:"structure"`

	// A description of the data quality analyzer.
	Description *string `type:"string"`

	// A map of metrics associated with the evaluation of the analyzer.
	EvaluatedMetrics map[string]*float64 `type:"map"`

	// An evaluation message.
	EvaluationMessage *string `type:"string"`

	// The name of the data quality analyzer.
	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 DataQualityAnalyzerResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityAnalyzerResult) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *DataQualityAnalyzerResult) SetDescription(v string) *DataQualityAnalyzerResult {
	s.Description = &v
	return s
}

// SetEvaluatedMetrics sets the EvaluatedMetrics field's value.
func (s *DataQualityAnalyzerResult) SetEvaluatedMetrics(v map[string]*float64) *DataQualityAnalyzerResult {
	s.EvaluatedMetrics = v
	return s
}

// SetEvaluationMessage sets the EvaluationMessage field's value.
func (s *DataQualityAnalyzerResult) SetEvaluationMessage(v string) *DataQualityAnalyzerResult {
	s.EvaluationMessage = &v
	return s
}

// SetName sets the Name field's value.
func (s *DataQualityAnalyzerResult) SetName(v string) *DataQualityAnalyzerResult {
	s.Name = &v
	return s
}

// Additional run options you can specify for an evaluation run.
type DataQualityEvaluationRunAdditionalRunOptions struct {
	_ struct{} `type:"structure"`

	// Whether or not to enable CloudWatch metrics.
	CloudWatchMetricsEnabled *bool `type:"boolean"`

	// Set the evaluation method for composite rules in the ruleset to ROW/COLUMN
	CompositeRuleEvaluationMethod *string `type:"string" enum:"DQCompositeRuleEvaluationMethod"`

	// Prefix for Amazon S3 to store results.
	ResultsS3Prefix *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 DataQualityEvaluationRunAdditionalRunOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityEvaluationRunAdditionalRunOptions) GoString() string {
	return s.String()
}

// SetCloudWatchMetricsEnabled sets the CloudWatchMetricsEnabled field's value.
func (s *DataQualityEvaluationRunAdditionalRunOptions) SetCloudWatchMetricsEnabled(v bool) *DataQualityEvaluationRunAdditionalRunOptions {
	s.CloudWatchMetricsEnabled = &v
	return s
}

// SetCompositeRuleEvaluationMethod sets the CompositeRuleEvaluationMethod field's value.
func (s *DataQualityEvaluationRunAdditionalRunOptions) SetCompositeRuleEvaluationMethod(v string) *DataQualityEvaluationRunAdditionalRunOptions {
	s.CompositeRuleEvaluationMethod = &v
	return s
}

// SetResultsS3Prefix sets the ResultsS3Prefix field's value.
func (s *DataQualityEvaluationRunAdditionalRunOptions) SetResultsS3Prefix(v string) *DataQualityEvaluationRunAdditionalRunOptions {
	s.ResultsS3Prefix = &v
	return s
}

// Describes the data quality metric value according to the analysis of historical
// data.
type DataQualityMetricValues struct {
	_ struct{} `type:"structure"`

	// The actual value of the data quality metric.
	ActualValue *float64 `type:"double"`

	// The expected value of the data quality metric according to the analysis of
	// historical data.
	ExpectedValue *float64 `type:"double"`

	// The lower limit of the data quality metric value according to the analysis
	// of historical data.
	LowerLimit *float64 `type:"double"`

	// The upper limit of the data quality metric value according to the analysis
	// of historical data.
	UpperLimit *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 DataQualityMetricValues) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityMetricValues) GoString() string {
	return s.String()
}

// SetActualValue sets the ActualValue field's value.
func (s *DataQualityMetricValues) SetActualValue(v float64) *DataQualityMetricValues {
	s.ActualValue = &v
	return s
}

// SetExpectedValue sets the ExpectedValue field's value.
func (s *DataQualityMetricValues) SetExpectedValue(v float64) *DataQualityMetricValues {
	s.ExpectedValue = &v
	return s
}

// SetLowerLimit sets the LowerLimit field's value.
func (s *DataQualityMetricValues) SetLowerLimit(v float64) *DataQualityMetricValues {
	s.LowerLimit = &v
	return s
}

// SetUpperLimit sets the UpperLimit field's value.
func (s *DataQualityMetricValues) SetUpperLimit(v float64) *DataQualityMetricValues {
	s.UpperLimit = &v
	return s
}

// Describes the observation generated after evaluating the rules and analyzers.
type DataQualityObservation struct {
	_ struct{} `type:"structure"`

	// A description of the data quality observation.
	Description *string `type:"string"`

	// An object of type MetricBasedObservation representing the observation that
	// is based on evaluated data quality metrics.
	MetricBasedObservation *MetricBasedObservation `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityObservation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityObservation) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *DataQualityObservation) SetDescription(v string) *DataQualityObservation {
	s.Description = &v
	return s
}

// SetMetricBasedObservation sets the MetricBasedObservation field's value.
func (s *DataQualityObservation) SetMetricBasedObservation(v *MetricBasedObservation) *DataQualityObservation {
	s.MetricBasedObservation = v
	return s
}

// Describes a data quality result.
type DataQualityResult struct {
	_ struct{} `type:"structure"`

	// A list of DataQualityAnalyzerResult objects representing the results for
	// each analyzer.
	AnalyzerResults []*DataQualityAnalyzerResult `type:"list"`

	// The date and time when this data quality run completed.
	CompletedOn *time.Time `type:"timestamp"`

	// The table associated with the data quality result, if any.
	DataSource *DataSource `type:"structure"`

	// In the context of a job in Glue Studio, each node in the canvas is typically
	// assigned some sort of name and data quality nodes will have names. In the
	// case of multiple nodes, the evaluationContext can differentiate the nodes.
	EvaluationContext *string `type:"string"`

	// The job name associated with the data quality result, if any.
	JobName *string `min:"1" type:"string"`

	// The job run ID associated with the data quality result, if any.
	JobRunId *string `min:"1" type:"string"`

	// A list of DataQualityObservation objects representing the observations generated
	// after evaluating the rules and analyzers.
	Observations []*DataQualityObservation `type:"list"`

	// A unique result ID for the data quality result.
	ResultId *string `min:"1" type:"string"`

	// A list of DataQualityRuleResult objects representing the results for each
	// rule.
	RuleResults []*DataQualityRuleResult `type:"list"`

	// The unique run ID for the ruleset evaluation for this data quality result.
	RulesetEvaluationRunId *string `min:"1" type:"string"`

	// The name of the ruleset associated with the data quality result.
	RulesetName *string `min:"1" type:"string"`

	// An aggregate data quality score. Represents the ratio of rules that passed
	// to the total number of rules.
	Score *float64 `type:"double"`

	// The date and time when this data quality run started.
	StartedOn *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 DataQualityResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityResult) GoString() string {
	return s.String()
}

// SetAnalyzerResults sets the AnalyzerResults field's value.
func (s *DataQualityResult) SetAnalyzerResults(v []*DataQualityAnalyzerResult) *DataQualityResult {
	s.AnalyzerResults = v
	return s
}

// SetCompletedOn sets the CompletedOn field's value.
func (s *DataQualityResult) SetCompletedOn(v time.Time) *DataQualityResult {
	s.CompletedOn = &v
	return s
}

// SetDataSource sets the DataSource field's value.
func (s *DataQualityResult) SetDataSource(v *DataSource) *DataQualityResult {
	s.DataSource = v
	return s
}

// SetEvaluationContext sets the EvaluationContext field's value.
func (s *DataQualityResult) SetEvaluationContext(v string) *DataQualityResult {
	s.EvaluationContext = &v
	return s
}

// SetJobName sets the JobName field's value.
func (s *DataQualityResult) SetJobName(v string) *DataQualityResult {
	s.JobName = &v
	return s
}

// SetJobRunId sets the JobRunId field's value.
func (s *DataQualityResult) SetJobRunId(v string) *DataQualityResult {
	s.JobRunId = &v
	return s
}

// SetObservations sets the Observations field's value.
func (s *DataQualityResult) SetObservations(v []*DataQualityObservation) *DataQualityResult {
	s.Observations = v
	return s
}

// SetResultId sets the ResultId field's value.
func (s *DataQualityResult) SetResultId(v string) *DataQualityResult {
	s.ResultId = &v
	return s
}

// SetRuleResults sets the RuleResults field's value.
func (s *DataQualityResult) SetRuleResults(v []*DataQualityRuleResult) *DataQualityResult {
	s.RuleResults = v
	return s
}

// SetRulesetEvaluationRunId sets the RulesetEvaluationRunId field's value.
func (s *DataQualityResult) SetRulesetEvaluationRunId(v string) *DataQualityResult {
	s.RulesetEvaluationRunId = &v
	return s
}

// SetRulesetName sets the RulesetName field's value.
func (s *DataQualityResult) SetRulesetName(v string) *DataQualityResult {
	s.RulesetName = &v
	return s
}

// SetScore sets the Score field's value.
func (s *DataQualityResult) SetScore(v float64) *DataQualityResult {
	s.Score = &v
	return s
}

// SetStartedOn sets the StartedOn field's value.
func (s *DataQualityResult) SetStartedOn(v time.Time) *DataQualityResult {
	s.StartedOn = &v
	return s
}

// Describes a data quality result.
type DataQualityResultDescription struct {
	_ struct{} `type:"structure"`

	// The table name associated with the data quality result.
	DataSource *DataSource `type:"structure"`

	// The job name associated with the data quality result.
	JobName *string `min:"1" type:"string"`

	// The job run ID associated with the data quality result.
	JobRunId *string `min:"1" type:"string"`

	// The unique result ID for this data quality result.
	ResultId *string `min:"1" type:"string"`

	// The time that the run started for this data quality result.
	StartedOn *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 DataQualityResultDescription) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityResultDescription) GoString() string {
	return s.String()
}

// SetDataSource sets the DataSource field's value.
func (s *DataQualityResultDescription) SetDataSource(v *DataSource) *DataQualityResultDescription {
	s.DataSource = v
	return s
}

// SetJobName sets the JobName field's value.
func (s *DataQualityResultDescription) SetJobName(v string) *DataQualityResultDescription {
	s.JobName = &v
	return s
}

// SetJobRunId sets the JobRunId field's value.
func (s *DataQualityResultDescription) SetJobRunId(v string) *DataQualityResultDescription {
	s.JobRunId = &v
	return s
}

// SetResultId sets the ResultId field's value.
func (s *DataQualityResultDescription) SetResultId(v string) *DataQualityResultDescription {
	s.ResultId = &v
	return s
}

// SetStartedOn sets the StartedOn field's value.
func (s *DataQualityResultDescription) SetStartedOn(v time.Time) *DataQualityResultDescription {
	s.StartedOn = &v
	return s
}

// Criteria used to return data quality results.
type DataQualityResultFilterCriteria struct {
	_ struct{} `type:"structure"`

	// Filter results by the specified data source. For example, retrieving all
	// results for an Glue table.
	DataSource *DataSource `type:"structure"`

	// Filter results by the specified job name.
	JobName *string `min:"1" type:"string"`

	// Filter results by the specified job run ID.
	JobRunId *string `min:"1" type:"string"`

	// Filter results by runs that started after this time.
	StartedAfter *time.Time `type:"timestamp"`

	// Filter results by runs that started before this time.
	StartedBefore *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 DataQualityResultFilterCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityResultFilterCriteria) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DataQualityResultFilterCriteria) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DataQualityResultFilterCriteria"}
	if s.JobName != nil && len(*s.JobName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("JobName", 1))
	}
	if s.JobRunId != nil && len(*s.JobRunId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("JobRunId", 1))
	}
	if s.DataSource != nil {
		if err := s.DataSource.Validate(); err != nil {
			invalidParams.AddNested("DataSource", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataSource sets the DataSource field's value.
func (s *DataQualityResultFilterCriteria) SetDataSource(v *DataSource) *DataQualityResultFilterCriteria {
	s.DataSource = v
	return s
}

// SetJobName sets the JobName field's value.
func (s *DataQualityResultFilterCriteria) SetJobName(v string) *DataQualityResultFilterCriteria {
	s.JobName = &v
	return s
}

// SetJobRunId sets the JobRunId field's value.
func (s *DataQualityResultFilterCriteria) SetJobRunId(v string) *DataQualityResultFilterCriteria {
	s.JobRunId = &v
	return s
}

// SetStartedAfter sets the StartedAfter field's value.
func (s *DataQualityResultFilterCriteria) SetStartedAfter(v time.Time) *DataQualityResultFilterCriteria {
	s.StartedAfter = &v
	return s
}

// SetStartedBefore sets the StartedBefore field's value.
func (s *DataQualityResultFilterCriteria) SetStartedBefore(v time.Time) *DataQualityResultFilterCriteria {
	s.StartedBefore = &v
	return s
}

// Describes the result of a data quality rule recommendation run.
type DataQualityRuleRecommendationRunDescription struct {
	_ struct{} `type:"structure"`

	// The data source (Glue table) associated with the recommendation run.
	DataSource *DataSource `type:"structure"`

	// The unique run identifier associated with this run.
	RunId *string `min:"1" type:"string"`

	// The date and time when this run started.
	StartedOn *time.Time `type:"timestamp"`

	// The status for this run.
	Status *string `type:"string" enum:"TaskStatusType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityRuleRecommendationRunDescription) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityRuleRecommendationRunDescription) GoString() string {
	return s.String()
}

// SetDataSource sets the DataSource field's value.
func (s *DataQualityRuleRecommendationRunDescription) SetDataSource(v *DataSource) *DataQualityRuleRecommendationRunDescription {
	s.DataSource = v
	return s
}

// SetRunId sets the RunId field's value.
func (s *DataQualityRuleRecommendationRunDescription) SetRunId(v string) *DataQualityRuleRecommendationRunDescription {
	s.RunId = &v
	return s
}

// SetStartedOn sets the StartedOn field's value.
func (s *DataQualityRuleRecommendationRunDescription) SetStartedOn(v time.Time) *DataQualityRuleRecommendationRunDescription {
	s.StartedOn = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DataQualityRuleRecommendationRunDescription) SetStatus(v string) *DataQualityRuleRecommendationRunDescription {
	s.Status = &v
	return s
}

// A filter for listing data quality recommendation runs.
type DataQualityRuleRecommendationRunFilter struct {
	_ struct{} `type:"structure"`

	// Filter based on a specified data source (Glue table).
	//
	// DataSource is a required field
	DataSource *DataSource `type:"structure" required:"true"`

	// Filter based on time for results started after provided time.
	StartedAfter *time.Time `type:"timestamp"`

	// Filter based on time for results started before provided time.
	StartedBefore *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 DataQualityRuleRecommendationRunFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityRuleRecommendationRunFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DataQualityRuleRecommendationRunFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DataQualityRuleRecommendationRunFilter"}
	if s.DataSource == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSource"))
	}
	if s.DataSource != nil {
		if err := s.DataSource.Validate(); err != nil {
			invalidParams.AddNested("DataSource", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataSource sets the DataSource field's value.
func (s *DataQualityRuleRecommendationRunFilter) SetDataSource(v *DataSource) *DataQualityRuleRecommendationRunFilter {
	s.DataSource = v
	return s
}

// SetStartedAfter sets the StartedAfter field's value.
func (s *DataQualityRuleRecommendationRunFilter) SetStartedAfter(v time.Time) *DataQualityRuleRecommendationRunFilter {
	s.StartedAfter = &v
	return s
}

// SetStartedBefore sets the StartedBefore field's value.
func (s *DataQualityRuleRecommendationRunFilter) SetStartedBefore(v time.Time) *DataQualityRuleRecommendationRunFilter {
	s.StartedBefore = &v
	return s
}

// Describes the result of the evaluation of a data quality rule.
type DataQualityRuleResult struct {
	_ struct{} `type:"structure"`

	// A description of the data quality rule.
	Description *string `type:"string"`

	// A map of metrics associated with the evaluation of the rule.
	EvaluatedMetrics map[string]*float64 `type:"map"`

	// An evaluation message.
	EvaluationMessage *string `type:"string"`

	// The name of the data quality rule.
	Name *string `min:"1" type:"string"`

	// A pass or fail status for the rule.
	Result *string `type:"string" enum:"DataQualityRuleResultStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityRuleResult) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityRuleResult) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *DataQualityRuleResult) SetDescription(v string) *DataQualityRuleResult {
	s.Description = &v
	return s
}

// SetEvaluatedMetrics sets the EvaluatedMetrics field's value.
func (s *DataQualityRuleResult) SetEvaluatedMetrics(v map[string]*float64) *DataQualityRuleResult {
	s.EvaluatedMetrics = v
	return s
}

// SetEvaluationMessage sets the EvaluationMessage field's value.
func (s *DataQualityRuleResult) SetEvaluationMessage(v string) *DataQualityRuleResult {
	s.EvaluationMessage = &v
	return s
}

// SetName sets the Name field's value.
func (s *DataQualityRuleResult) SetName(v string) *DataQualityRuleResult {
	s.Name = &v
	return s
}

// SetResult sets the Result field's value.
func (s *DataQualityRuleResult) SetResult(v string) *DataQualityRuleResult {
	s.Result = &v
	return s
}

// Describes the result of a data quality ruleset evaluation run.
type DataQualityRulesetEvaluationRunDescription struct {
	_ struct{} `type:"structure"`

	// The data source (an Glue table) associated with the run.
	DataSource *DataSource `type:"structure"`

	// The unique run identifier associated with this run.
	RunId *string `min:"1" type:"string"`

	// The date and time when the run started.
	StartedOn *time.Time `type:"timestamp"`

	// The status for this run.
	Status *string `type:"string" enum:"TaskStatusType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityRulesetEvaluationRunDescription) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityRulesetEvaluationRunDescription) GoString() string {
	return s.String()
}

// SetDataSource sets the DataSource field's value.
func (s *DataQualityRulesetEvaluationRunDescription) SetDataSource(v *DataSource) *DataQualityRulesetEvaluationRunDescription {
	s.DataSource = v
	return s
}

// SetRunId sets the RunId field's value.
func (s *DataQualityRulesetEvaluationRunDescription) SetRunId(v string) *DataQualityRulesetEvaluationRunDescription {
	s.RunId = &v
	return s
}

// SetStartedOn sets the StartedOn field's value.
func (s *DataQualityRulesetEvaluationRunDescription) SetStartedOn(v time.Time) *DataQualityRulesetEvaluationRunDescription {
	s.StartedOn = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DataQualityRulesetEvaluationRunDescription) SetStatus(v string) *DataQualityRulesetEvaluationRunDescription {
	s.Status = &v
	return s
}

// The filter criteria.
type DataQualityRulesetEvaluationRunFilter struct {
	_ struct{} `type:"structure"`

	// Filter based on a data source (an Glue table) associated with the run.
	//
	// DataSource is a required field
	DataSource *DataSource `type:"structure" required:"true"`

	// Filter results by runs that started after this time.
	StartedAfter *time.Time `type:"timestamp"`

	// Filter results by runs that started before this time.
	StartedBefore *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 DataQualityRulesetEvaluationRunFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityRulesetEvaluationRunFilter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DataQualityRulesetEvaluationRunFilter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DataQualityRulesetEvaluationRunFilter"}
	if s.DataSource == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSource"))
	}
	if s.DataSource != nil {
		if err := s.DataSource.Validate(); err != nil {
			invalidParams.AddNested("DataSource", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataSource sets the DataSource field's value.
func (s *DataQualityRulesetEvaluationRunFilter) SetDataSource(v *DataSource) *DataQualityRulesetEvaluationRunFilter {
	s.DataSource = v
	return s
}

// SetStartedAfter sets the StartedAfter field's value.
func (s *DataQualityRulesetEvaluationRunFilter) SetStartedAfter(v time.Time) *DataQualityRulesetEvaluationRunFilter {
	s.StartedAfter = &v
	return s
}

// SetStartedBefore sets the StartedBefore field's value.
func (s *DataQualityRulesetEvaluationRunFilter) SetStartedBefore(v time.Time) *DataQualityRulesetEvaluationRunFilter {
	s.StartedBefore = &v
	return s
}

// The criteria used to filter data quality rulesets.
type DataQualityRulesetFilterCriteria struct {
	_ struct{} `type:"structure"`

	// Filter on rulesets created after this date.
	CreatedAfter *time.Time `type:"timestamp"`

	// Filter on rulesets created before this date.
	CreatedBefore *time.Time `type:"timestamp"`

	// The description of the ruleset filter criteria.
	Description *string `type:"string"`

	// Filter on rulesets last modified after this date.
	LastModifiedAfter *time.Time `type:"timestamp"`

	// Filter on rulesets last modified before this date.
	LastModifiedBefore *time.Time `type:"timestamp"`

	// The name of the ruleset filter criteria.
	Name *string `min:"1" type:"string"`

	// The name and database name of the target table.
	TargetTable *DataQualityTargetTable `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityRulesetFilterCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityRulesetFilterCriteria) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DataQualityRulesetFilterCriteria) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DataQualityRulesetFilterCriteria"}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.TargetTable != nil {
		if err := s.TargetTable.Validate(); err != nil {
			invalidParams.AddNested("TargetTable", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCreatedAfter sets the CreatedAfter field's value.
func (s *DataQualityRulesetFilterCriteria) SetCreatedAfter(v time.Time) *DataQualityRulesetFilterCriteria {
	s.CreatedAfter = &v
	return s
}

// SetCreatedBefore sets the CreatedBefore field's value.
func (s *DataQualityRulesetFilterCriteria) SetCreatedBefore(v time.Time) *DataQualityRulesetFilterCriteria {
	s.CreatedBefore = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *DataQualityRulesetFilterCriteria) SetDescription(v string) *DataQualityRulesetFilterCriteria {
	s.Description = &v
	return s
}

// SetLastModifiedAfter sets the LastModifiedAfter field's value.
func (s *DataQualityRulesetFilterCriteria) SetLastModifiedAfter(v time.Time) *DataQualityRulesetFilterCriteria {
	s.LastModifiedAfter = &v
	return s
}

// SetLastModifiedBefore sets the LastModifiedBefore field's value.
func (s *DataQualityRulesetFilterCriteria) SetLastModifiedBefore(v time.Time) *DataQualityRulesetFilterCriteria {
	s.LastModifiedBefore = &v
	return s
}

// SetName sets the Name field's value.
func (s *DataQualityRulesetFilterCriteria) SetName(v string) *DataQualityRulesetFilterCriteria {
	s.Name = &v
	return s
}

// SetTargetTable sets the TargetTable field's value.
func (s *DataQualityRulesetFilterCriteria) SetTargetTable(v *DataQualityTargetTable) *DataQualityRulesetFilterCriteria {
	s.TargetTable = v
	return s
}

// Describes a data quality ruleset returned by GetDataQualityRuleset.
type DataQualityRulesetListDetails struct {
	_ struct{} `type:"structure"`

	// The date and time the data quality ruleset was created.
	CreatedOn *time.Time `type:"timestamp"`

	// A description of the data quality ruleset.
	Description *string `type:"string"`

	// The date and time the data quality ruleset was last modified.
	LastModifiedOn *time.Time `type:"timestamp"`

	// The name of the data quality ruleset.
	Name *string `min:"1" type:"string"`

	// When a ruleset was created from a recommendation run, this run ID is generated
	// to link the two together.
	RecommendationRunId *string `min:"1" type:"string"`

	// The number of rules in the ruleset.
	RuleCount *int64 `type:"integer"`

	// An object representing an Glue table.
	TargetTable *DataQualityTargetTable `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityRulesetListDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityRulesetListDetails) GoString() string {
	return s.String()
}

// SetCreatedOn sets the CreatedOn field's value.
func (s *DataQualityRulesetListDetails) SetCreatedOn(v time.Time) *DataQualityRulesetListDetails {
	s.CreatedOn = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *DataQualityRulesetListDetails) SetDescription(v string) *DataQualityRulesetListDetails {
	s.Description = &v
	return s
}

// SetLastModifiedOn sets the LastModifiedOn field's value.
func (s *DataQualityRulesetListDetails) SetLastModifiedOn(v time.Time) *DataQualityRulesetListDetails {
	s.LastModifiedOn = &v
	return s
}

// SetName sets the Name field's value.
func (s *DataQualityRulesetListDetails) SetName(v string) *DataQualityRulesetListDetails {
	s.Name = &v
	return s
}

// SetRecommendationRunId sets the RecommendationRunId field's value.
func (s *DataQualityRulesetListDetails) SetRecommendationRunId(v string) *DataQualityRulesetListDetails {
	s.RecommendationRunId = &v
	return s
}

// SetRuleCount sets the RuleCount field's value.
func (s *DataQualityRulesetListDetails) SetRuleCount(v int64) *DataQualityRulesetListDetails {
	s.RuleCount = &v
	return s
}

// SetTargetTable sets the TargetTable field's value.
func (s *DataQualityRulesetListDetails) SetTargetTable(v *DataQualityTargetTable) *DataQualityRulesetListDetails {
	s.TargetTable = v
	return s
}

// An object representing an Glue table.
type DataQualityTargetTable struct {
	_ struct{} `type:"structure"`

	// The catalog id where the Glue table exists.
	CatalogId *string `min:"1" type:"string"`

	// The name of the database where the Glue table exists.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the Glue table.
	//
	// TableName is a required field
	TableName *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 DataQualityTargetTable) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DataQualityTargetTable) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DataQualityTargetTable) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DataQualityTargetTable"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *DataQualityTargetTable) SetCatalogId(v string) *DataQualityTargetTable {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *DataQualityTargetTable) SetDatabaseName(v string) *DataQualityTargetTable {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *DataQualityTargetTable) SetTableName(v string) *DataQualityTargetTable {
	s.TableName = &v
	return s
}

// A data source (an Glue table) for which you want data quality results.
type DataSource struct {
	_ struct{} `type:"structure"`

	// An Glue table.
	//
	// GlueTable is a required field
	GlueTable *Table `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 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()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DataSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DataSource"}
	if s.GlueTable == nil {
		invalidParams.Add(request.NewErrParamRequired("GlueTable"))
	}
	if s.GlueTable != nil {
		if err := s.GlueTable.Validate(); err != nil {
			invalidParams.AddNested("GlueTable", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetGlueTable sets the GlueTable field's value.
func (s *DataSource) SetGlueTable(v *Table) *DataSource {
	s.GlueTable = v
	return s
}

// The Database object represents a logical grouping of tables that might reside
// in a Hive metastore or an RDBMS.
type Database struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which the database resides.
	CatalogId *string `min:"1" type:"string"`

	// Creates a set of default permissions on the table for principals. Used by
	// Lake Formation. Not used in the normal course of Glue operations.
	CreateTableDefaultPermissions []*PrincipalPermissions `type:"list"`

	// The time at which the metadata database was created in the catalog.
	CreateTime *time.Time `type:"timestamp"`

	// A description of the database.
	Description *string `type:"string"`

	// A FederatedDatabase structure that references an entity outside the Glue
	// Data Catalog.
	FederatedDatabase *FederatedDatabase `type:"structure"`

	// The location of the database (for example, an HDFS path).
	LocationUri *string `min:"1" type:"string"`

	// The name of the database. For Hive compatibility, this is folded to lowercase
	// when it is stored.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// These key-value pairs define parameters and properties of the database.
	Parameters map[string]*string `type:"map"`

	// A DatabaseIdentifier structure that describes a target database for resource
	// linking.
	TargetDatabase *DatabaseIdentifier `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Database) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Database) GoString() string {
	return s.String()
}

// SetCatalogId sets the CatalogId field's value.
func (s *Database) SetCatalogId(v string) *Database {
	s.CatalogId = &v
	return s
}

// SetCreateTableDefaultPermissions sets the CreateTableDefaultPermissions field's value.
func (s *Database) SetCreateTableDefaultPermissions(v []*PrincipalPermissions) *Database {
	s.CreateTableDefaultPermissions = v
	return s
}

// SetCreateTime sets the CreateTime field's value.
func (s *Database) SetCreateTime(v time.Time) *Database {
	s.CreateTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *Database) SetDescription(v string) *Database {
	s.Description = &v
	return s
}

// SetFederatedDatabase sets the FederatedDatabase field's value.
func (s *Database) SetFederatedDatabase(v *FederatedDatabase) *Database {
	s.FederatedDatabase = v
	return s
}

// SetLocationUri sets the LocationUri field's value.
func (s *Database) SetLocationUri(v string) *Database {
	s.LocationUri = &v
	return s
}

// SetName sets the Name field's value.
func (s *Database) SetName(v string) *Database {
	s.Name = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *Database) SetParameters(v map[string]*string) *Database {
	s.Parameters = v
	return s
}

// SetTargetDatabase sets the TargetDatabase field's value.
func (s *Database) SetTargetDatabase(v *DatabaseIdentifier) *Database {
	s.TargetDatabase = v
	return s
}

// A structure that describes a target database for resource linking.
type DatabaseIdentifier struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which the database resides.
	CatalogId *string `min:"1" type:"string"`

	// The name of the catalog database.
	DatabaseName *string `min:"1" type:"string"`

	// Region of the target database.
	Region *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 DatabaseIdentifier) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DatabaseIdentifier) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DatabaseIdentifier) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DatabaseIdentifier"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.Region != nil && len(*s.Region) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Region", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *DatabaseIdentifier) SetCatalogId(v string) *DatabaseIdentifier {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *DatabaseIdentifier) SetDatabaseName(v string) *DatabaseIdentifier {
	s.DatabaseName = &v
	return s
}

// SetRegion sets the Region field's value.
func (s *DatabaseIdentifier) SetRegion(v string) *DatabaseIdentifier {
	s.Region = &v
	return s
}

// The structure used to create or update a database.
type DatabaseInput struct {
	_ struct{} `type:"structure"`

	// Creates a set of default permissions on the table for principals. Used by
	// Lake Formation. Not used in the normal course of Glue operations.
	CreateTableDefaultPermissions []*PrincipalPermissions `type:"list"`

	// A description of the database.
	Description *string `type:"string"`

	// A FederatedDatabase structure that references an entity outside the Glue
	// Data Catalog.
	FederatedDatabase *FederatedDatabase `type:"structure"`

	// The location of the database (for example, an HDFS path).
	LocationUri *string `min:"1" type:"string"`

	// The name of the database. For Hive compatibility, this is folded to lowercase
	// when it is stored.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// These key-value pairs define parameters and properties of the database.
	//
	// These key-value pairs define parameters and properties of the database.
	Parameters map[string]*string `type:"map"`

	// A DatabaseIdentifier structure that describes a target database for resource
	// linking.
	TargetDatabase *DatabaseIdentifier `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DatabaseInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DatabaseInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DatabaseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DatabaseInput"}
	if s.LocationUri != nil && len(*s.LocationUri) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("LocationUri", 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.CreateTableDefaultPermissions != nil {
		for i, v := range s.CreateTableDefaultPermissions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CreateTableDefaultPermissions", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.FederatedDatabase != nil {
		if err := s.FederatedDatabase.Validate(); err != nil {
			invalidParams.AddNested("FederatedDatabase", err.(request.ErrInvalidParams))
		}
	}
	if s.TargetDatabase != nil {
		if err := s.TargetDatabase.Validate(); err != nil {
			invalidParams.AddNested("TargetDatabase", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCreateTableDefaultPermissions sets the CreateTableDefaultPermissions field's value.
func (s *DatabaseInput) SetCreateTableDefaultPermissions(v []*PrincipalPermissions) *DatabaseInput {
	s.CreateTableDefaultPermissions = v
	return s
}

// SetDescription sets the Description field's value.
func (s *DatabaseInput) SetDescription(v string) *DatabaseInput {
	s.Description = &v
	return s
}

// SetFederatedDatabase sets the FederatedDatabase field's value.
func (s *DatabaseInput) SetFederatedDatabase(v *FederatedDatabase) *DatabaseInput {
	s.FederatedDatabase = v
	return s
}

// SetLocationUri sets the LocationUri field's value.
func (s *DatabaseInput) SetLocationUri(v string) *DatabaseInput {
	s.LocationUri = &v
	return s
}

// SetName sets the Name field's value.
func (s *DatabaseInput) SetName(v string) *DatabaseInput {
	s.Name = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *DatabaseInput) SetParameters(v map[string]*string) *DatabaseInput {
	s.Parameters = v
	return s
}

// SetTargetDatabase sets the TargetDatabase field's value.
func (s *DatabaseInput) SetTargetDatabase(v *DatabaseIdentifier) *DatabaseInput {
	s.TargetDatabase = v
	return s
}

// A structure representing the datatype of the value.
type Datatype struct {
	_ struct{} `type:"structure"`

	// The datatype of the value.
	//
	// Id is a required field
	Id *string `type:"string" required:"true"`

	// A label assigned to the datatype.
	//
	// Label is a required field
	Label *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 Datatype) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Datatype) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Datatype) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Datatype"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.Label == nil {
		invalidParams.Add(request.NewErrParamRequired("Label"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetId sets the Id field's value.
func (s *Datatype) SetId(v string) *Datatype {
	s.Id = &v
	return s
}

// SetLabel sets the Label field's value.
func (s *Datatype) SetLabel(v string) *Datatype {
	s.Label = &v
	return s
}

// Defines column statistics supported for timestamp data columns.
type DateColumnStatisticsData struct {
	_ struct{} `type:"structure"`

	// The highest value in the column.
	MaximumValue *time.Time `type:"timestamp"`

	// The lowest value in the column.
	MinimumValue *time.Time `type:"timestamp"`

	// The number of distinct values in a column.
	//
	// NumberOfDistinctValues is a required field
	NumberOfDistinctValues *int64 `type:"long" required:"true"`

	// The number of null values in the column.
	//
	// NumberOfNulls is a required field
	NumberOfNulls *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 DateColumnStatisticsData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DateColumnStatisticsData) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DateColumnStatisticsData) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DateColumnStatisticsData"}
	if s.NumberOfDistinctValues == nil {
		invalidParams.Add(request.NewErrParamRequired("NumberOfDistinctValues"))
	}
	if s.NumberOfNulls == nil {
		invalidParams.Add(request.NewErrParamRequired("NumberOfNulls"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaximumValue sets the MaximumValue field's value.
func (s *DateColumnStatisticsData) SetMaximumValue(v time.Time) *DateColumnStatisticsData {
	s.MaximumValue = &v
	return s
}

// SetMinimumValue sets the MinimumValue field's value.
func (s *DateColumnStatisticsData) SetMinimumValue(v time.Time) *DateColumnStatisticsData {
	s.MinimumValue = &v
	return s
}

// SetNumberOfDistinctValues sets the NumberOfDistinctValues field's value.
func (s *DateColumnStatisticsData) SetNumberOfDistinctValues(v int64) *DateColumnStatisticsData {
	s.NumberOfDistinctValues = &v
	return s
}

// SetNumberOfNulls sets the NumberOfNulls field's value.
func (s *DateColumnStatisticsData) SetNumberOfNulls(v int64) *DateColumnStatisticsData {
	s.NumberOfNulls = &v
	return s
}

// Defines column statistics supported for fixed-point number data columns.
type DecimalColumnStatisticsData struct {
	_ struct{} `type:"structure"`

	// The highest value in the column.
	MaximumValue *DecimalNumber `type:"structure"`

	// The lowest value in the column.
	MinimumValue *DecimalNumber `type:"structure"`

	// The number of distinct values in a column.
	//
	// NumberOfDistinctValues is a required field
	NumberOfDistinctValues *int64 `type:"long" required:"true"`

	// The number of null values in the column.
	//
	// NumberOfNulls is a required field
	NumberOfNulls *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 DecimalColumnStatisticsData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DecimalColumnStatisticsData) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DecimalColumnStatisticsData) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DecimalColumnStatisticsData"}
	if s.NumberOfDistinctValues == nil {
		invalidParams.Add(request.NewErrParamRequired("NumberOfDistinctValues"))
	}
	if s.NumberOfNulls == nil {
		invalidParams.Add(request.NewErrParamRequired("NumberOfNulls"))
	}
	if s.MaximumValue != nil {
		if err := s.MaximumValue.Validate(); err != nil {
			invalidParams.AddNested("MaximumValue", err.(request.ErrInvalidParams))
		}
	}
	if s.MinimumValue != nil {
		if err := s.MinimumValue.Validate(); err != nil {
			invalidParams.AddNested("MinimumValue", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaximumValue sets the MaximumValue field's value.
func (s *DecimalColumnStatisticsData) SetMaximumValue(v *DecimalNumber) *DecimalColumnStatisticsData {
	s.MaximumValue = v
	return s
}

// SetMinimumValue sets the MinimumValue field's value.
func (s *DecimalColumnStatisticsData) SetMinimumValue(v *DecimalNumber) *DecimalColumnStatisticsData {
	s.MinimumValue = v
	return s
}

// SetNumberOfDistinctValues sets the NumberOfDistinctValues field's value.
func (s *DecimalColumnStatisticsData) SetNumberOfDistinctValues(v int64) *DecimalColumnStatisticsData {
	s.NumberOfDistinctValues = &v
	return s
}

// SetNumberOfNulls sets the NumberOfNulls field's value.
func (s *DecimalColumnStatisticsData) SetNumberOfNulls(v int64) *DecimalColumnStatisticsData {
	s.NumberOfNulls = &v
	return s
}

// Contains a numeric value in decimal format.
type DecimalNumber struct {
	_ struct{} `type:"structure"`

	// The scale that determines where the decimal point falls in the unscaled value.
	//
	// Scale is a required field
	Scale *int64 `type:"integer" required:"true"`

	// The unscaled numeric value.
	// UnscaledValue is automatically base64 encoded/decoded by the SDK.
	//
	// UnscaledValue is a required field
	UnscaledValue []byte `type:"blob" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DecimalNumber) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DecimalNumber) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DecimalNumber) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DecimalNumber"}
	if s.Scale == nil {
		invalidParams.Add(request.NewErrParamRequired("Scale"))
	}
	if s.UnscaledValue == nil {
		invalidParams.Add(request.NewErrParamRequired("UnscaledValue"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetScale sets the Scale field's value.
func (s *DecimalNumber) SetScale(v int64) *DecimalNumber {
	s.Scale = &v
	return s
}

// SetUnscaledValue sets the UnscaledValue field's value.
func (s *DecimalNumber) SetUnscaledValue(v []byte) *DecimalNumber {
	s.UnscaledValue = v
	return s
}

type DeleteBlueprintInput struct {
	_ struct{} `type:"structure"`

	// The name of the blueprint to delete.
	//
	// 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 DeleteBlueprintInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteBlueprintInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteBlueprintInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteBlueprintInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *DeleteBlueprintInput) SetName(v string) *DeleteBlueprintInput {
	s.Name = &v
	return s
}

type DeleteBlueprintOutput struct {
	_ struct{} `type:"structure"`

	// Returns the name of the blueprint that was deleted.
	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 DeleteBlueprintOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteBlueprintOutput) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *DeleteBlueprintOutput) SetName(v string) *DeleteBlueprintOutput {
	s.Name = &v
	return s
}

type DeleteClassifierInput struct {
	_ struct{} `type:"structure"`

	// Name of the classifier to remove.
	//
	// 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 DeleteClassifierInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteClassifierInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteClassifierInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteClassifierInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *DeleteClassifierInput) SetName(v string) *DeleteClassifierInput {
	s.Name = &v
	return s
}

type DeleteClassifierOutput 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 DeleteClassifierOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteClassifierOutput) GoString() string {
	return s.String()
}

type DeleteColumnStatisticsForPartitionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the partitions in question reside. If none
	// is supplied, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// Name of the column.
	//
	// ColumnName is a required field
	ColumnName *string `min:"1" type:"string" required:"true"`

	// The name of the catalog database where the partitions reside.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// A list of partition values identifying the partition.
	//
	// PartitionValues is a required field
	PartitionValues []*string `type:"list" required:"true"`

	// The name of the partitions' table.
	//
	// TableName is a required field
	TableName *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 DeleteColumnStatisticsForPartitionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteColumnStatisticsForPartitionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteColumnStatisticsForPartitionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteColumnStatisticsForPartitionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 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.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.PartitionValues == nil {
		invalidParams.Add(request.NewErrParamRequired("PartitionValues"))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *DeleteColumnStatisticsForPartitionInput) SetCatalogId(v string) *DeleteColumnStatisticsForPartitionInput {
	s.CatalogId = &v
	return s
}

// SetColumnName sets the ColumnName field's value.
func (s *DeleteColumnStatisticsForPartitionInput) SetColumnName(v string) *DeleteColumnStatisticsForPartitionInput {
	s.ColumnName = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *DeleteColumnStatisticsForPartitionInput) SetDatabaseName(v string) *DeleteColumnStatisticsForPartitionInput {
	s.DatabaseName = &v
	return s
}

// SetPartitionValues sets the PartitionValues field's value.
func (s *DeleteColumnStatisticsForPartitionInput) SetPartitionValues(v []*string) *DeleteColumnStatisticsForPartitionInput {
	s.PartitionValues = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *DeleteColumnStatisticsForPartitionInput) SetTableName(v string) *DeleteColumnStatisticsForPartitionInput {
	s.TableName = &v
	return s
}

type DeleteColumnStatisticsForPartitionOutput 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 DeleteColumnStatisticsForPartitionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteColumnStatisticsForPartitionOutput) GoString() string {
	return s.String()
}

type DeleteColumnStatisticsForTableInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the partitions in question reside. If none
	// is supplied, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the column.
	//
	// ColumnName is a required field
	ColumnName *string `min:"1" type:"string" required:"true"`

	// The name of the catalog database where the partitions reside.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the partitions' table.
	//
	// TableName is a required field
	TableName *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 DeleteColumnStatisticsForTableInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteColumnStatisticsForTableInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteColumnStatisticsForTableInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteColumnStatisticsForTableInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 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.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *DeleteColumnStatisticsForTableInput) SetCatalogId(v string) *DeleteColumnStatisticsForTableInput {
	s.CatalogId = &v
	return s
}

// SetColumnName sets the ColumnName field's value.
func (s *DeleteColumnStatisticsForTableInput) SetColumnName(v string) *DeleteColumnStatisticsForTableInput {
	s.ColumnName = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *DeleteColumnStatisticsForTableInput) SetDatabaseName(v string) *DeleteColumnStatisticsForTableInput {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *DeleteColumnStatisticsForTableInput) SetTableName(v string) *DeleteColumnStatisticsForTableInput {
	s.TableName = &v
	return s
}

type DeleteColumnStatisticsForTableOutput 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 DeleteColumnStatisticsForTableOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteColumnStatisticsForTableOutput) GoString() string {
	return s.String()
}

type DeleteConnectionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which the connection resides. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the connection to delete.
	//
	// ConnectionName is a required field
	ConnectionName *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 DeleteConnectionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteConnectionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteConnectionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteConnectionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.ConnectionName == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionName"))
	}
	if s.ConnectionName != nil && len(*s.ConnectionName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ConnectionName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *DeleteConnectionInput) SetCatalogId(v string) *DeleteConnectionInput {
	s.CatalogId = &v
	return s
}

// SetConnectionName sets the ConnectionName field's value.
func (s *DeleteConnectionInput) SetConnectionName(v string) *DeleteConnectionInput {
	s.ConnectionName = &v
	return s
}

type DeleteConnectionOutput 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 DeleteConnectionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteConnectionOutput) GoString() string {
	return s.String()
}

type DeleteCrawlerInput struct {
	_ struct{} `type:"structure"`

	// The name of the crawler to remove.
	//
	// 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 DeleteCrawlerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteCrawlerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteCrawlerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteCrawlerInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *DeleteCrawlerInput) SetName(v string) *DeleteCrawlerInput {
	s.Name = &v
	return s
}

type DeleteCrawlerOutput 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 DeleteCrawlerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteCrawlerOutput) GoString() string {
	return s.String()
}

type DeleteCustomEntityTypeInput struct {
	_ struct{} `type:"structure"`

	// The name of the custom pattern that you want to delete.
	//
	// 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 DeleteCustomEntityTypeInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteCustomEntityTypeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteCustomEntityTypeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteCustomEntityTypeInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *DeleteCustomEntityTypeInput) SetName(v string) *DeleteCustomEntityTypeInput {
	s.Name = &v
	return s
}

type DeleteCustomEntityTypeOutput struct {
	_ struct{} `type:"structure"`

	// The name of the custom pattern you deleted.
	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 DeleteCustomEntityTypeOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteCustomEntityTypeOutput) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *DeleteCustomEntityTypeOutput) SetName(v string) *DeleteCustomEntityTypeOutput {
	s.Name = &v
	return s
}

type DeleteDataQualityRulesetInput struct {
	_ struct{} `type:"structure"`

	// A name for the data quality ruleset.
	//
	// 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 DeleteDataQualityRulesetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDataQualityRulesetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteDataQualityRulesetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteDataQualityRulesetInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *DeleteDataQualityRulesetInput) SetName(v string) *DeleteDataQualityRulesetInput {
	s.Name = &v
	return s
}

type DeleteDataQualityRulesetOutput 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 DeleteDataQualityRulesetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDataQualityRulesetOutput) GoString() string {
	return s.String()
}

type DeleteDatabaseInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which the database resides. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the database to delete. For Hive compatibility, this must be
	// all lowercase.
	//
	// 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 DeleteDatabaseInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDatabaseInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteDatabaseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteDatabaseInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 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
}

// SetCatalogId sets the CatalogId field's value.
func (s *DeleteDatabaseInput) SetCatalogId(v string) *DeleteDatabaseInput {
	s.CatalogId = &v
	return s
}

// SetName sets the Name field's value.
func (s *DeleteDatabaseInput) SetName(v string) *DeleteDatabaseInput {
	s.Name = &v
	return s
}

type DeleteDatabaseOutput 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 DeleteDatabaseOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDatabaseOutput) GoString() string {
	return s.String()
}

type DeleteDevEndpointInput struct {
	_ struct{} `type:"structure"`

	// The name of the DevEndpoint.
	//
	// EndpointName is a required field
	EndpointName *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 DeleteDevEndpointInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDevEndpointInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteDevEndpointInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteDevEndpointInput"}
	if s.EndpointName == nil {
		invalidParams.Add(request.NewErrParamRequired("EndpointName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEndpointName sets the EndpointName field's value.
func (s *DeleteDevEndpointInput) SetEndpointName(v string) *DeleteDevEndpointInput {
	s.EndpointName = &v
	return s
}

type DeleteDevEndpointOutput 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 DeleteDevEndpointOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteDevEndpointOutput) GoString() string {
	return s.String()
}

type DeleteJobInput struct {
	_ struct{} `type:"structure"`

	// The name of the job definition to delete.
	//
	// JobName is a required field
	JobName *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 DeleteJobInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteJobInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteJobInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteJobInput"}
	if s.JobName == nil {
		invalidParams.Add(request.NewErrParamRequired("JobName"))
	}
	if s.JobName != nil && len(*s.JobName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("JobName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetJobName sets the JobName field's value.
func (s *DeleteJobInput) SetJobName(v string) *DeleteJobInput {
	s.JobName = &v
	return s
}

type DeleteJobOutput struct {
	_ struct{} `type:"structure"`

	// The name of the job definition that was deleted.
	JobName *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 DeleteJobOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteJobOutput) GoString() string {
	return s.String()
}

// SetJobName sets the JobName field's value.
func (s *DeleteJobOutput) SetJobName(v string) *DeleteJobOutput {
	s.JobName = &v
	return s
}

type DeleteMLTransformInput struct {
	_ struct{} `type:"structure"`

	// The unique identifier of the transform to delete.
	//
	// TransformId is a required field
	TransformId *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 DeleteMLTransformInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteMLTransformInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteMLTransformInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteMLTransformInput"}
	if s.TransformId == nil {
		invalidParams.Add(request.NewErrParamRequired("TransformId"))
	}
	if s.TransformId != nil && len(*s.TransformId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TransformId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTransformId sets the TransformId field's value.
func (s *DeleteMLTransformInput) SetTransformId(v string) *DeleteMLTransformInput {
	s.TransformId = &v
	return s
}

type DeleteMLTransformOutput struct {
	_ struct{} `type:"structure"`

	// The unique identifier of the transform that was deleted.
	TransformId *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 DeleteMLTransformOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteMLTransformOutput) GoString() string {
	return s.String()
}

// SetTransformId sets the TransformId field's value.
func (s *DeleteMLTransformOutput) SetTransformId(v string) *DeleteMLTransformOutput {
	s.TransformId = &v
	return s
}

type DeletePartitionIndexInput struct {
	_ struct{} `type:"structure"`

	// The catalog ID where the table resides.
	CatalogId *string `min:"1" type:"string"`

	// Specifies the name of a database from which you want to delete a partition
	// index.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the partition index to be deleted.
	//
	// IndexName is a required field
	IndexName *string `min:"1" type:"string" required:"true"`

	// Specifies the name of a table from which you want to delete a partition index.
	//
	// TableName is a required field
	TableName *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 DeletePartitionIndexInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeletePartitionIndexInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeletePartitionIndexInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeletePartitionIndexInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.IndexName == nil {
		invalidParams.Add(request.NewErrParamRequired("IndexName"))
	}
	if s.IndexName != nil && len(*s.IndexName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("IndexName", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *DeletePartitionIndexInput) SetCatalogId(v string) *DeletePartitionIndexInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *DeletePartitionIndexInput) SetDatabaseName(v string) *DeletePartitionIndexInput {
	s.DatabaseName = &v
	return s
}

// SetIndexName sets the IndexName field's value.
func (s *DeletePartitionIndexInput) SetIndexName(v string) *DeletePartitionIndexInput {
	s.IndexName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *DeletePartitionIndexInput) SetTableName(v string) *DeletePartitionIndexInput {
	s.TableName = &v
	return s
}

type DeletePartitionIndexOutput 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 DeletePartitionIndexOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeletePartitionIndexOutput) GoString() string {
	return s.String()
}

type DeletePartitionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the partition to be deleted resides. If
	// none is provided, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the catalog database in which the table in question resides.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The values that define the partition.
	//
	// PartitionValues is a required field
	PartitionValues []*string `type:"list" required:"true"`

	// The name of the table that contains the partition to be deleted.
	//
	// TableName is a required field
	TableName *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 DeletePartitionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeletePartitionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeletePartitionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeletePartitionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.PartitionValues == nil {
		invalidParams.Add(request.NewErrParamRequired("PartitionValues"))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *DeletePartitionInput) SetCatalogId(v string) *DeletePartitionInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *DeletePartitionInput) SetDatabaseName(v string) *DeletePartitionInput {
	s.DatabaseName = &v
	return s
}

// SetPartitionValues sets the PartitionValues field's value.
func (s *DeletePartitionInput) SetPartitionValues(v []*string) *DeletePartitionInput {
	s.PartitionValues = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *DeletePartitionInput) SetTableName(v string) *DeletePartitionInput {
	s.TableName = &v
	return s
}

type DeletePartitionOutput 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 DeletePartitionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeletePartitionOutput) GoString() string {
	return s.String()
}

type DeleteRegistryInput struct {
	_ struct{} `type:"structure"`

	// This is a wrapper structure that may contain the registry name and Amazon
	// Resource Name (ARN).
	//
	// RegistryId is a required field
	RegistryId *RegistryId `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 DeleteRegistryInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteRegistryInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteRegistryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteRegistryInput"}
	if s.RegistryId == nil {
		invalidParams.Add(request.NewErrParamRequired("RegistryId"))
	}
	if s.RegistryId != nil {
		if err := s.RegistryId.Validate(); err != nil {
			invalidParams.AddNested("RegistryId", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRegistryId sets the RegistryId field's value.
func (s *DeleteRegistryInput) SetRegistryId(v *RegistryId) *DeleteRegistryInput {
	s.RegistryId = v
	return s
}

type DeleteRegistryOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the registry being deleted.
	RegistryArn *string `min:"1" type:"string"`

	// The name of the registry being deleted.
	RegistryName *string `min:"1" type:"string"`

	// The status of the registry. A successful operation will return the Deleting
	// status.
	Status *string `type:"string" enum:"RegistryStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteRegistryOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteRegistryOutput) GoString() string {
	return s.String()
}

// SetRegistryArn sets the RegistryArn field's value.
func (s *DeleteRegistryOutput) SetRegistryArn(v string) *DeleteRegistryOutput {
	s.RegistryArn = &v
	return s
}

// SetRegistryName sets the RegistryName field's value.
func (s *DeleteRegistryOutput) SetRegistryName(v string) *DeleteRegistryOutput {
	s.RegistryName = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteRegistryOutput) SetStatus(v string) *DeleteRegistryOutput {
	s.Status = &v
	return s
}

type DeleteResourcePolicyInput struct {
	_ struct{} `type:"structure"`

	// The hash value returned when this policy was set.
	PolicyHashCondition *string `min:"1" type:"string"`

	// The ARN of the Glue resource for the resource policy to be deleted.
	ResourceArn *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 DeleteResourcePolicyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteResourcePolicyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteResourcePolicyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteResourcePolicyInput"}
	if s.PolicyHashCondition != nil && len(*s.PolicyHashCondition) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PolicyHashCondition", 1))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPolicyHashCondition sets the PolicyHashCondition field's value.
func (s *DeleteResourcePolicyInput) SetPolicyHashCondition(v string) *DeleteResourcePolicyInput {
	s.PolicyHashCondition = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *DeleteResourcePolicyInput) SetResourceArn(v string) *DeleteResourcePolicyInput {
	s.ResourceArn = &v
	return s
}

type DeleteResourcePolicyOutput 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 DeleteResourcePolicyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteResourcePolicyOutput) GoString() string {
	return s.String()
}

type DeleteSchemaInput struct {
	_ struct{} `type:"structure"`

	// This is a wrapper structure that may contain the schema name and Amazon Resource
	// Name (ARN).
	//
	// SchemaId is a required field
	SchemaId *SchemaId `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 DeleteSchemaInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteSchemaInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteSchemaInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteSchemaInput"}
	if s.SchemaId == nil {
		invalidParams.Add(request.NewErrParamRequired("SchemaId"))
	}
	if s.SchemaId != nil {
		if err := s.SchemaId.Validate(); err != nil {
			invalidParams.AddNested("SchemaId", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSchemaId sets the SchemaId field's value.
func (s *DeleteSchemaInput) SetSchemaId(v *SchemaId) *DeleteSchemaInput {
	s.SchemaId = v
	return s
}

type DeleteSchemaOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the schema being deleted.
	SchemaArn *string `min:"1" type:"string"`

	// The name of the schema being deleted.
	SchemaName *string `min:"1" type:"string"`

	// The status of the schema.
	Status *string `type:"string" enum:"SchemaStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteSchemaOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteSchemaOutput) GoString() string {
	return s.String()
}

// SetSchemaArn sets the SchemaArn field's value.
func (s *DeleteSchemaOutput) SetSchemaArn(v string) *DeleteSchemaOutput {
	s.SchemaArn = &v
	return s
}

// SetSchemaName sets the SchemaName field's value.
func (s *DeleteSchemaOutput) SetSchemaName(v string) *DeleteSchemaOutput {
	s.SchemaName = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *DeleteSchemaOutput) SetStatus(v string) *DeleteSchemaOutput {
	s.Status = &v
	return s
}

type DeleteSchemaVersionsInput struct {
	_ struct{} `type:"structure"`

	// This is a wrapper structure that may contain the schema name and Amazon Resource
	// Name (ARN).
	//
	// SchemaId is a required field
	SchemaId *SchemaId `type:"structure" required:"true"`

	// A version range may be supplied which may be of the format:
	//
	//    * a single version number, 5
	//
	//    * a range, 5-8 : deletes versions 5, 6, 7, 8
	//
	// Versions is a required field
	Versions *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 DeleteSchemaVersionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteSchemaVersionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteSchemaVersionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteSchemaVersionsInput"}
	if s.SchemaId == nil {
		invalidParams.Add(request.NewErrParamRequired("SchemaId"))
	}
	if s.Versions == nil {
		invalidParams.Add(request.NewErrParamRequired("Versions"))
	}
	if s.Versions != nil && len(*s.Versions) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Versions", 1))
	}
	if s.SchemaId != nil {
		if err := s.SchemaId.Validate(); err != nil {
			invalidParams.AddNested("SchemaId", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSchemaId sets the SchemaId field's value.
func (s *DeleteSchemaVersionsInput) SetSchemaId(v *SchemaId) *DeleteSchemaVersionsInput {
	s.SchemaId = v
	return s
}

// SetVersions sets the Versions field's value.
func (s *DeleteSchemaVersionsInput) SetVersions(v string) *DeleteSchemaVersionsInput {
	s.Versions = &v
	return s
}

type DeleteSchemaVersionsOutput struct {
	_ struct{} `type:"structure"`

	// A list of SchemaVersionErrorItem objects, each containing an error and schema
	// version.
	SchemaVersionErrors []*SchemaVersionErrorItem `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 DeleteSchemaVersionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteSchemaVersionsOutput) GoString() string {
	return s.String()
}

// SetSchemaVersionErrors sets the SchemaVersionErrors field's value.
func (s *DeleteSchemaVersionsOutput) SetSchemaVersionErrors(v []*SchemaVersionErrorItem) *DeleteSchemaVersionsOutput {
	s.SchemaVersionErrors = v
	return s
}

type DeleteSecurityConfigurationInput struct {
	_ struct{} `type:"structure"`

	// The name of the security configuration to delete.
	//
	// 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 DeleteSecurityConfigurationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteSecurityConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteSecurityConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteSecurityConfigurationInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *DeleteSecurityConfigurationInput) SetName(v string) *DeleteSecurityConfigurationInput {
	s.Name = &v
	return s
}

type DeleteSecurityConfigurationOutput 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 DeleteSecurityConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteSecurityConfigurationOutput) GoString() string {
	return s.String()
}

type DeleteSessionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the session to be deleted.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// The name of the origin of the delete session request.
	RequestOrigin *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 DeleteSessionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteSessionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteSessionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteSessionInput"}
	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.RequestOrigin != nil && len(*s.RequestOrigin) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RequestOrigin", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetId sets the Id field's value.
func (s *DeleteSessionInput) SetId(v string) *DeleteSessionInput {
	s.Id = &v
	return s
}

// SetRequestOrigin sets the RequestOrigin field's value.
func (s *DeleteSessionInput) SetRequestOrigin(v string) *DeleteSessionInput {
	s.RequestOrigin = &v
	return s
}

type DeleteSessionOutput struct {
	_ struct{} `type:"structure"`

	// Returns the ID of the deleted session.
	Id *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 DeleteSessionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteSessionOutput) GoString() string {
	return s.String()
}

// SetId sets the Id field's value.
func (s *DeleteSessionOutput) SetId(v string) *DeleteSessionOutput {
	s.Id = &v
	return s
}

type DeleteTableInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the table resides. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the catalog database in which the table resides. For Hive compatibility,
	// this name is entirely lowercase.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the table to be deleted. For Hive compatibility, this name is
	// entirely lowercase.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The transaction ID at which to delete the table contents.
	TransactionId *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 DeleteTableInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTableInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteTableInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteTableInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 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.TransactionId != nil && len(*s.TransactionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TransactionId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *DeleteTableInput) SetCatalogId(v string) *DeleteTableInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *DeleteTableInput) SetDatabaseName(v string) *DeleteTableInput {
	s.DatabaseName = &v
	return s
}

// SetName sets the Name field's value.
func (s *DeleteTableInput) SetName(v string) *DeleteTableInput {
	s.Name = &v
	return s
}

// SetTransactionId sets the TransactionId field's value.
func (s *DeleteTableInput) SetTransactionId(v string) *DeleteTableInput {
	s.TransactionId = &v
	return s
}

type DeleteTableOptimizerInput struct {
	_ struct{} `type:"structure"`

	// The Catalog ID of the table.
	//
	// CatalogId is a required field
	CatalogId *string `min:"1" type:"string" required:"true"`

	// The name of the database in the catalog in which the table resides.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the table.
	//
	// TableName is a required field
	TableName *string `min:"1" type:"string" required:"true"`

	// The type of table optimizer.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"TableOptimizerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTableOptimizerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTableOptimizerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteTableOptimizerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteTableOptimizerInput"}
	if s.CatalogId == nil {
		invalidParams.Add(request.NewErrParamRequired("CatalogId"))
	}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *DeleteTableOptimizerInput) SetCatalogId(v string) *DeleteTableOptimizerInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *DeleteTableOptimizerInput) SetDatabaseName(v string) *DeleteTableOptimizerInput {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *DeleteTableOptimizerInput) SetTableName(v string) *DeleteTableOptimizerInput {
	s.TableName = &v
	return s
}

// SetType sets the Type field's value.
func (s *DeleteTableOptimizerInput) SetType(v string) *DeleteTableOptimizerInput {
	s.Type = &v
	return s
}

type DeleteTableOptimizerOutput 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 DeleteTableOptimizerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTableOptimizerOutput) GoString() string {
	return s.String()
}

type DeleteTableOutput 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 DeleteTableOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTableOutput) GoString() string {
	return s.String()
}

type DeleteTableVersionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the tables reside. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The database in the catalog in which the table resides. For Hive compatibility,
	// this name is entirely lowercase.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the table. For Hive compatibility, this name is entirely lowercase.
	//
	// TableName is a required field
	TableName *string `min:"1" type:"string" required:"true"`

	// The ID of the table version to be deleted. A VersionID is a string representation
	// of an integer. Each version is incremented by 1.
	//
	// VersionId is a required field
	VersionId *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 DeleteTableVersionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTableVersionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteTableVersionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteTableVersionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}
	if s.VersionId == nil {
		invalidParams.Add(request.NewErrParamRequired("VersionId"))
	}
	if s.VersionId != nil && len(*s.VersionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VersionId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *DeleteTableVersionInput) SetCatalogId(v string) *DeleteTableVersionInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *DeleteTableVersionInput) SetDatabaseName(v string) *DeleteTableVersionInput {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *DeleteTableVersionInput) SetTableName(v string) *DeleteTableVersionInput {
	s.TableName = &v
	return s
}

// SetVersionId sets the VersionId field's value.
func (s *DeleteTableVersionInput) SetVersionId(v string) *DeleteTableVersionInput {
	s.VersionId = &v
	return s
}

type DeleteTableVersionOutput 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 DeleteTableVersionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTableVersionOutput) GoString() string {
	return s.String()
}

type DeleteTriggerInput struct {
	_ struct{} `type:"structure"`

	// The name of the trigger to delete.
	//
	// 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 DeleteTriggerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTriggerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteTriggerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteTriggerInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *DeleteTriggerInput) SetName(v string) *DeleteTriggerInput {
	s.Name = &v
	return s
}

type DeleteTriggerOutput struct {
	_ struct{} `type:"structure"`

	// The name of the trigger that was deleted.
	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 DeleteTriggerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteTriggerOutput) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *DeleteTriggerOutput) SetName(v string) *DeleteTriggerOutput {
	s.Name = &v
	return s
}

type DeleteUsageProfileInput struct {
	_ struct{} `type:"structure"`

	// The name of the usage profile to delete.
	//
	// 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 DeleteUsageProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteUsageProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteUsageProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteUsageProfileInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *DeleteUsageProfileInput) SetName(v string) *DeleteUsageProfileInput {
	s.Name = &v
	return s
}

type DeleteUsageProfileOutput 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 DeleteUsageProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteUsageProfileOutput) GoString() string {
	return s.String()
}

type DeleteUserDefinedFunctionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the function to be deleted is located. If
	// none is supplied, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the catalog database where the function is located.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the function definition to be deleted.
	//
	// FunctionName is a required field
	FunctionName *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 DeleteUserDefinedFunctionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteUserDefinedFunctionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteUserDefinedFunctionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteUserDefinedFunctionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.FunctionName == nil {
		invalidParams.Add(request.NewErrParamRequired("FunctionName"))
	}
	if s.FunctionName != nil && len(*s.FunctionName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FunctionName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *DeleteUserDefinedFunctionInput) SetCatalogId(v string) *DeleteUserDefinedFunctionInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *DeleteUserDefinedFunctionInput) SetDatabaseName(v string) *DeleteUserDefinedFunctionInput {
	s.DatabaseName = &v
	return s
}

// SetFunctionName sets the FunctionName field's value.
func (s *DeleteUserDefinedFunctionInput) SetFunctionName(v string) *DeleteUserDefinedFunctionInput {
	s.FunctionName = &v
	return s
}

type DeleteUserDefinedFunctionOutput 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 DeleteUserDefinedFunctionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteUserDefinedFunctionOutput) GoString() string {
	return s.String()
}

type DeleteWorkflowInput struct {
	_ struct{} `type:"structure"`

	// Name of the workflow to be deleted.
	//
	// 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 DeleteWorkflowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteWorkflowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteWorkflowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteWorkflowInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *DeleteWorkflowInput) SetName(v string) *DeleteWorkflowInput {
	s.Name = &v
	return s
}

type DeleteWorkflowOutput struct {
	_ struct{} `type:"structure"`

	// Name of the workflow specified in input.
	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 DeleteWorkflowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteWorkflowOutput) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *DeleteWorkflowOutput) SetName(v string) *DeleteWorkflowOutput {
	s.Name = &v
	return s
}

// Specifies a Delta data store to crawl one or more Delta tables.
type DeltaTarget struct {
	_ struct{} `type:"structure"`

	// The name of the connection to use to connect to the Delta table target.
	ConnectionName *string `type:"string"`

	// Specifies whether the crawler will create native tables, to allow integration
	// with query engines that support querying of the Delta transaction log directly.
	CreateNativeDeltaTable *bool `type:"boolean"`

	// A list of the Amazon S3 paths to the Delta tables.
	DeltaTables []*string `type:"list"`

	// Specifies whether to write the manifest files to the Delta table path.
	WriteManifest *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 DeltaTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeltaTarget) GoString() string {
	return s.String()
}

// SetConnectionName sets the ConnectionName field's value.
func (s *DeltaTarget) SetConnectionName(v string) *DeltaTarget {
	s.ConnectionName = &v
	return s
}

// SetCreateNativeDeltaTable sets the CreateNativeDeltaTable field's value.
func (s *DeltaTarget) SetCreateNativeDeltaTable(v bool) *DeltaTarget {
	s.CreateNativeDeltaTable = &v
	return s
}

// SetDeltaTables sets the DeltaTables field's value.
func (s *DeltaTarget) SetDeltaTables(v []*string) *DeltaTarget {
	s.DeltaTables = v
	return s
}

// SetWriteManifest sets the WriteManifest field's value.
func (s *DeltaTarget) SetWriteManifest(v bool) *DeltaTarget {
	s.WriteManifest = &v
	return s
}

// A development endpoint where a developer can remotely debug extract, transform,
// and load (ETL) scripts.
type DevEndpoint struct {
	_ struct{} `type:"structure"`

	// A map of arguments used to configure the DevEndpoint.
	//
	// Valid arguments are:
	//
	//    * "--enable-glue-datacatalog": ""
	//
	// You can specify a version of Python support for development endpoints by
	// using the Arguments parameter in the CreateDevEndpoint or UpdateDevEndpoint
	// APIs. If no arguments are provided, the version defaults to Python 2.
	Arguments map[string]*string `type:"map"`

	// The Amazon Web Services Availability Zone where this DevEndpoint is located.
	AvailabilityZone *string `type:"string"`

	// The point in time at which this DevEndpoint was created.
	CreatedTimestamp *time.Time `type:"timestamp"`

	// The name of the DevEndpoint.
	EndpointName *string `type:"string"`

	// The path to one or more Java .jar files in an S3 bucket that should be loaded
	// in your DevEndpoint.
	//
	// You can only use pure Java/Scala libraries with a DevEndpoint.
	ExtraJarsS3Path *string `type:"string"`

	// The paths to one or more Python libraries in an Amazon S3 bucket that should
	// be loaded in your DevEndpoint. Multiple values must be complete paths separated
	// by a comma.
	//
	// You can only use pure Python libraries with a DevEndpoint. Libraries that
	// rely on C extensions, such as the pandas (http://pandas.pydata.org/) Python
	// data analysis library, are not currently supported.
	ExtraPythonLibsS3Path *string `type:"string"`

	// The reason for a current failure in this DevEndpoint.
	FailureReason *string `type:"string"`

	// Glue version determines the versions of Apache Spark and Python that Glue
	// supports. The Python version indicates the version supported for running
	// your ETL scripts on development endpoints.
	//
	// For more information about the available Glue versions and corresponding
	// Spark and Python versions, see Glue version (https://docs.aws.amazon.com/glue/latest/dg/add-job.html)
	// in the developer guide.
	//
	// Development endpoints that are created without specifying a Glue version
	// default to Glue 0.9.
	//
	// You can specify a version of Python support for development endpoints by
	// using the Arguments parameter in the CreateDevEndpoint or UpdateDevEndpoint
	// APIs. If no arguments are provided, the version defaults to Python 2.
	GlueVersion *string `min:"1" type:"string"`

	// The point in time at which this DevEndpoint was last modified.
	LastModifiedTimestamp *time.Time `type:"timestamp"`

	// The status of the last update.
	LastUpdateStatus *string `type:"string"`

	// The number of Glue Data Processing Units (DPUs) allocated to this DevEndpoint.
	NumberOfNodes *int64 `type:"integer"`

	// The number of workers of a defined workerType that are allocated to the development
	// endpoint.
	//
	// The maximum number of workers you can define are 299 for G.1X, and 149 for
	// G.2X.
	NumberOfWorkers *int64 `type:"integer"`

	// A private IP address to access the DevEndpoint within a VPC if the DevEndpoint
	// is created within one. The PrivateAddress field is present only when you
	// create the DevEndpoint within your VPC.
	PrivateAddress *string `type:"string"`

	// The public IP address used by this DevEndpoint. The PublicAddress field is
	// present only when you create a non-virtual private cloud (VPC) DevEndpoint.
	PublicAddress *string `type:"string"`

	// The public key to be used by this DevEndpoint for authentication. This attribute
	// is provided for backward compatibility because the recommended attribute
	// to use is public keys.
	PublicKey *string `type:"string"`

	// A list of public keys to be used by the DevEndpoints for authentication.
	// Using this attribute is preferred over a single public key because the public
	// keys allow you to have a different private key per client.
	//
	// If you previously created an endpoint with a public key, you must remove
	// that key to be able to set a list of public keys. Call the UpdateDevEndpoint
	// API operation with the public key content in the deletePublicKeys attribute,
	// and the list of new keys in the addPublicKeys attribute.
	PublicKeys []*string `type:"list"`

	// The Amazon Resource Name (ARN) of the IAM role used in this DevEndpoint.
	RoleArn *string `type:"string"`

	// The name of the SecurityConfiguration structure to be used with this DevEndpoint.
	SecurityConfiguration *string `min:"1" type:"string"`

	// A list of security group identifiers used in this DevEndpoint.
	SecurityGroupIds []*string `type:"list"`

	// The current status of this DevEndpoint.
	Status *string `type:"string"`

	// The subnet ID for this DevEndpoint.
	SubnetId *string `type:"string"`

	// The ID of the virtual private cloud (VPC) used by this DevEndpoint.
	VpcId *string `type:"string"`

	// The type of predefined worker that is allocated to the development endpoint.
	// Accepts a value of Standard, G.1X, or G.2X.
	//
	//    * For the Standard worker type, each worker provides 4 vCPU, 16 GB of
	//    memory and a 50GB disk, and 2 executors per worker.
	//
	//    * For the G.1X worker type, each worker maps to 1 DPU (4 vCPU, 16 GB of
	//    memory, 64 GB disk), and provides 1 executor per worker. We recommend
	//    this worker type for memory-intensive jobs.
	//
	//    * For the G.2X worker type, each worker maps to 2 DPU (8 vCPU, 32 GB of
	//    memory, 128 GB disk), and provides 1 executor per worker. We recommend
	//    this worker type for memory-intensive jobs.
	//
	// Known issue: when a development endpoint is created with the G.2X WorkerType
	// configuration, the Spark drivers for the development endpoint will run on
	// 4 vCPU, 16 GB of memory, and a 64 GB disk.
	WorkerType *string `type:"string" enum:"WorkerType"`

	// The YARN endpoint address used by this DevEndpoint.
	YarnEndpointAddress *string `type:"string"`

	// The Apache Zeppelin port for the remote Apache Spark interpreter.
	ZeppelinRemoteSparkInterpreterPort *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 DevEndpoint) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DevEndpoint) GoString() string {
	return s.String()
}

// SetArguments sets the Arguments field's value.
func (s *DevEndpoint) SetArguments(v map[string]*string) *DevEndpoint {
	s.Arguments = v
	return s
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *DevEndpoint) SetAvailabilityZone(v string) *DevEndpoint {
	s.AvailabilityZone = &v
	return s
}

// SetCreatedTimestamp sets the CreatedTimestamp field's value.
func (s *DevEndpoint) SetCreatedTimestamp(v time.Time) *DevEndpoint {
	s.CreatedTimestamp = &v
	return s
}

// SetEndpointName sets the EndpointName field's value.
func (s *DevEndpoint) SetEndpointName(v string) *DevEndpoint {
	s.EndpointName = &v
	return s
}

// SetExtraJarsS3Path sets the ExtraJarsS3Path field's value.
func (s *DevEndpoint) SetExtraJarsS3Path(v string) *DevEndpoint {
	s.ExtraJarsS3Path = &v
	return s
}

// SetExtraPythonLibsS3Path sets the ExtraPythonLibsS3Path field's value.
func (s *DevEndpoint) SetExtraPythonLibsS3Path(v string) *DevEndpoint {
	s.ExtraPythonLibsS3Path = &v
	return s
}

// SetFailureReason sets the FailureReason field's value.
func (s *DevEndpoint) SetFailureReason(v string) *DevEndpoint {
	s.FailureReason = &v
	return s
}

// SetGlueVersion sets the GlueVersion field's value.
func (s *DevEndpoint) SetGlueVersion(v string) *DevEndpoint {
	s.GlueVersion = &v
	return s
}

// SetLastModifiedTimestamp sets the LastModifiedTimestamp field's value.
func (s *DevEndpoint) SetLastModifiedTimestamp(v time.Time) *DevEndpoint {
	s.LastModifiedTimestamp = &v
	return s
}

// SetLastUpdateStatus sets the LastUpdateStatus field's value.
func (s *DevEndpoint) SetLastUpdateStatus(v string) *DevEndpoint {
	s.LastUpdateStatus = &v
	return s
}

// SetNumberOfNodes sets the NumberOfNodes field's value.
func (s *DevEndpoint) SetNumberOfNodes(v int64) *DevEndpoint {
	s.NumberOfNodes = &v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *DevEndpoint) SetNumberOfWorkers(v int64) *DevEndpoint {
	s.NumberOfWorkers = &v
	return s
}

// SetPrivateAddress sets the PrivateAddress field's value.
func (s *DevEndpoint) SetPrivateAddress(v string) *DevEndpoint {
	s.PrivateAddress = &v
	return s
}

// SetPublicAddress sets the PublicAddress field's value.
func (s *DevEndpoint) SetPublicAddress(v string) *DevEndpoint {
	s.PublicAddress = &v
	return s
}

// SetPublicKey sets the PublicKey field's value.
func (s *DevEndpoint) SetPublicKey(v string) *DevEndpoint {
	s.PublicKey = &v
	return s
}

// SetPublicKeys sets the PublicKeys field's value.
func (s *DevEndpoint) SetPublicKeys(v []*string) *DevEndpoint {
	s.PublicKeys = v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *DevEndpoint) SetRoleArn(v string) *DevEndpoint {
	s.RoleArn = &v
	return s
}

// SetSecurityConfiguration sets the SecurityConfiguration field's value.
func (s *DevEndpoint) SetSecurityConfiguration(v string) *DevEndpoint {
	s.SecurityConfiguration = &v
	return s
}

// SetSecurityGroupIds sets the SecurityGroupIds field's value.
func (s *DevEndpoint) SetSecurityGroupIds(v []*string) *DevEndpoint {
	s.SecurityGroupIds = v
	return s
}

// SetStatus sets the Status field's value.
func (s *DevEndpoint) SetStatus(v string) *DevEndpoint {
	s.Status = &v
	return s
}

// SetSubnetId sets the SubnetId field's value.
func (s *DevEndpoint) SetSubnetId(v string) *DevEndpoint {
	s.SubnetId = &v
	return s
}

// SetVpcId sets the VpcId field's value.
func (s *DevEndpoint) SetVpcId(v string) *DevEndpoint {
	s.VpcId = &v
	return s
}

// SetWorkerType sets the WorkerType field's value.
func (s *DevEndpoint) SetWorkerType(v string) *DevEndpoint {
	s.WorkerType = &v
	return s
}

// SetYarnEndpointAddress sets the YarnEndpointAddress field's value.
func (s *DevEndpoint) SetYarnEndpointAddress(v string) *DevEndpoint {
	s.YarnEndpointAddress = &v
	return s
}

// SetZeppelinRemoteSparkInterpreterPort sets the ZeppelinRemoteSparkInterpreterPort field's value.
func (s *DevEndpoint) SetZeppelinRemoteSparkInterpreterPort(v int64) *DevEndpoint {
	s.ZeppelinRemoteSparkInterpreterPort = &v
	return s
}

// Custom libraries to be loaded into a development endpoint.
type DevEndpointCustomLibraries struct {
	_ struct{} `type:"structure"`

	// The path to one or more Java .jar files in an S3 bucket that should be loaded
	// in your DevEndpoint.
	//
	// You can only use pure Java/Scala libraries with a DevEndpoint.
	ExtraJarsS3Path *string `type:"string"`

	// The paths to one or more Python libraries in an Amazon Simple Storage Service
	// (Amazon S3) bucket that should be loaded in your DevEndpoint. Multiple values
	// must be complete paths separated by a comma.
	//
	// You can only use pure Python libraries with a DevEndpoint. Libraries that
	// rely on C extensions, such as the pandas (http://pandas.pydata.org/) Python
	// data analysis library, are not currently supported.
	ExtraPythonLibsS3Path *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 DevEndpointCustomLibraries) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DevEndpointCustomLibraries) GoString() string {
	return s.String()
}

// SetExtraJarsS3Path sets the ExtraJarsS3Path field's value.
func (s *DevEndpointCustomLibraries) SetExtraJarsS3Path(v string) *DevEndpointCustomLibraries {
	s.ExtraJarsS3Path = &v
	return s
}

// SetExtraPythonLibsS3Path sets the ExtraPythonLibsS3Path field's value.
func (s *DevEndpointCustomLibraries) SetExtraPythonLibsS3Path(v string) *DevEndpointCustomLibraries {
	s.ExtraPythonLibsS3Path = &v
	return s
}

// Specifies the direct JDBC source connection.
type DirectJDBCSource struct {
	_ struct{} `type:"structure"`

	// The connection name of the JDBC source.
	//
	// ConnectionName is a required field
	ConnectionName *string `type:"string" required:"true"`

	// The connection type of the JDBC source.
	//
	// ConnectionType is a required field
	ConnectionType *string `type:"string" required:"true" enum:"JDBCConnectionType"`

	// The database of the JDBC source connection.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The name of the JDBC source connection.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The temp directory of the JDBC Redshift source.
	RedshiftTmpDir *string `type:"string"`

	// The table of the JDBC source connection.
	//
	// Table is a required field
	Table *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 DirectJDBCSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DirectJDBCSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DirectJDBCSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DirectJDBCSource"}
	if s.ConnectionName == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionName"))
	}
	if s.ConnectionType == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionType"))
	}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConnectionName sets the ConnectionName field's value.
func (s *DirectJDBCSource) SetConnectionName(v string) *DirectJDBCSource {
	s.ConnectionName = &v
	return s
}

// SetConnectionType sets the ConnectionType field's value.
func (s *DirectJDBCSource) SetConnectionType(v string) *DirectJDBCSource {
	s.ConnectionType = &v
	return s
}

// SetDatabase sets the Database field's value.
func (s *DirectJDBCSource) SetDatabase(v string) *DirectJDBCSource {
	s.Database = &v
	return s
}

// SetName sets the Name field's value.
func (s *DirectJDBCSource) SetName(v string) *DirectJDBCSource {
	s.Name = &v
	return s
}

// SetRedshiftTmpDir sets the RedshiftTmpDir field's value.
func (s *DirectJDBCSource) SetRedshiftTmpDir(v string) *DirectJDBCSource {
	s.RedshiftTmpDir = &v
	return s
}

// SetTable sets the Table field's value.
func (s *DirectJDBCSource) SetTable(v string) *DirectJDBCSource {
	s.Table = &v
	return s
}

// Specifies an Apache Kafka data store.
type DirectKafkaSource struct {
	_ struct{} `type:"structure"`

	// Specifies options related to data preview for viewing a sample of your data.
	DataPreviewOptions *StreamingDataPreviewOptions `type:"structure"`

	// Whether to automatically determine the schema from the incoming data.
	DetectSchema *bool `type:"boolean"`

	// The name of the data store.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the streaming options.
	StreamingOptions *KafkaStreamingSourceOptions `type:"structure"`

	// The amount of time to spend processing each micro batch.
	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 DirectKafkaSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DirectKafkaSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DirectKafkaSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DirectKafkaSource"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.DataPreviewOptions != nil {
		if err := s.DataPreviewOptions.Validate(); err != nil {
			invalidParams.AddNested("DataPreviewOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataPreviewOptions sets the DataPreviewOptions field's value.
func (s *DirectKafkaSource) SetDataPreviewOptions(v *StreamingDataPreviewOptions) *DirectKafkaSource {
	s.DataPreviewOptions = v
	return s
}

// SetDetectSchema sets the DetectSchema field's value.
func (s *DirectKafkaSource) SetDetectSchema(v bool) *DirectKafkaSource {
	s.DetectSchema = &v
	return s
}

// SetName sets the Name field's value.
func (s *DirectKafkaSource) SetName(v string) *DirectKafkaSource {
	s.Name = &v
	return s
}

// SetStreamingOptions sets the StreamingOptions field's value.
func (s *DirectKafkaSource) SetStreamingOptions(v *KafkaStreamingSourceOptions) *DirectKafkaSource {
	s.StreamingOptions = v
	return s
}

// SetWindowSize sets the WindowSize field's value.
func (s *DirectKafkaSource) SetWindowSize(v int64) *DirectKafkaSource {
	s.WindowSize = &v
	return s
}

// Specifies a direct Amazon Kinesis data source.
type DirectKinesisSource struct {
	_ struct{} `type:"structure"`

	// Additional options for data preview.
	DataPreviewOptions *StreamingDataPreviewOptions `type:"structure"`

	// Whether to automatically determine the schema from the incoming data.
	DetectSchema *bool `type:"boolean"`

	// The name of the data source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Additional options for the Kinesis streaming data source.
	StreamingOptions *KinesisStreamingSourceOptions `type:"structure"`

	// The amount of time to spend processing each micro batch.
	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 DirectKinesisSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DirectKinesisSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DirectKinesisSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DirectKinesisSource"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.DataPreviewOptions != nil {
		if err := s.DataPreviewOptions.Validate(); err != nil {
			invalidParams.AddNested("DataPreviewOptions", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataPreviewOptions sets the DataPreviewOptions field's value.
func (s *DirectKinesisSource) SetDataPreviewOptions(v *StreamingDataPreviewOptions) *DirectKinesisSource {
	s.DataPreviewOptions = v
	return s
}

// SetDetectSchema sets the DetectSchema field's value.
func (s *DirectKinesisSource) SetDetectSchema(v bool) *DirectKinesisSource {
	s.DetectSchema = &v
	return s
}

// SetName sets the Name field's value.
func (s *DirectKinesisSource) SetName(v string) *DirectKinesisSource {
	s.Name = &v
	return s
}

// SetStreamingOptions sets the StreamingOptions field's value.
func (s *DirectKinesisSource) SetStreamingOptions(v *KinesisStreamingSourceOptions) *DirectKinesisSource {
	s.StreamingOptions = v
	return s
}

// SetWindowSize sets the WindowSize field's value.
func (s *DirectKinesisSource) SetWindowSize(v int64) *DirectKinesisSource {
	s.WindowSize = &v
	return s
}

// A policy that specifies update behavior for the crawler.
type DirectSchemaChangePolicy struct {
	_ struct{} `type:"structure"`

	// Specifies the database that the schema change policy applies to.
	Database *string `type:"string"`

	// Whether to use the specified update behavior when the crawler finds a changed
	// schema.
	EnableUpdateCatalog *bool `type:"boolean"`

	// Specifies the table in the database that the schema change policy applies
	// to.
	Table *string `type:"string"`

	// The update behavior when the crawler finds a changed schema.
	UpdateBehavior *string `type:"string" enum:"UpdateCatalogBehavior"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DirectSchemaChangePolicy) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DirectSchemaChangePolicy) GoString() string {
	return s.String()
}

// SetDatabase sets the Database field's value.
func (s *DirectSchemaChangePolicy) SetDatabase(v string) *DirectSchemaChangePolicy {
	s.Database = &v
	return s
}

// SetEnableUpdateCatalog sets the EnableUpdateCatalog field's value.
func (s *DirectSchemaChangePolicy) SetEnableUpdateCatalog(v bool) *DirectSchemaChangePolicy {
	s.EnableUpdateCatalog = &v
	return s
}

// SetTable sets the Table field's value.
func (s *DirectSchemaChangePolicy) SetTable(v string) *DirectSchemaChangePolicy {
	s.Table = &v
	return s
}

// SetUpdateBehavior sets the UpdateBehavior field's value.
func (s *DirectSchemaChangePolicy) SetUpdateBehavior(v string) *DirectSchemaChangePolicy {
	s.UpdateBehavior = &v
	return s
}

// Defines column statistics supported for floating-point number data columns.
type DoubleColumnStatisticsData struct {
	_ struct{} `type:"structure"`

	// The highest value in the column.
	MaximumValue *float64 `type:"double"`

	// The lowest value in the column.
	MinimumValue *float64 `type:"double"`

	// The number of distinct values in a column.
	//
	// NumberOfDistinctValues is a required field
	NumberOfDistinctValues *int64 `type:"long" required:"true"`

	// The number of null values in the column.
	//
	// NumberOfNulls is a required field
	NumberOfNulls *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 DoubleColumnStatisticsData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DoubleColumnStatisticsData) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DoubleColumnStatisticsData) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DoubleColumnStatisticsData"}
	if s.NumberOfDistinctValues == nil {
		invalidParams.Add(request.NewErrParamRequired("NumberOfDistinctValues"))
	}
	if s.NumberOfNulls == nil {
		invalidParams.Add(request.NewErrParamRequired("NumberOfNulls"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaximumValue sets the MaximumValue field's value.
func (s *DoubleColumnStatisticsData) SetMaximumValue(v float64) *DoubleColumnStatisticsData {
	s.MaximumValue = &v
	return s
}

// SetMinimumValue sets the MinimumValue field's value.
func (s *DoubleColumnStatisticsData) SetMinimumValue(v float64) *DoubleColumnStatisticsData {
	s.MinimumValue = &v
	return s
}

// SetNumberOfDistinctValues sets the NumberOfDistinctValues field's value.
func (s *DoubleColumnStatisticsData) SetNumberOfDistinctValues(v int64) *DoubleColumnStatisticsData {
	s.NumberOfDistinctValues = &v
	return s
}

// SetNumberOfNulls sets the NumberOfNulls field's value.
func (s *DoubleColumnStatisticsData) SetNumberOfNulls(v int64) *DoubleColumnStatisticsData {
	s.NumberOfNulls = &v
	return s
}

// Specifies a transform that removes rows of repeating data from a data set.
type DropDuplicates struct {
	_ struct{} `type:"structure"`

	// The name of the columns to be merged or removed if repeating.
	Columns [][]*string `type:"list"`

	// The data inputs identified by their node names.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *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 DropDuplicates) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DropDuplicates) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DropDuplicates) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DropDuplicates"}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumns sets the Columns field's value.
func (s *DropDuplicates) SetColumns(v [][]*string) *DropDuplicates {
	s.Columns = v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *DropDuplicates) SetInputs(v []*string) *DropDuplicates {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *DropDuplicates) SetName(v string) *DropDuplicates {
	s.Name = &v
	return s
}

// Specifies a transform that chooses the data property keys that you want to
// drop.
type DropFields struct {
	_ struct{} `type:"structure"`

	// The data inputs identified by their node names.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// A JSON path to a variable in the data structure.
	//
	// Paths is a required field
	Paths [][]*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 DropFields) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DropFields) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DropFields) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DropFields"}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Paths == nil {
		invalidParams.Add(request.NewErrParamRequired("Paths"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInputs sets the Inputs field's value.
func (s *DropFields) SetInputs(v []*string) *DropFields {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *DropFields) SetName(v string) *DropFields {
	s.Name = &v
	return s
}

// SetPaths sets the Paths field's value.
func (s *DropFields) SetPaths(v [][]*string) *DropFields {
	s.Paths = v
	return s
}

// Specifies a transform that removes columns from the dataset if all values
// in the column are 'null'. By default, Glue Studio will recognize null objects,
// but some values such as empty strings, strings that are "null", -1 integers
// or other placeholders such as zeros, are not automatically recognized as
// nulls.
type DropNullFields struct {
	_ struct{} `type:"structure"`

	// The data inputs identified by their node names.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// A structure that represents whether certain values are recognized as null
	// values for removal.
	NullCheckBoxList *NullCheckBoxList `type:"structure"`

	// A structure that specifies a list of NullValueField structures that represent
	// a custom null value such as zero or other value being used as a null placeholder
	// unique to the dataset.
	//
	// The DropNullFields transform removes custom null values only if both the
	// value of the null placeholder and the datatype match the data.
	NullTextList []*NullValueField `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 DropNullFields) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DropNullFields) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DropNullFields) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DropNullFields"}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.NullTextList != nil {
		for i, v := range s.NullTextList {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "NullTextList", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInputs sets the Inputs field's value.
func (s *DropNullFields) SetInputs(v []*string) *DropNullFields {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *DropNullFields) SetName(v string) *DropNullFields {
	s.Name = &v
	return s
}

// SetNullCheckBoxList sets the NullCheckBoxList field's value.
func (s *DropNullFields) SetNullCheckBoxList(v *NullCheckBoxList) *DropNullFields {
	s.NullCheckBoxList = v
	return s
}

// SetNullTextList sets the NullTextList field's value.
func (s *DropNullFields) SetNullTextList(v []*NullValueField) *DropNullFields {
	s.NullTextList = v
	return s
}

// Specifies the set of parameters needed to perform the dynamic transform.
type DynamicTransform struct {
	_ struct{} `type:"structure"`

	// Specifies the name of the function of the dynamic transform.
	//
	// FunctionName is a required field
	FunctionName *string `type:"string" required:"true"`

	// Specifies the inputs for the dynamic transform that are required.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// Specifies the name of the dynamic transform.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the data schema for the dynamic transform.
	OutputSchemas []*GlueSchema `type:"list"`

	// Specifies the parameters of the dynamic transform.
	Parameters []*TransformConfigParameter `type:"list"`

	// Specifies the path of the dynamic transform source and config files.
	//
	// Path is a required field
	Path *string `type:"string" required:"true"`

	// Specifies the name of the dynamic transform as it appears in the Glue Studio
	// visual editor.
	//
	// TransformName is a required field
	TransformName *string `type:"string" required:"true"`

	// This field is not used and will be deprecated in future release.
	Version *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 DynamicTransform) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DynamicTransform) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DynamicTransform) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DynamicTransform"}
	if s.FunctionName == nil {
		invalidParams.Add(request.NewErrParamRequired("FunctionName"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Path == nil {
		invalidParams.Add(request.NewErrParamRequired("Path"))
	}
	if s.TransformName == nil {
		invalidParams.Add(request.NewErrParamRequired("TransformName"))
	}
	if s.OutputSchemas != nil {
		for i, v := range s.OutputSchemas {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputSchemas", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Parameters != nil {
		for i, v := range s.Parameters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Parameters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFunctionName sets the FunctionName field's value.
func (s *DynamicTransform) SetFunctionName(v string) *DynamicTransform {
	s.FunctionName = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *DynamicTransform) SetInputs(v []*string) *DynamicTransform {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *DynamicTransform) SetName(v string) *DynamicTransform {
	s.Name = &v
	return s
}

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *DynamicTransform) SetOutputSchemas(v []*GlueSchema) *DynamicTransform {
	s.OutputSchemas = v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *DynamicTransform) SetParameters(v []*TransformConfigParameter) *DynamicTransform {
	s.Parameters = v
	return s
}

// SetPath sets the Path field's value.
func (s *DynamicTransform) SetPath(v string) *DynamicTransform {
	s.Path = &v
	return s
}

// SetTransformName sets the TransformName field's value.
func (s *DynamicTransform) SetTransformName(v string) *DynamicTransform {
	s.TransformName = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *DynamicTransform) SetVersion(v string) *DynamicTransform {
	s.Version = &v
	return s
}

// Specifies a DynamoDB data source in the Glue Data Catalog.
type DynamoDBCatalogSource struct {
	_ struct{} `type:"structure"`

	// The name of the database to read from.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The name of the data source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The name of the table in the database to read from.
	//
	// Table is a required field
	Table *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 DynamoDBCatalogSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DynamoDBCatalogSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DynamoDBCatalogSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DynamoDBCatalogSource"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *DynamoDBCatalogSource) SetDatabase(v string) *DynamoDBCatalogSource {
	s.Database = &v
	return s
}

// SetName sets the Name field's value.
func (s *DynamoDBCatalogSource) SetName(v string) *DynamoDBCatalogSource {
	s.Name = &v
	return s
}

// SetTable sets the Table field's value.
func (s *DynamoDBCatalogSource) SetTable(v string) *DynamoDBCatalogSource {
	s.Table = &v
	return s
}

// Specifies an Amazon DynamoDB table to crawl.
type DynamoDBTarget struct {
	_ struct{} `type:"structure"`

	// The name of the DynamoDB table to crawl.
	Path *string `type:"string"`

	// Indicates whether to scan all the records, or to sample rows from the table.
	// Scanning all the records can take a long time when the table is not a high
	// throughput table.
	//
	// A value of true means to scan all records, while a value of false means to
	// sample the records. If no value is specified, the value defaults to true.
	ScanAll *bool `locationName:"scanAll" type:"boolean"`

	// The percentage of the configured read capacity units to use by the Glue crawler.
	// Read capacity units is a term defined by DynamoDB, and is a numeric value
	// that acts as rate limiter for the number of reads that can be performed on
	// that table per second.
	//
	// The valid values are null or a value between 0.1 to 1.5. A null value is
	// used when user does not provide a value, and defaults to 0.5 of the configured
	// Read Capacity Unit (for provisioned tables), or 0.25 of the max configured
	// Read Capacity Unit (for tables using on-demand mode).
	ScanRate *float64 `locationName:"scanRate" 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 DynamoDBTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DynamoDBTarget) GoString() string {
	return s.String()
}

// SetPath sets the Path field's value.
func (s *DynamoDBTarget) SetPath(v string) *DynamoDBTarget {
	s.Path = &v
	return s
}

// SetScanAll sets the ScanAll field's value.
func (s *DynamoDBTarget) SetScanAll(v bool) *DynamoDBTarget {
	s.ScanAll = &v
	return s
}

// SetScanRate sets the ScanRate field's value.
func (s *DynamoDBTarget) SetScanRate(v float64) *DynamoDBTarget {
	s.ScanRate = &v
	return s
}

// An edge represents a directed connection between two Glue components that
// are part of the workflow the edge belongs to.
type Edge struct {
	_ struct{} `type:"structure"`

	// The unique of the node within the workflow where the edge ends.
	DestinationId *string `min:"1" type:"string"`

	// The unique of the node within the workflow where the edge starts.
	SourceId *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 Edge) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Edge) GoString() string {
	return s.String()
}

// SetDestinationId sets the DestinationId field's value.
func (s *Edge) SetDestinationId(v string) *Edge {
	s.DestinationId = &v
	return s
}

// SetSourceId sets the SourceId field's value.
func (s *Edge) SetSourceId(v string) *Edge {
	s.SourceId = &v
	return s
}

// Specifies the encryption-at-rest configuration for the Data Catalog.
type EncryptionAtRest struct {
	_ struct{} `type:"structure"`

	// The encryption-at-rest mode for encrypting Data Catalog data.
	//
	// CatalogEncryptionMode is a required field
	CatalogEncryptionMode *string `type:"string" required:"true" enum:"CatalogEncryptionMode"`

	// The role that Glue assumes to encrypt and decrypt the Data Catalog objects
	// on the caller's behalf.
	CatalogEncryptionServiceRole *string `type:"string"`

	// The ID of the KMS key to use for encryption at rest.
	SseAwsKmsKeyId *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 EncryptionAtRest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EncryptionAtRest) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EncryptionAtRest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EncryptionAtRest"}
	if s.CatalogEncryptionMode == nil {
		invalidParams.Add(request.NewErrParamRequired("CatalogEncryptionMode"))
	}
	if s.SseAwsKmsKeyId != nil && len(*s.SseAwsKmsKeyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SseAwsKmsKeyId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogEncryptionMode sets the CatalogEncryptionMode field's value.
func (s *EncryptionAtRest) SetCatalogEncryptionMode(v string) *EncryptionAtRest {
	s.CatalogEncryptionMode = &v
	return s
}

// SetCatalogEncryptionServiceRole sets the CatalogEncryptionServiceRole field's value.
func (s *EncryptionAtRest) SetCatalogEncryptionServiceRole(v string) *EncryptionAtRest {
	s.CatalogEncryptionServiceRole = &v
	return s
}

// SetSseAwsKmsKeyId sets the SseAwsKmsKeyId field's value.
func (s *EncryptionAtRest) SetSseAwsKmsKeyId(v string) *EncryptionAtRest {
	s.SseAwsKmsKeyId = &v
	return s
}

// Specifies an encryption configuration.
type EncryptionConfiguration struct {
	_ struct{} `type:"structure"`

	// The encryption configuration for Amazon CloudWatch.
	CloudWatchEncryption *CloudWatchEncryption `type:"structure"`

	// The encryption configuration for job bookmarks.
	JobBookmarksEncryption *JobBookmarksEncryption `type:"structure"`

	// The encryption configuration for Amazon Simple Storage Service (Amazon S3)
	// data.
	S3Encryption []*S3Encryption `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 EncryptionConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EncryptionConfiguration) GoString() string {
	return s.String()
}

// SetCloudWatchEncryption sets the CloudWatchEncryption field's value.
func (s *EncryptionConfiguration) SetCloudWatchEncryption(v *CloudWatchEncryption) *EncryptionConfiguration {
	s.CloudWatchEncryption = v
	return s
}

// SetJobBookmarksEncryption sets the JobBookmarksEncryption field's value.
func (s *EncryptionConfiguration) SetJobBookmarksEncryption(v *JobBookmarksEncryption) *EncryptionConfiguration {
	s.JobBookmarksEncryption = v
	return s
}

// SetS3Encryption sets the S3Encryption field's value.
func (s *EncryptionConfiguration) SetS3Encryption(v []*S3Encryption) *EncryptionConfiguration {
	s.S3Encryption = v
	return s
}

// An encryption operation failed.
type EncryptionException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EncryptionException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EncryptionException) GoString() string {
	return s.String()
}

func newErrorEncryptionException(v protocol.ResponseMetadata) error {
	return &EncryptionException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *EncryptionException) Code() string {
	return "GlueEncryptionException"
}

// Message returns the exception's message.
func (s *EncryptionException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *EncryptionException) OrigErr() error {
	return nil
}

func (s *EncryptionException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *EncryptionException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *EncryptionException) RequestID() string {
	return s.RespMetadata.RequestID
}

// A specified entity does not exist
type EntityNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// Indicates whether or not the exception relates to a federated source.
	FromFederationSource *bool `type:"boolean"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EntityNotFoundException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EntityNotFoundException) GoString() string {
	return s.String()
}

func newErrorEntityNotFoundException(v protocol.ResponseMetadata) error {
	return &EntityNotFoundException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *EntityNotFoundException) Code() string {
	return "EntityNotFoundException"
}

// Message returns the exception's message.
func (s *EntityNotFoundException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *EntityNotFoundException) OrigErr() error {
	return nil
}

func (s *EntityNotFoundException) 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 *EntityNotFoundException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *EntityNotFoundException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Contains details about an error.
type ErrorDetail struct {
	_ struct{} `type:"structure"`

	// The code associated with this error.
	ErrorCode *string `min:"1" type:"string"`

	// A message describing the error.
	ErrorMessage *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 ErrorDetail) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ErrorDetail) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *ErrorDetail) SetErrorCode(v string) *ErrorDetail {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *ErrorDetail) SetErrorMessage(v string) *ErrorDetail {
	s.ErrorMessage = &v
	return s
}

// An object containing error details.
type ErrorDetails struct {
	_ struct{} `type:"structure"`

	// The error code for an error.
	ErrorCode *string `type:"string"`

	// The error message for an error.
	ErrorMessage *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 ErrorDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ErrorDetails) GoString() string {
	return s.String()
}

// SetErrorCode sets the ErrorCode field's value.
func (s *ErrorDetails) SetErrorCode(v string) *ErrorDetails {
	s.ErrorCode = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *ErrorDetails) SetErrorMessage(v string) *ErrorDetails {
	s.ErrorMessage = &v
	return s
}

// Specifies your data quality evaluation criteria.
type EvaluateDataQuality struct {
	_ struct{} `type:"structure"`

	// The inputs of your data quality evaluation.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data quality evaluation.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The output of your data quality evaluation.
	Output *string `type:"string" enum:"DQTransformOutput_"`

	// Options to configure how your results are published.
	PublishingOptions *DQResultsPublishingOptions `type:"structure"`

	// The ruleset for your data quality evaluation.
	//
	// Ruleset is a required field
	Ruleset *string `min:"1" type:"string" required:"true"`

	// Options to configure how your job will stop if your data quality evaluation
	// fails.
	StopJobOnFailureOptions *DQStopJobOnFailureOptions `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluateDataQuality) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluateDataQuality) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EvaluateDataQuality) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EvaluateDataQuality"}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Ruleset == nil {
		invalidParams.Add(request.NewErrParamRequired("Ruleset"))
	}
	if s.Ruleset != nil && len(*s.Ruleset) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Ruleset", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInputs sets the Inputs field's value.
func (s *EvaluateDataQuality) SetInputs(v []*string) *EvaluateDataQuality {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *EvaluateDataQuality) SetName(v string) *EvaluateDataQuality {
	s.Name = &v
	return s
}

// SetOutput sets the Output field's value.
func (s *EvaluateDataQuality) SetOutput(v string) *EvaluateDataQuality {
	s.Output = &v
	return s
}

// SetPublishingOptions sets the PublishingOptions field's value.
func (s *EvaluateDataQuality) SetPublishingOptions(v *DQResultsPublishingOptions) *EvaluateDataQuality {
	s.PublishingOptions = v
	return s
}

// SetRuleset sets the Ruleset field's value.
func (s *EvaluateDataQuality) SetRuleset(v string) *EvaluateDataQuality {
	s.Ruleset = &v
	return s
}

// SetStopJobOnFailureOptions sets the StopJobOnFailureOptions field's value.
func (s *EvaluateDataQuality) SetStopJobOnFailureOptions(v *DQStopJobOnFailureOptions) *EvaluateDataQuality {
	s.StopJobOnFailureOptions = v
	return s
}

// Specifies your data quality evaluation criteria.
type EvaluateDataQualityMultiFrame struct {
	_ struct{} `type:"structure"`

	// The aliases of all data sources except primary.
	AdditionalDataSources map[string]*string `type:"map"`

	// Options to configure runtime behavior of the transform.
	AdditionalOptions map[string]*string `type:"map"`

	// The inputs of your data quality evaluation. The first input in this list
	// is the primary data source.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data quality evaluation.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Options to configure how your results are published.
	PublishingOptions *DQResultsPublishingOptions `type:"structure"`

	// The ruleset for your data quality evaluation.
	//
	// Ruleset is a required field
	Ruleset *string `min:"1" type:"string" required:"true"`

	// Options to configure how your job will stop if your data quality evaluation
	// fails.
	StopJobOnFailureOptions *DQStopJobOnFailureOptions `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluateDataQualityMultiFrame) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluateDataQualityMultiFrame) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EvaluateDataQualityMultiFrame) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EvaluateDataQualityMultiFrame"}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Ruleset == nil {
		invalidParams.Add(request.NewErrParamRequired("Ruleset"))
	}
	if s.Ruleset != nil && len(*s.Ruleset) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Ruleset", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalDataSources sets the AdditionalDataSources field's value.
func (s *EvaluateDataQualityMultiFrame) SetAdditionalDataSources(v map[string]*string) *EvaluateDataQualityMultiFrame {
	s.AdditionalDataSources = v
	return s
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *EvaluateDataQualityMultiFrame) SetAdditionalOptions(v map[string]*string) *EvaluateDataQualityMultiFrame {
	s.AdditionalOptions = v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *EvaluateDataQualityMultiFrame) SetInputs(v []*string) *EvaluateDataQualityMultiFrame {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *EvaluateDataQualityMultiFrame) SetName(v string) *EvaluateDataQualityMultiFrame {
	s.Name = &v
	return s
}

// SetPublishingOptions sets the PublishingOptions field's value.
func (s *EvaluateDataQualityMultiFrame) SetPublishingOptions(v *DQResultsPublishingOptions) *EvaluateDataQualityMultiFrame {
	s.PublishingOptions = v
	return s
}

// SetRuleset sets the Ruleset field's value.
func (s *EvaluateDataQualityMultiFrame) SetRuleset(v string) *EvaluateDataQualityMultiFrame {
	s.Ruleset = &v
	return s
}

// SetStopJobOnFailureOptions sets the StopJobOnFailureOptions field's value.
func (s *EvaluateDataQualityMultiFrame) SetStopJobOnFailureOptions(v *DQStopJobOnFailureOptions) *EvaluateDataQualityMultiFrame {
	s.StopJobOnFailureOptions = v
	return s
}

// Evaluation metrics provide an estimate of the quality of your machine learning
// transform.
type EvaluationMetrics struct {
	_ struct{} `type:"structure"`

	// The evaluation metrics for the find matches algorithm.
	FindMatchesMetrics *FindMatchesMetrics `type:"structure"`

	// The type of machine learning transform.
	//
	// TransformType is a required field
	TransformType *string `type:"string" required:"true" enum:"TransformType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationMetrics) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EvaluationMetrics) GoString() string {
	return s.String()
}

// SetFindMatchesMetrics sets the FindMatchesMetrics field's value.
func (s *EvaluationMetrics) SetFindMatchesMetrics(v *FindMatchesMetrics) *EvaluationMetrics {
	s.FindMatchesMetrics = v
	return s
}

// SetTransformType sets the TransformType field's value.
func (s *EvaluationMetrics) SetTransformType(v string) *EvaluationMetrics {
	s.TransformType = &v
	return s
}

// Batch condition that must be met (specified number of events received or
// batch time window expired) before EventBridge event trigger fires.
type EventBatchingCondition struct {
	_ struct{} `type:"structure"`

	// Number of events that must be received from Amazon EventBridge before EventBridge
	// event trigger fires.
	//
	// BatchSize is a required field
	BatchSize *int64 `min:"1" type:"integer" required:"true"`

	// Window of time in seconds after which EventBridge event trigger fires. Window
	// starts when first event is received.
	BatchWindow *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 EventBatchingCondition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EventBatchingCondition) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *EventBatchingCondition) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "EventBatchingCondition"}
	if s.BatchSize == nil {
		invalidParams.Add(request.NewErrParamRequired("BatchSize"))
	}
	if s.BatchSize != nil && *s.BatchSize < 1 {
		invalidParams.Add(request.NewErrParamMinValue("BatchSize", 1))
	}
	if s.BatchWindow != nil && *s.BatchWindow < 1 {
		invalidParams.Add(request.NewErrParamMinValue("BatchWindow", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBatchSize sets the BatchSize field's value.
func (s *EventBatchingCondition) SetBatchSize(v int64) *EventBatchingCondition {
	s.BatchSize = &v
	return s
}

// SetBatchWindow sets the BatchWindow field's value.
func (s *EventBatchingCondition) SetBatchWindow(v int64) *EventBatchingCondition {
	s.BatchWindow = &v
	return s
}

// An execution property of a job.
type ExecutionProperty struct {
	_ struct{} `type:"structure"`

	// The maximum number of concurrent runs allowed for the job. The default is
	// 1. An error is returned when this threshold is reached. The maximum value
	// you can specify is controlled by a service limit.
	MaxConcurrentRuns *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 ExecutionProperty) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExecutionProperty) GoString() string {
	return s.String()
}

// SetMaxConcurrentRuns sets the MaxConcurrentRuns field's value.
func (s *ExecutionProperty) SetMaxConcurrentRuns(v int64) *ExecutionProperty {
	s.MaxConcurrentRuns = &v
	return s
}

// Specifies configuration properties for an exporting labels task run.
type ExportLabelsTaskRunProperties struct {
	_ struct{} `type:"structure"`

	// The Amazon Simple Storage Service (Amazon S3) path where you will export
	// the labels.
	OutputS3Path *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 ExportLabelsTaskRunProperties) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ExportLabelsTaskRunProperties) GoString() string {
	return s.String()
}

// SetOutputS3Path sets the OutputS3Path field's value.
func (s *ExportLabelsTaskRunProperties) SetOutputS3Path(v string) *ExportLabelsTaskRunProperties {
	s.OutputS3Path = &v
	return s
}

// A database that points to an entity outside the Glue Data Catalog.
type FederatedDatabase struct {
	_ struct{} `type:"structure"`

	// The name of the connection to the external metastore.
	ConnectionName *string `min:"1" type:"string"`

	// A unique identifier for the federated database.
	Identifier *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 FederatedDatabase) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FederatedDatabase) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FederatedDatabase) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FederatedDatabase"}
	if s.ConnectionName != nil && len(*s.ConnectionName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ConnectionName", 1))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConnectionName sets the ConnectionName field's value.
func (s *FederatedDatabase) SetConnectionName(v string) *FederatedDatabase {
	s.ConnectionName = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *FederatedDatabase) SetIdentifier(v string) *FederatedDatabase {
	s.Identifier = &v
	return s
}

// A federated resource already exists.
type FederatedResourceAlreadyExistsException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The associated Glue resource already exists.
	AssociatedGlueResource *string `min:"1" type:"string"`

	// The message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FederatedResourceAlreadyExistsException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FederatedResourceAlreadyExistsException) GoString() string {
	return s.String()
}

func newErrorFederatedResourceAlreadyExistsException(v protocol.ResponseMetadata) error {
	return &FederatedResourceAlreadyExistsException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *FederatedResourceAlreadyExistsException) Code() string {
	return "FederatedResourceAlreadyExistsException"
}

// Message returns the exception's message.
func (s *FederatedResourceAlreadyExistsException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *FederatedResourceAlreadyExistsException) OrigErr() error {
	return nil
}

func (s *FederatedResourceAlreadyExistsException) 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 *FederatedResourceAlreadyExistsException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *FederatedResourceAlreadyExistsException) RequestID() string {
	return s.RespMetadata.RequestID
}

// A table that points to an entity outside the Glue Data Catalog.
type FederatedTable struct {
	_ struct{} `type:"structure"`

	// The name of the connection to the external metastore.
	ConnectionName *string `min:"1" type:"string"`

	// A unique identifier for the federated database.
	DatabaseIdentifier *string `min:"1" type:"string"`

	// A unique identifier for the federated table.
	Identifier *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 FederatedTable) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FederatedTable) GoString() string {
	return s.String()
}

// SetConnectionName sets the ConnectionName field's value.
func (s *FederatedTable) SetConnectionName(v string) *FederatedTable {
	s.ConnectionName = &v
	return s
}

// SetDatabaseIdentifier sets the DatabaseIdentifier field's value.
func (s *FederatedTable) SetDatabaseIdentifier(v string) *FederatedTable {
	s.DatabaseIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *FederatedTable) SetIdentifier(v string) *FederatedTable {
	s.Identifier = &v
	return s
}

// A federation source failed.
type FederationSourceException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// The error code of the problem.
	FederationSourceErrorCode *string `type:"string" enum:"FederationSourceErrorCode"`

	// The message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FederationSourceException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FederationSourceException) GoString() string {
	return s.String()
}

func newErrorFederationSourceException(v protocol.ResponseMetadata) error {
	return &FederationSourceException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *FederationSourceException) Code() string {
	return "FederationSourceException"
}

// Message returns the exception's message.
func (s *FederationSourceException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *FederationSourceException) OrigErr() error {
	return nil
}

func (s *FederationSourceException) 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 *FederationSourceException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *FederationSourceException) RequestID() string {
	return s.RespMetadata.RequestID
}

// A federation source failed, but the operation may be retried.
type FederationSourceRetryableException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FederationSourceRetryableException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FederationSourceRetryableException) GoString() string {
	return s.String()
}

func newErrorFederationSourceRetryableException(v protocol.ResponseMetadata) error {
	return &FederationSourceRetryableException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *FederationSourceRetryableException) Code() string {
	return "FederationSourceRetryableException"
}

// Message returns the exception's message.
func (s *FederationSourceRetryableException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *FederationSourceRetryableException) OrigErr() error {
	return nil
}

func (s *FederationSourceRetryableException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *FederationSourceRetryableException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *FederationSourceRetryableException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Specifies a transform that locates records in the dataset that have missing
// values and adds a new field with a value determined by imputation. The input
// data set is used to train the machine learning model that determines what
// the missing value should be.
type FillMissingValues struct {
	_ struct{} `type:"structure"`

	// A JSON path to a variable in the data structure for the dataset that is filled.
	FilledPath *string `type:"string"`

	// A JSON path to a variable in the data structure for the dataset that is imputed.
	//
	// ImputedPath is a required field
	ImputedPath *string `type:"string" required:"true"`

	// The data inputs identified by their node names.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *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 FillMissingValues) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FillMissingValues) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FillMissingValues) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FillMissingValues"}
	if s.ImputedPath == nil {
		invalidParams.Add(request.NewErrParamRequired("ImputedPath"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilledPath sets the FilledPath field's value.
func (s *FillMissingValues) SetFilledPath(v string) *FillMissingValues {
	s.FilledPath = &v
	return s
}

// SetImputedPath sets the ImputedPath field's value.
func (s *FillMissingValues) SetImputedPath(v string) *FillMissingValues {
	s.ImputedPath = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *FillMissingValues) SetInputs(v []*string) *FillMissingValues {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *FillMissingValues) SetName(v string) *FillMissingValues {
	s.Name = &v
	return s
}

// Specifies a transform that splits a dataset into two, based on a filter condition.
type Filter struct {
	_ struct{} `type:"structure"`

	// Specifies a filter expression.
	//
	// Filters is a required field
	Filters []*FilterExpression `type:"list" required:"true"`

	// The data inputs identified by their node names.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The operator used to filter rows by comparing the key value to a specified
	// value.
	//
	// LogicalOperator is a required field
	LogicalOperator *string `type:"string" required:"true" enum:"FilterLogicalOperator"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *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 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.Filters == nil {
		invalidParams.Add(request.NewErrParamRequired("Filters"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.LogicalOperator == nil {
		invalidParams.Add(request.NewErrParamRequired("LogicalOperator"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *Filter) SetFilters(v []*FilterExpression) *Filter {
	s.Filters = v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *Filter) SetInputs(v []*string) *Filter {
	s.Inputs = v
	return s
}

// SetLogicalOperator sets the LogicalOperator field's value.
func (s *Filter) SetLogicalOperator(v string) *Filter {
	s.LogicalOperator = &v
	return s
}

// SetName sets the Name field's value.
func (s *Filter) SetName(v string) *Filter {
	s.Name = &v
	return s
}

// Specifies a filter expression.
type FilterExpression struct {
	_ struct{} `type:"structure"`

	// Whether the expression is to be negated.
	Negated *bool `type:"boolean"`

	// The type of operation to perform in the expression.
	//
	// Operation is a required field
	Operation *string `type:"string" required:"true" enum:"FilterOperation"`

	// A list of filter values.
	//
	// Values is a required field
	Values []*FilterValue `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 FilterExpression) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FilterExpression) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterExpression) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterExpression"}
	if s.Operation == nil {
		invalidParams.Add(request.NewErrParamRequired("Operation"))
	}
	if s.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}
	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
}

// SetNegated sets the Negated field's value.
func (s *FilterExpression) SetNegated(v bool) *FilterExpression {
	s.Negated = &v
	return s
}

// SetOperation sets the Operation field's value.
func (s *FilterExpression) SetOperation(v string) *FilterExpression {
	s.Operation = &v
	return s
}

// SetValues sets the Values field's value.
func (s *FilterExpression) SetValues(v []*FilterValue) *FilterExpression {
	s.Values = v
	return s
}

// Represents a single entry in the list of values for a FilterExpression.
type FilterValue struct {
	_ struct{} `type:"structure"`

	// The type of filter value.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"FilterValueType"`

	// The value to be associated.
	//
	// Value is a required field
	Value []*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 FilterValue) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FilterValue) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterValue) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterValue"}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetType sets the Type field's value.
func (s *FilterValue) SetType(v string) *FilterValue {
	s.Type = &v
	return s
}

// SetValue sets the Value field's value.
func (s *FilterValue) SetValue(v []*string) *FilterValue {
	s.Value = v
	return s
}

// The evaluation metrics for the find matches algorithm. The quality of your
// machine learning transform is measured by getting your transform to predict
// some matches and comparing the results to known matches from the same dataset.
// The quality metrics are based on a subset of your data, so they are not precise.
type FindMatchesMetrics struct {
	_ struct{} `type:"structure"`

	// The area under the precision/recall curve (AUPRC) is a single number measuring
	// the overall quality of the transform, that is independent of the choice made
	// for precision vs. recall. Higher values indicate that you have a more attractive
	// precision vs. recall tradeoff.
	//
	// For more information, see Precision and recall (https://en.wikipedia.org/wiki/Precision_and_recall)
	// in Wikipedia.
	AreaUnderPRCurve *float64 `type:"double"`

	// A list of ColumnImportance structures containing column importance metrics,
	// sorted in order of descending importance.
	ColumnImportances []*ColumnImportance `type:"list"`

	// The confusion matrix shows you what your transform is predicting accurately
	// and what types of errors it is making.
	//
	// For more information, see Confusion matrix (https://en.wikipedia.org/wiki/Confusion_matrix)
	// in Wikipedia.
	ConfusionMatrix *ConfusionMatrix `type:"structure"`

	// The maximum F1 metric indicates the transform's accuracy between 0 and 1,
	// where 1 is the best accuracy.
	//
	// For more information, see F1 score (https://en.wikipedia.org/wiki/F1_score)
	// in Wikipedia.
	F1 *float64 `type:"double"`

	// The precision metric indicates when often your transform is correct when
	// it predicts a match. Specifically, it measures how well the transform finds
	// true positives from the total true positives possible.
	//
	// For more information, see Precision and recall (https://en.wikipedia.org/wiki/Precision_and_recall)
	// in Wikipedia.
	Precision *float64 `type:"double"`

	// The recall metric indicates that for an actual match, how often your transform
	// predicts the match. Specifically, it measures how well the transform finds
	// true positives from the total records in the source data.
	//
	// For more information, see Precision and recall (https://en.wikipedia.org/wiki/Precision_and_recall)
	// in Wikipedia.
	Recall *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 FindMatchesMetrics) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FindMatchesMetrics) GoString() string {
	return s.String()
}

// SetAreaUnderPRCurve sets the AreaUnderPRCurve field's value.
func (s *FindMatchesMetrics) SetAreaUnderPRCurve(v float64) *FindMatchesMetrics {
	s.AreaUnderPRCurve = &v
	return s
}

// SetColumnImportances sets the ColumnImportances field's value.
func (s *FindMatchesMetrics) SetColumnImportances(v []*ColumnImportance) *FindMatchesMetrics {
	s.ColumnImportances = v
	return s
}

// SetConfusionMatrix sets the ConfusionMatrix field's value.
func (s *FindMatchesMetrics) SetConfusionMatrix(v *ConfusionMatrix) *FindMatchesMetrics {
	s.ConfusionMatrix = v
	return s
}

// SetF1 sets the F1 field's value.
func (s *FindMatchesMetrics) SetF1(v float64) *FindMatchesMetrics {
	s.F1 = &v
	return s
}

// SetPrecision sets the Precision field's value.
func (s *FindMatchesMetrics) SetPrecision(v float64) *FindMatchesMetrics {
	s.Precision = &v
	return s
}

// SetRecall sets the Recall field's value.
func (s *FindMatchesMetrics) SetRecall(v float64) *FindMatchesMetrics {
	s.Recall = &v
	return s
}

// The parameters to configure the find matches transform.
type FindMatchesParameters struct {
	_ struct{} `type:"structure"`

	// The value that is selected when tuning your transform for a balance between
	// accuracy and cost. A value of 0.5 means that the system balances accuracy
	// and cost concerns. A value of 1.0 means a bias purely for accuracy, which
	// typically results in a higher cost, sometimes substantially higher. A value
	// of 0.0 means a bias purely for cost, which results in a less accurate FindMatches
	// transform, sometimes with unacceptable accuracy.
	//
	// Accuracy measures how well the transform finds true positives and true negatives.
	// Increasing accuracy requires more machine resources and cost. But it also
	// results in increased recall.
	//
	// Cost measures how many compute resources, and thus money, are consumed to
	// run the transform.
	AccuracyCostTradeoff *float64 `type:"double"`

	// The value to switch on or off to force the output to match the provided labels
	// from users. If the value is True, the find matches transform forces the output
	// to match the provided labels. The results override the normal conflation
	// results. If the value is False, the find matches transform does not ensure
	// all the labels provided are respected, and the results rely on the trained
	// model.
	//
	// Note that setting this value to true may increase the conflation execution
	// time.
	EnforceProvidedLabels *bool `type:"boolean"`

	// The value selected when tuning your transform for a balance between precision
	// and recall. A value of 0.5 means no preference; a value of 1.0 means a bias
	// purely for precision, and a value of 0.0 means a bias for recall. Because
	// this is a tradeoff, choosing values close to 1.0 means very low recall, and
	// choosing values close to 0.0 results in very low precision.
	//
	// The precision metric indicates how often your model is correct when it predicts
	// a match.
	//
	// The recall metric indicates that for an actual match, how often your model
	// predicts the match.
	PrecisionRecallTradeoff *float64 `type:"double"`

	// The name of a column that uniquely identifies rows in the source table. Used
	// to help identify matching records.
	PrimaryKeyColumnName *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 FindMatchesParameters) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FindMatchesParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FindMatchesParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FindMatchesParameters"}
	if s.PrimaryKeyColumnName != nil && len(*s.PrimaryKeyColumnName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PrimaryKeyColumnName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAccuracyCostTradeoff sets the AccuracyCostTradeoff field's value.
func (s *FindMatchesParameters) SetAccuracyCostTradeoff(v float64) *FindMatchesParameters {
	s.AccuracyCostTradeoff = &v
	return s
}

// SetEnforceProvidedLabels sets the EnforceProvidedLabels field's value.
func (s *FindMatchesParameters) SetEnforceProvidedLabels(v bool) *FindMatchesParameters {
	s.EnforceProvidedLabels = &v
	return s
}

// SetPrecisionRecallTradeoff sets the PrecisionRecallTradeoff field's value.
func (s *FindMatchesParameters) SetPrecisionRecallTradeoff(v float64) *FindMatchesParameters {
	s.PrecisionRecallTradeoff = &v
	return s
}

// SetPrimaryKeyColumnName sets the PrimaryKeyColumnName field's value.
func (s *FindMatchesParameters) SetPrimaryKeyColumnName(v string) *FindMatchesParameters {
	s.PrimaryKeyColumnName = &v
	return s
}

// Specifies configuration properties for a Find Matches task run.
type FindMatchesTaskRunProperties struct {
	_ struct{} `type:"structure"`

	// The job ID for the Find Matches task run.
	JobId *string `min:"1" type:"string"`

	// The name assigned to the job for the Find Matches task run.
	JobName *string `min:"1" type:"string"`

	// The job run ID for the Find Matches task run.
	JobRunId *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 FindMatchesTaskRunProperties) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FindMatchesTaskRunProperties) GoString() string {
	return s.String()
}

// SetJobId sets the JobId field's value.
func (s *FindMatchesTaskRunProperties) SetJobId(v string) *FindMatchesTaskRunProperties {
	s.JobId = &v
	return s
}

// SetJobName sets the JobName field's value.
func (s *FindMatchesTaskRunProperties) SetJobName(v string) *FindMatchesTaskRunProperties {
	s.JobName = &v
	return s
}

// SetJobRunId sets the JobRunId field's value.
func (s *FindMatchesTaskRunProperties) SetJobRunId(v string) *FindMatchesTaskRunProperties {
	s.JobRunId = &v
	return s
}

type GetBlueprintInput struct {
	_ struct{} `type:"structure"`

	// Specifies whether or not to include the blueprint in the response.
	IncludeBlueprint *bool `type:"boolean"`

	// Specifies whether or not to include the parameter specification.
	IncludeParameterSpec *bool `type:"boolean"`

	// The name of the blueprint.
	//
	// 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 GetBlueprintInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBlueprintInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetBlueprintInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetBlueprintInput"}
	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
}

// SetIncludeBlueprint sets the IncludeBlueprint field's value.
func (s *GetBlueprintInput) SetIncludeBlueprint(v bool) *GetBlueprintInput {
	s.IncludeBlueprint = &v
	return s
}

// SetIncludeParameterSpec sets the IncludeParameterSpec field's value.
func (s *GetBlueprintInput) SetIncludeParameterSpec(v bool) *GetBlueprintInput {
	s.IncludeParameterSpec = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetBlueprintInput) SetName(v string) *GetBlueprintInput {
	s.Name = &v
	return s
}

type GetBlueprintOutput struct {
	_ struct{} `type:"structure"`

	// Returns a Blueprint object.
	Blueprint *Blueprint `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBlueprintOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBlueprintOutput) GoString() string {
	return s.String()
}

// SetBlueprint sets the Blueprint field's value.
func (s *GetBlueprintOutput) SetBlueprint(v *Blueprint) *GetBlueprintOutput {
	s.Blueprint = v
	return s
}

type GetBlueprintRunInput struct {
	_ struct{} `type:"structure"`

	// The name of the blueprint.
	//
	// BlueprintName is a required field
	BlueprintName *string `min:"1" type:"string" required:"true"`

	// The run ID for the blueprint run you want to retrieve.
	//
	// RunId is a required field
	RunId *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 GetBlueprintRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBlueprintRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetBlueprintRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetBlueprintRunInput"}
	if s.BlueprintName == nil {
		invalidParams.Add(request.NewErrParamRequired("BlueprintName"))
	}
	if s.BlueprintName != nil && len(*s.BlueprintName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("BlueprintName", 1))
	}
	if s.RunId == nil {
		invalidParams.Add(request.NewErrParamRequired("RunId"))
	}
	if s.RunId != nil && len(*s.RunId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RunId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBlueprintName sets the BlueprintName field's value.
func (s *GetBlueprintRunInput) SetBlueprintName(v string) *GetBlueprintRunInput {
	s.BlueprintName = &v
	return s
}

// SetRunId sets the RunId field's value.
func (s *GetBlueprintRunInput) SetRunId(v string) *GetBlueprintRunInput {
	s.RunId = &v
	return s
}

type GetBlueprintRunOutput struct {
	_ struct{} `type:"structure"`

	// Returns a BlueprintRun object.
	BlueprintRun *BlueprintRun `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBlueprintRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBlueprintRunOutput) GoString() string {
	return s.String()
}

// SetBlueprintRun sets the BlueprintRun field's value.
func (s *GetBlueprintRunOutput) SetBlueprintRun(v *BlueprintRun) *GetBlueprintRunOutput {
	s.BlueprintRun = v
	return s
}

type GetBlueprintRunsInput struct {
	_ struct{} `type:"structure"`

	// The name of the blueprint.
	//
	// BlueprintName is a required field
	BlueprintName *string `min:"1" type:"string" required:"true"`

	// The maximum size of a list to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation 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 GetBlueprintRunsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBlueprintRunsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetBlueprintRunsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetBlueprintRunsInput"}
	if s.BlueprintName == nil {
		invalidParams.Add(request.NewErrParamRequired("BlueprintName"))
	}
	if s.BlueprintName != nil && len(*s.BlueprintName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("BlueprintName", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBlueprintName sets the BlueprintName field's value.
func (s *GetBlueprintRunsInput) SetBlueprintName(v string) *GetBlueprintRunsInput {
	s.BlueprintName = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetBlueprintRunsInput) SetMaxResults(v int64) *GetBlueprintRunsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetBlueprintRunsInput) SetNextToken(v string) *GetBlueprintRunsInput {
	s.NextToken = &v
	return s
}

type GetBlueprintRunsOutput struct {
	_ struct{} `type:"structure"`

	// Returns a list of BlueprintRun objects.
	BlueprintRuns []*BlueprintRun `type:"list"`

	// A continuation token, if not all blueprint runs have been returned.
	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 GetBlueprintRunsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetBlueprintRunsOutput) GoString() string {
	return s.String()
}

// SetBlueprintRuns sets the BlueprintRuns field's value.
func (s *GetBlueprintRunsOutput) SetBlueprintRuns(v []*BlueprintRun) *GetBlueprintRunsOutput {
	s.BlueprintRuns = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetBlueprintRunsOutput) SetNextToken(v string) *GetBlueprintRunsOutput {
	s.NextToken = &v
	return s
}

type GetCatalogImportStatusInput struct {
	_ struct{} `type:"structure"`

	// The ID of the catalog to migrate. Currently, this should be the Amazon Web
	// Services account ID.
	CatalogId *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 GetCatalogImportStatusInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCatalogImportStatusInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetCatalogImportStatusInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetCatalogImportStatusInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetCatalogImportStatusInput) SetCatalogId(v string) *GetCatalogImportStatusInput {
	s.CatalogId = &v
	return s
}

type GetCatalogImportStatusOutput struct {
	_ struct{} `type:"structure"`

	// The status of the specified catalog migration.
	ImportStatus *CatalogImportStatus `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCatalogImportStatusOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCatalogImportStatusOutput) GoString() string {
	return s.String()
}

// SetImportStatus sets the ImportStatus field's value.
func (s *GetCatalogImportStatusOutput) SetImportStatus(v *CatalogImportStatus) *GetCatalogImportStatusOutput {
	s.ImportStatus = v
	return s
}

type GetClassifierInput struct {
	_ struct{} `type:"structure"`

	// Name of the classifier to retrieve.
	//
	// 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 GetClassifierInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetClassifierInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetClassifierInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetClassifierInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *GetClassifierInput) SetName(v string) *GetClassifierInput {
	s.Name = &v
	return s
}

type GetClassifierOutput struct {
	_ struct{} `type:"structure"`

	// The requested classifier.
	Classifier *Classifier `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetClassifierOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetClassifierOutput) GoString() string {
	return s.String()
}

// SetClassifier sets the Classifier field's value.
func (s *GetClassifierOutput) SetClassifier(v *Classifier) *GetClassifierOutput {
	s.Classifier = v
	return s
}

type GetClassifiersInput struct {
	_ struct{} `type:"structure"`

	// The size of the list to return (optional).
	MaxResults *int64 `min:"1" type:"integer"`

	// An optional continuation token.
	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 GetClassifiersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetClassifiersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetClassifiersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetClassifiersInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetClassifiersInput) SetMaxResults(v int64) *GetClassifiersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetClassifiersInput) SetNextToken(v string) *GetClassifiersInput {
	s.NextToken = &v
	return s
}

type GetClassifiersOutput struct {
	_ struct{} `type:"structure"`

	// The requested list of classifier objects.
	Classifiers []*Classifier `type:"list"`

	// A continuation token.
	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 GetClassifiersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetClassifiersOutput) GoString() string {
	return s.String()
}

// SetClassifiers sets the Classifiers field's value.
func (s *GetClassifiersOutput) SetClassifiers(v []*Classifier) *GetClassifiersOutput {
	s.Classifiers = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetClassifiersOutput) SetNextToken(v string) *GetClassifiersOutput {
	s.NextToken = &v
	return s
}

type GetColumnStatisticsForPartitionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the partitions in question reside. If none
	// is supplied, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// A list of the column names.
	//
	// ColumnNames is a required field
	ColumnNames []*string `type:"list" required:"true"`

	// The name of the catalog database where the partitions reside.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// A list of partition values identifying the partition.
	//
	// PartitionValues is a required field
	PartitionValues []*string `type:"list" required:"true"`

	// The name of the partitions' table.
	//
	// TableName is a required field
	TableName *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 GetColumnStatisticsForPartitionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetColumnStatisticsForPartitionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetColumnStatisticsForPartitionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetColumnStatisticsForPartitionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.ColumnNames == nil {
		invalidParams.Add(request.NewErrParamRequired("ColumnNames"))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.PartitionValues == nil {
		invalidParams.Add(request.NewErrParamRequired("PartitionValues"))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetColumnStatisticsForPartitionInput) SetCatalogId(v string) *GetColumnStatisticsForPartitionInput {
	s.CatalogId = &v
	return s
}

// SetColumnNames sets the ColumnNames field's value.
func (s *GetColumnStatisticsForPartitionInput) SetColumnNames(v []*string) *GetColumnStatisticsForPartitionInput {
	s.ColumnNames = v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetColumnStatisticsForPartitionInput) SetDatabaseName(v string) *GetColumnStatisticsForPartitionInput {
	s.DatabaseName = &v
	return s
}

// SetPartitionValues sets the PartitionValues field's value.
func (s *GetColumnStatisticsForPartitionInput) SetPartitionValues(v []*string) *GetColumnStatisticsForPartitionInput {
	s.PartitionValues = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *GetColumnStatisticsForPartitionInput) SetTableName(v string) *GetColumnStatisticsForPartitionInput {
	s.TableName = &v
	return s
}

type GetColumnStatisticsForPartitionOutput struct {
	_ struct{} `type:"structure"`

	// List of ColumnStatistics that failed to be retrieved.
	ColumnStatisticsList []*ColumnStatistics `type:"list"`

	// Error occurred during retrieving column statistics data.
	Errors []*ColumnError `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 GetColumnStatisticsForPartitionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetColumnStatisticsForPartitionOutput) GoString() string {
	return s.String()
}

// SetColumnStatisticsList sets the ColumnStatisticsList field's value.
func (s *GetColumnStatisticsForPartitionOutput) SetColumnStatisticsList(v []*ColumnStatistics) *GetColumnStatisticsForPartitionOutput {
	s.ColumnStatisticsList = v
	return s
}

// SetErrors sets the Errors field's value.
func (s *GetColumnStatisticsForPartitionOutput) SetErrors(v []*ColumnError) *GetColumnStatisticsForPartitionOutput {
	s.Errors = v
	return s
}

type GetColumnStatisticsForTableInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the partitions in question reside. If none
	// is supplied, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// A list of the column names.
	//
	// ColumnNames is a required field
	ColumnNames []*string `type:"list" required:"true"`

	// The name of the catalog database where the partitions reside.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the partitions' table.
	//
	// TableName is a required field
	TableName *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 GetColumnStatisticsForTableInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetColumnStatisticsForTableInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetColumnStatisticsForTableInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetColumnStatisticsForTableInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.ColumnNames == nil {
		invalidParams.Add(request.NewErrParamRequired("ColumnNames"))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetColumnStatisticsForTableInput) SetCatalogId(v string) *GetColumnStatisticsForTableInput {
	s.CatalogId = &v
	return s
}

// SetColumnNames sets the ColumnNames field's value.
func (s *GetColumnStatisticsForTableInput) SetColumnNames(v []*string) *GetColumnStatisticsForTableInput {
	s.ColumnNames = v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetColumnStatisticsForTableInput) SetDatabaseName(v string) *GetColumnStatisticsForTableInput {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *GetColumnStatisticsForTableInput) SetTableName(v string) *GetColumnStatisticsForTableInput {
	s.TableName = &v
	return s
}

type GetColumnStatisticsForTableOutput struct {
	_ struct{} `type:"structure"`

	// List of ColumnStatistics.
	ColumnStatisticsList []*ColumnStatistics `type:"list"`

	// List of ColumnStatistics that failed to be retrieved.
	Errors []*ColumnError `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 GetColumnStatisticsForTableOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetColumnStatisticsForTableOutput) GoString() string {
	return s.String()
}

// SetColumnStatisticsList sets the ColumnStatisticsList field's value.
func (s *GetColumnStatisticsForTableOutput) SetColumnStatisticsList(v []*ColumnStatistics) *GetColumnStatisticsForTableOutput {
	s.ColumnStatisticsList = v
	return s
}

// SetErrors sets the Errors field's value.
func (s *GetColumnStatisticsForTableOutput) SetErrors(v []*ColumnError) *GetColumnStatisticsForTableOutput {
	s.Errors = v
	return s
}

type GetColumnStatisticsTaskRunInput struct {
	_ struct{} `type:"structure"`

	// The identifier for the particular column statistics task run.
	//
	// ColumnStatisticsTaskRunId is a required field
	ColumnStatisticsTaskRunId *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 GetColumnStatisticsTaskRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetColumnStatisticsTaskRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetColumnStatisticsTaskRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetColumnStatisticsTaskRunInput"}
	if s.ColumnStatisticsTaskRunId == nil {
		invalidParams.Add(request.NewErrParamRequired("ColumnStatisticsTaskRunId"))
	}
	if s.ColumnStatisticsTaskRunId != nil && len(*s.ColumnStatisticsTaskRunId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ColumnStatisticsTaskRunId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumnStatisticsTaskRunId sets the ColumnStatisticsTaskRunId field's value.
func (s *GetColumnStatisticsTaskRunInput) SetColumnStatisticsTaskRunId(v string) *GetColumnStatisticsTaskRunInput {
	s.ColumnStatisticsTaskRunId = &v
	return s
}

type GetColumnStatisticsTaskRunOutput struct {
	_ struct{} `type:"structure"`

	// A ColumnStatisticsTaskRun object representing the details of the column stats
	// run.
	ColumnStatisticsTaskRun *ColumnStatisticsTaskRun `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetColumnStatisticsTaskRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetColumnStatisticsTaskRunOutput) GoString() string {
	return s.String()
}

// SetColumnStatisticsTaskRun sets the ColumnStatisticsTaskRun field's value.
func (s *GetColumnStatisticsTaskRunOutput) SetColumnStatisticsTaskRun(v *ColumnStatisticsTaskRun) *GetColumnStatisticsTaskRunOutput {
	s.ColumnStatisticsTaskRun = v
	return s
}

type GetColumnStatisticsTaskRunsInput struct {
	_ struct{} `type:"structure"`

	// The name of the database where the table resides.
	//
	// DatabaseName is a required field
	DatabaseName *string `type:"string" required:"true"`

	// The maximum size of the response.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation call.
	NextToken *string `type:"string"`

	// The name of the table.
	//
	// TableName is a required field
	TableName *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 GetColumnStatisticsTaskRunsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetColumnStatisticsTaskRunsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetColumnStatisticsTaskRunsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetColumnStatisticsTaskRunsInput"}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetColumnStatisticsTaskRunsInput) SetDatabaseName(v string) *GetColumnStatisticsTaskRunsInput {
	s.DatabaseName = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetColumnStatisticsTaskRunsInput) SetMaxResults(v int64) *GetColumnStatisticsTaskRunsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetColumnStatisticsTaskRunsInput) SetNextToken(v string) *GetColumnStatisticsTaskRunsInput {
	s.NextToken = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *GetColumnStatisticsTaskRunsInput) SetTableName(v string) *GetColumnStatisticsTaskRunsInput {
	s.TableName = &v
	return s
}

type GetColumnStatisticsTaskRunsOutput struct {
	_ struct{} `type:"structure"`

	// A list of column statistics task runs.
	ColumnStatisticsTaskRuns []*ColumnStatisticsTaskRun `type:"list"`

	// A continuation token, if not all task runs have yet been returned.
	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 GetColumnStatisticsTaskRunsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetColumnStatisticsTaskRunsOutput) GoString() string {
	return s.String()
}

// SetColumnStatisticsTaskRuns sets the ColumnStatisticsTaskRuns field's value.
func (s *GetColumnStatisticsTaskRunsOutput) SetColumnStatisticsTaskRuns(v []*ColumnStatisticsTaskRun) *GetColumnStatisticsTaskRunsOutput {
	s.ColumnStatisticsTaskRuns = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetColumnStatisticsTaskRunsOutput) SetNextToken(v string) *GetColumnStatisticsTaskRunsOutput {
	s.NextToken = &v
	return s
}

type GetConnectionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which the connection resides. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// Allows you to retrieve the connection metadata without returning the password.
	// For instance, the Glue console uses this flag to retrieve the connection,
	// and does not display the password. Set this parameter when the caller might
	// not have permission to use the KMS key to decrypt the password, but it does
	// have permission to access the rest of the connection properties.
	HidePassword *bool `type:"boolean"`

	// The name of the connection definition to retrieve.
	//
	// 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 GetConnectionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetConnectionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetConnectionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetConnectionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 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
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetConnectionInput) SetCatalogId(v string) *GetConnectionInput {
	s.CatalogId = &v
	return s
}

// SetHidePassword sets the HidePassword field's value.
func (s *GetConnectionInput) SetHidePassword(v bool) *GetConnectionInput {
	s.HidePassword = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetConnectionInput) SetName(v string) *GetConnectionInput {
	s.Name = &v
	return s
}

type GetConnectionOutput struct {
	_ struct{} `type:"structure"`

	// The requested connection definition.
	Connection *Connection `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetConnectionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetConnectionOutput) GoString() string {
	return s.String()
}

// SetConnection sets the Connection field's value.
func (s *GetConnectionOutput) SetConnection(v *Connection) *GetConnectionOutput {
	s.Connection = v
	return s
}

// Filters the connection definitions that are returned by the GetConnections
// API operation.
type GetConnectionsFilter struct {
	_ struct{} `type:"structure"`

	// The type of connections to return. Currently, SFTP is not supported.
	ConnectionType *string `type:"string" enum:"ConnectionType"`

	// A criteria string that must match the criteria recorded in the connection
	// definition for that connection definition to be returned.
	MatchCriteria []*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 GetConnectionsFilter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetConnectionsFilter) GoString() string {
	return s.String()
}

// SetConnectionType sets the ConnectionType field's value.
func (s *GetConnectionsFilter) SetConnectionType(v string) *GetConnectionsFilter {
	s.ConnectionType = &v
	return s
}

// SetMatchCriteria sets the MatchCriteria field's value.
func (s *GetConnectionsFilter) SetMatchCriteria(v []*string) *GetConnectionsFilter {
	s.MatchCriteria = v
	return s
}

type GetConnectionsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which the connections reside. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// A filter that controls which connections are returned.
	Filter *GetConnectionsFilter `type:"structure"`

	// Allows you to retrieve the connection metadata without returning the password.
	// For instance, the Glue console uses this flag to retrieve the connection,
	// and does not display the password. Set this parameter when the caller might
	// not have permission to use the KMS key to decrypt the password, but it does
	// have permission to access the rest of the connection properties.
	HidePassword *bool `type:"boolean"`

	// The maximum number of connections to return in one response.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation call.
	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 GetConnectionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetConnectionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetConnectionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetConnectionsInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetConnectionsInput) SetCatalogId(v string) *GetConnectionsInput {
	s.CatalogId = &v
	return s
}

// SetFilter sets the Filter field's value.
func (s *GetConnectionsInput) SetFilter(v *GetConnectionsFilter) *GetConnectionsInput {
	s.Filter = v
	return s
}

// SetHidePassword sets the HidePassword field's value.
func (s *GetConnectionsInput) SetHidePassword(v bool) *GetConnectionsInput {
	s.HidePassword = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetConnectionsInput) SetMaxResults(v int64) *GetConnectionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetConnectionsInput) SetNextToken(v string) *GetConnectionsInput {
	s.NextToken = &v
	return s
}

type GetConnectionsOutput struct {
	_ struct{} `type:"structure"`

	// A list of requested connection definitions.
	ConnectionList []*Connection `type:"list"`

	// A continuation token, if the list of connections returned does not include
	// the last of the filtered connections.
	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 GetConnectionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetConnectionsOutput) GoString() string {
	return s.String()
}

// SetConnectionList sets the ConnectionList field's value.
func (s *GetConnectionsOutput) SetConnectionList(v []*Connection) *GetConnectionsOutput {
	s.ConnectionList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetConnectionsOutput) SetNextToken(v string) *GetConnectionsOutput {
	s.NextToken = &v
	return s
}

type GetCrawlerInput struct {
	_ struct{} `type:"structure"`

	// The name of the crawler to retrieve metadata for.
	//
	// 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 GetCrawlerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCrawlerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetCrawlerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetCrawlerInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *GetCrawlerInput) SetName(v string) *GetCrawlerInput {
	s.Name = &v
	return s
}

type GetCrawlerMetricsInput struct {
	_ struct{} `type:"structure"`

	// A list of the names of crawlers about which to retrieve metrics.
	CrawlerNameList []*string `type:"list"`

	// The maximum size of a list to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation call.
	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 GetCrawlerMetricsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCrawlerMetricsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetCrawlerMetricsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetCrawlerMetricsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCrawlerNameList sets the CrawlerNameList field's value.
func (s *GetCrawlerMetricsInput) SetCrawlerNameList(v []*string) *GetCrawlerMetricsInput {
	s.CrawlerNameList = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetCrawlerMetricsInput) SetMaxResults(v int64) *GetCrawlerMetricsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetCrawlerMetricsInput) SetNextToken(v string) *GetCrawlerMetricsInput {
	s.NextToken = &v
	return s
}

type GetCrawlerMetricsOutput struct {
	_ struct{} `type:"structure"`

	// A list of metrics for the specified crawler.
	CrawlerMetricsList []*CrawlerMetrics `type:"list"`

	// A continuation token, if the returned list does not contain the last metric
	// available.
	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 GetCrawlerMetricsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCrawlerMetricsOutput) GoString() string {
	return s.String()
}

// SetCrawlerMetricsList sets the CrawlerMetricsList field's value.
func (s *GetCrawlerMetricsOutput) SetCrawlerMetricsList(v []*CrawlerMetrics) *GetCrawlerMetricsOutput {
	s.CrawlerMetricsList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetCrawlerMetricsOutput) SetNextToken(v string) *GetCrawlerMetricsOutput {
	s.NextToken = &v
	return s
}

type GetCrawlerOutput struct {
	_ struct{} `type:"structure"`

	// The metadata for the specified crawler.
	Crawler *Crawler `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCrawlerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCrawlerOutput) GoString() string {
	return s.String()
}

// SetCrawler sets the Crawler field's value.
func (s *GetCrawlerOutput) SetCrawler(v *Crawler) *GetCrawlerOutput {
	s.Crawler = v
	return s
}

type GetCrawlersInput struct {
	_ struct{} `type:"structure"`

	// The number of crawlers to return on each call.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation 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 GetCrawlersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCrawlersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetCrawlersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetCrawlersInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetCrawlersInput) SetMaxResults(v int64) *GetCrawlersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetCrawlersInput) SetNextToken(v string) *GetCrawlersInput {
	s.NextToken = &v
	return s
}

type GetCrawlersOutput struct {
	_ struct{} `type:"structure"`

	// A list of crawler metadata.
	Crawlers []*Crawler `type:"list"`

	// A continuation token, if the returned list has not reached the end of those
	// defined in this customer account.
	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 GetCrawlersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCrawlersOutput) GoString() string {
	return s.String()
}

// SetCrawlers sets the Crawlers field's value.
func (s *GetCrawlersOutput) SetCrawlers(v []*Crawler) *GetCrawlersOutput {
	s.Crawlers = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetCrawlersOutput) SetNextToken(v string) *GetCrawlersOutput {
	s.NextToken = &v
	return s
}

type GetCustomEntityTypeInput struct {
	_ struct{} `type:"structure"`

	// The name of the custom pattern that you want to retrieve.
	//
	// 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 GetCustomEntityTypeInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCustomEntityTypeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetCustomEntityTypeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetCustomEntityTypeInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *GetCustomEntityTypeInput) SetName(v string) *GetCustomEntityTypeInput {
	s.Name = &v
	return s
}

type GetCustomEntityTypeOutput struct {
	_ struct{} `type:"structure"`

	// A list of context words if specified when you created the custom pattern.
	// If none of these context words are found within the vicinity of the regular
	// expression the data will not be detected as sensitive data.
	ContextWords []*string `min:"1" type:"list"`

	// The name of the custom pattern that you retrieved.
	Name *string `min:"1" type:"string"`

	// A regular expression string that is used for detecting sensitive data in
	// a custom pattern.
	RegexString *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 GetCustomEntityTypeOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetCustomEntityTypeOutput) GoString() string {
	return s.String()
}

// SetContextWords sets the ContextWords field's value.
func (s *GetCustomEntityTypeOutput) SetContextWords(v []*string) *GetCustomEntityTypeOutput {
	s.ContextWords = v
	return s
}

// SetName sets the Name field's value.
func (s *GetCustomEntityTypeOutput) SetName(v string) *GetCustomEntityTypeOutput {
	s.Name = &v
	return s
}

// SetRegexString sets the RegexString field's value.
func (s *GetCustomEntityTypeOutput) SetRegexString(v string) *GetCustomEntityTypeOutput {
	s.RegexString = &v
	return s
}

type GetDataCatalogEncryptionSettingsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog to retrieve the security configuration for. If
	// none is provided, the Amazon Web Services account ID is used by default.
	CatalogId *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 GetDataCatalogEncryptionSettingsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataCatalogEncryptionSettingsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDataCatalogEncryptionSettingsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDataCatalogEncryptionSettingsInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetDataCatalogEncryptionSettingsInput) SetCatalogId(v string) *GetDataCatalogEncryptionSettingsInput {
	s.CatalogId = &v
	return s
}

type GetDataCatalogEncryptionSettingsOutput struct {
	_ struct{} `type:"structure"`

	// The requested security configuration.
	DataCatalogEncryptionSettings *DataCatalogEncryptionSettings `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataCatalogEncryptionSettingsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataCatalogEncryptionSettingsOutput) GoString() string {
	return s.String()
}

// SetDataCatalogEncryptionSettings sets the DataCatalogEncryptionSettings field's value.
func (s *GetDataCatalogEncryptionSettingsOutput) SetDataCatalogEncryptionSettings(v *DataCatalogEncryptionSettings) *GetDataCatalogEncryptionSettingsOutput {
	s.DataCatalogEncryptionSettings = v
	return s
}

type GetDataQualityResultInput struct {
	_ struct{} `type:"structure"`

	// A unique result ID for the data quality result.
	//
	// ResultId is a required field
	ResultId *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 GetDataQualityResultInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataQualityResultInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDataQualityResultInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDataQualityResultInput"}
	if s.ResultId == nil {
		invalidParams.Add(request.NewErrParamRequired("ResultId"))
	}
	if s.ResultId != nil && len(*s.ResultId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResultId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResultId sets the ResultId field's value.
func (s *GetDataQualityResultInput) SetResultId(v string) *GetDataQualityResultInput {
	s.ResultId = &v
	return s
}

type GetDataQualityResultOutput struct {
	_ struct{} `type:"structure"`

	// A list of DataQualityAnalyzerResult objects representing the results for
	// each analyzer.
	AnalyzerResults []*DataQualityAnalyzerResult `type:"list"`

	// The date and time when the run for this data quality result was completed.
	CompletedOn *time.Time `type:"timestamp"`

	// The table associated with the data quality result, if any.
	DataSource *DataSource `type:"structure"`

	// In the context of a job in Glue Studio, each node in the canvas is typically
	// assigned some sort of name and data quality nodes will have names. In the
	// case of multiple nodes, the evaluationContext can differentiate the nodes.
	EvaluationContext *string `type:"string"`

	// The job name associated with the data quality result, if any.
	JobName *string `min:"1" type:"string"`

	// The job run ID associated with the data quality result, if any.
	JobRunId *string `min:"1" type:"string"`

	// A list of DataQualityObservation objects representing the observations generated
	// after evaluating the rules and analyzers.
	Observations []*DataQualityObservation `type:"list"`

	// A unique result ID for the data quality result.
	ResultId *string `min:"1" type:"string"`

	// A list of DataQualityRuleResult objects representing the results for each
	// rule.
	RuleResults []*DataQualityRuleResult `type:"list"`

	// The unique run ID associated with the ruleset evaluation.
	RulesetEvaluationRunId *string `min:"1" type:"string"`

	// The name of the ruleset associated with the data quality result.
	RulesetName *string `min:"1" type:"string"`

	// An aggregate data quality score. Represents the ratio of rules that passed
	// to the total number of rules.
	Score *float64 `type:"double"`

	// The date and time when the run for this data quality result started.
	StartedOn *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 GetDataQualityResultOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataQualityResultOutput) GoString() string {
	return s.String()
}

// SetAnalyzerResults sets the AnalyzerResults field's value.
func (s *GetDataQualityResultOutput) SetAnalyzerResults(v []*DataQualityAnalyzerResult) *GetDataQualityResultOutput {
	s.AnalyzerResults = v
	return s
}

// SetCompletedOn sets the CompletedOn field's value.
func (s *GetDataQualityResultOutput) SetCompletedOn(v time.Time) *GetDataQualityResultOutput {
	s.CompletedOn = &v
	return s
}

// SetDataSource sets the DataSource field's value.
func (s *GetDataQualityResultOutput) SetDataSource(v *DataSource) *GetDataQualityResultOutput {
	s.DataSource = v
	return s
}

// SetEvaluationContext sets the EvaluationContext field's value.
func (s *GetDataQualityResultOutput) SetEvaluationContext(v string) *GetDataQualityResultOutput {
	s.EvaluationContext = &v
	return s
}

// SetJobName sets the JobName field's value.
func (s *GetDataQualityResultOutput) SetJobName(v string) *GetDataQualityResultOutput {
	s.JobName = &v
	return s
}

// SetJobRunId sets the JobRunId field's value.
func (s *GetDataQualityResultOutput) SetJobRunId(v string) *GetDataQualityResultOutput {
	s.JobRunId = &v
	return s
}

// SetObservations sets the Observations field's value.
func (s *GetDataQualityResultOutput) SetObservations(v []*DataQualityObservation) *GetDataQualityResultOutput {
	s.Observations = v
	return s
}

// SetResultId sets the ResultId field's value.
func (s *GetDataQualityResultOutput) SetResultId(v string) *GetDataQualityResultOutput {
	s.ResultId = &v
	return s
}

// SetRuleResults sets the RuleResults field's value.
func (s *GetDataQualityResultOutput) SetRuleResults(v []*DataQualityRuleResult) *GetDataQualityResultOutput {
	s.RuleResults = v
	return s
}

// SetRulesetEvaluationRunId sets the RulesetEvaluationRunId field's value.
func (s *GetDataQualityResultOutput) SetRulesetEvaluationRunId(v string) *GetDataQualityResultOutput {
	s.RulesetEvaluationRunId = &v
	return s
}

// SetRulesetName sets the RulesetName field's value.
func (s *GetDataQualityResultOutput) SetRulesetName(v string) *GetDataQualityResultOutput {
	s.RulesetName = &v
	return s
}

// SetScore sets the Score field's value.
func (s *GetDataQualityResultOutput) SetScore(v float64) *GetDataQualityResultOutput {
	s.Score = &v
	return s
}

// SetStartedOn sets the StartedOn field's value.
func (s *GetDataQualityResultOutput) SetStartedOn(v time.Time) *GetDataQualityResultOutput {
	s.StartedOn = &v
	return s
}

type GetDataQualityRuleRecommendationRunInput struct {
	_ struct{} `type:"structure"`

	// The unique run identifier associated with this run.
	//
	// RunId is a required field
	RunId *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 GetDataQualityRuleRecommendationRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataQualityRuleRecommendationRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDataQualityRuleRecommendationRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDataQualityRuleRecommendationRunInput"}
	if s.RunId == nil {
		invalidParams.Add(request.NewErrParamRequired("RunId"))
	}
	if s.RunId != nil && len(*s.RunId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RunId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRunId sets the RunId field's value.
func (s *GetDataQualityRuleRecommendationRunInput) SetRunId(v string) *GetDataQualityRuleRecommendationRunInput {
	s.RunId = &v
	return s
}

type GetDataQualityRuleRecommendationRunOutput struct {
	_ struct{} `type:"structure"`

	// The date and time when this run was completed.
	CompletedOn *time.Time `type:"timestamp"`

	// The name of the ruleset that was created by the run.
	CreatedRulesetName *string `min:"1" type:"string"`

	// The data source (an Glue table) associated with this run.
	DataSource *DataSource `type:"structure"`

	// The error strings that are associated with the run.
	ErrorString *string `type:"string"`

	// The amount of time (in seconds) that the run consumed resources.
	ExecutionTime *int64 `type:"integer"`

	// A timestamp. The last point in time when this data quality rule recommendation
	// run was modified.
	LastModifiedOn *time.Time `type:"timestamp"`

	// The number of G.1X workers to be used in the run. The default is 5.
	NumberOfWorkers *int64 `type:"integer"`

	// When a start rule recommendation run completes, it creates a recommended
	// ruleset (a set of rules). This member has those rules in Data Quality Definition
	// Language (DQDL) format.
	RecommendedRuleset *string `min:"1" type:"string"`

	// An IAM role supplied to encrypt the results of the run.
	Role *string `type:"string"`

	// The unique run identifier associated with this run.
	RunId *string `min:"1" type:"string"`

	// The date and time when this run started.
	StartedOn *time.Time `type:"timestamp"`

	// The status for this run.
	Status *string `type:"string" enum:"TaskStatusType"`

	// The timeout for a run in minutes. This is the maximum time that a run can
	// consume resources before it is terminated and enters TIMEOUT status. The
	// default is 2,880 minutes (48 hours).
	Timeout *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 GetDataQualityRuleRecommendationRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataQualityRuleRecommendationRunOutput) GoString() string {
	return s.String()
}

// SetCompletedOn sets the CompletedOn field's value.
func (s *GetDataQualityRuleRecommendationRunOutput) SetCompletedOn(v time.Time) *GetDataQualityRuleRecommendationRunOutput {
	s.CompletedOn = &v
	return s
}

// SetCreatedRulesetName sets the CreatedRulesetName field's value.
func (s *GetDataQualityRuleRecommendationRunOutput) SetCreatedRulesetName(v string) *GetDataQualityRuleRecommendationRunOutput {
	s.CreatedRulesetName = &v
	return s
}

// SetDataSource sets the DataSource field's value.
func (s *GetDataQualityRuleRecommendationRunOutput) SetDataSource(v *DataSource) *GetDataQualityRuleRecommendationRunOutput {
	s.DataSource = v
	return s
}

// SetErrorString sets the ErrorString field's value.
func (s *GetDataQualityRuleRecommendationRunOutput) SetErrorString(v string) *GetDataQualityRuleRecommendationRunOutput {
	s.ErrorString = &v
	return s
}

// SetExecutionTime sets the ExecutionTime field's value.
func (s *GetDataQualityRuleRecommendationRunOutput) SetExecutionTime(v int64) *GetDataQualityRuleRecommendationRunOutput {
	s.ExecutionTime = &v
	return s
}

// SetLastModifiedOn sets the LastModifiedOn field's value.
func (s *GetDataQualityRuleRecommendationRunOutput) SetLastModifiedOn(v time.Time) *GetDataQualityRuleRecommendationRunOutput {
	s.LastModifiedOn = &v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *GetDataQualityRuleRecommendationRunOutput) SetNumberOfWorkers(v int64) *GetDataQualityRuleRecommendationRunOutput {
	s.NumberOfWorkers = &v
	return s
}

// SetRecommendedRuleset sets the RecommendedRuleset field's value.
func (s *GetDataQualityRuleRecommendationRunOutput) SetRecommendedRuleset(v string) *GetDataQualityRuleRecommendationRunOutput {
	s.RecommendedRuleset = &v
	return s
}

// SetRole sets the Role field's value.
func (s *GetDataQualityRuleRecommendationRunOutput) SetRole(v string) *GetDataQualityRuleRecommendationRunOutput {
	s.Role = &v
	return s
}

// SetRunId sets the RunId field's value.
func (s *GetDataQualityRuleRecommendationRunOutput) SetRunId(v string) *GetDataQualityRuleRecommendationRunOutput {
	s.RunId = &v
	return s
}

// SetStartedOn sets the StartedOn field's value.
func (s *GetDataQualityRuleRecommendationRunOutput) SetStartedOn(v time.Time) *GetDataQualityRuleRecommendationRunOutput {
	s.StartedOn = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetDataQualityRuleRecommendationRunOutput) SetStatus(v string) *GetDataQualityRuleRecommendationRunOutput {
	s.Status = &v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *GetDataQualityRuleRecommendationRunOutput) SetTimeout(v int64) *GetDataQualityRuleRecommendationRunOutput {
	s.Timeout = &v
	return s
}

type GetDataQualityRulesetEvaluationRunInput struct {
	_ struct{} `type:"structure"`

	// The unique run identifier associated with this run.
	//
	// RunId is a required field
	RunId *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 GetDataQualityRulesetEvaluationRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataQualityRulesetEvaluationRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDataQualityRulesetEvaluationRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDataQualityRulesetEvaluationRunInput"}
	if s.RunId == nil {
		invalidParams.Add(request.NewErrParamRequired("RunId"))
	}
	if s.RunId != nil && len(*s.RunId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RunId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRunId sets the RunId field's value.
func (s *GetDataQualityRulesetEvaluationRunInput) SetRunId(v string) *GetDataQualityRulesetEvaluationRunInput {
	s.RunId = &v
	return s
}

type GetDataQualityRulesetEvaluationRunOutput struct {
	_ struct{} `type:"structure"`

	// A map of reference strings to additional data sources you can specify for
	// an evaluation run.
	AdditionalDataSources map[string]*DataSource `type:"map"`

	// Additional run options you can specify for an evaluation run.
	AdditionalRunOptions *DataQualityEvaluationRunAdditionalRunOptions `type:"structure"`

	// The date and time when this run was completed.
	CompletedOn *time.Time `type:"timestamp"`

	// The data source (an Glue table) associated with this evaluation run.
	DataSource *DataSource `type:"structure"`

	// The error strings that are associated with the run.
	ErrorString *string `type:"string"`

	// The amount of time (in seconds) that the run consumed resources.
	ExecutionTime *int64 `type:"integer"`

	// A timestamp. The last point in time when this data quality rule recommendation
	// run was modified.
	LastModifiedOn *time.Time `type:"timestamp"`

	// The number of G.1X workers to be used in the run. The default is 5.
	NumberOfWorkers *int64 `type:"integer"`

	// A list of result IDs for the data quality results for the run.
	ResultIds []*string `min:"1" type:"list"`

	// An IAM role supplied to encrypt the results of the run.
	Role *string `type:"string"`

	// A list of ruleset names for the run. Currently, this parameter takes only
	// one Ruleset name.
	RulesetNames []*string `min:"1" type:"list"`

	// The unique run identifier associated with this run.
	RunId *string `min:"1" type:"string"`

	// The date and time when this run started.
	StartedOn *time.Time `type:"timestamp"`

	// The status for this run.
	Status *string `type:"string" enum:"TaskStatusType"`

	// The timeout for a run in minutes. This is the maximum time that a run can
	// consume resources before it is terminated and enters TIMEOUT status. The
	// default is 2,880 minutes (48 hours).
	Timeout *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 GetDataQualityRulesetEvaluationRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataQualityRulesetEvaluationRunOutput) GoString() string {
	return s.String()
}

// SetAdditionalDataSources sets the AdditionalDataSources field's value.
func (s *GetDataQualityRulesetEvaluationRunOutput) SetAdditionalDataSources(v map[string]*DataSource) *GetDataQualityRulesetEvaluationRunOutput {
	s.AdditionalDataSources = v
	return s
}

// SetAdditionalRunOptions sets the AdditionalRunOptions field's value.
func (s *GetDataQualityRulesetEvaluationRunOutput) SetAdditionalRunOptions(v *DataQualityEvaluationRunAdditionalRunOptions) *GetDataQualityRulesetEvaluationRunOutput {
	s.AdditionalRunOptions = v
	return s
}

// SetCompletedOn sets the CompletedOn field's value.
func (s *GetDataQualityRulesetEvaluationRunOutput) SetCompletedOn(v time.Time) *GetDataQualityRulesetEvaluationRunOutput {
	s.CompletedOn = &v
	return s
}

// SetDataSource sets the DataSource field's value.
func (s *GetDataQualityRulesetEvaluationRunOutput) SetDataSource(v *DataSource) *GetDataQualityRulesetEvaluationRunOutput {
	s.DataSource = v
	return s
}

// SetErrorString sets the ErrorString field's value.
func (s *GetDataQualityRulesetEvaluationRunOutput) SetErrorString(v string) *GetDataQualityRulesetEvaluationRunOutput {
	s.ErrorString = &v
	return s
}

// SetExecutionTime sets the ExecutionTime field's value.
func (s *GetDataQualityRulesetEvaluationRunOutput) SetExecutionTime(v int64) *GetDataQualityRulesetEvaluationRunOutput {
	s.ExecutionTime = &v
	return s
}

// SetLastModifiedOn sets the LastModifiedOn field's value.
func (s *GetDataQualityRulesetEvaluationRunOutput) SetLastModifiedOn(v time.Time) *GetDataQualityRulesetEvaluationRunOutput {
	s.LastModifiedOn = &v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *GetDataQualityRulesetEvaluationRunOutput) SetNumberOfWorkers(v int64) *GetDataQualityRulesetEvaluationRunOutput {
	s.NumberOfWorkers = &v
	return s
}

// SetResultIds sets the ResultIds field's value.
func (s *GetDataQualityRulesetEvaluationRunOutput) SetResultIds(v []*string) *GetDataQualityRulesetEvaluationRunOutput {
	s.ResultIds = v
	return s
}

// SetRole sets the Role field's value.
func (s *GetDataQualityRulesetEvaluationRunOutput) SetRole(v string) *GetDataQualityRulesetEvaluationRunOutput {
	s.Role = &v
	return s
}

// SetRulesetNames sets the RulesetNames field's value.
func (s *GetDataQualityRulesetEvaluationRunOutput) SetRulesetNames(v []*string) *GetDataQualityRulesetEvaluationRunOutput {
	s.RulesetNames = v
	return s
}

// SetRunId sets the RunId field's value.
func (s *GetDataQualityRulesetEvaluationRunOutput) SetRunId(v string) *GetDataQualityRulesetEvaluationRunOutput {
	s.RunId = &v
	return s
}

// SetStartedOn sets the StartedOn field's value.
func (s *GetDataQualityRulesetEvaluationRunOutput) SetStartedOn(v time.Time) *GetDataQualityRulesetEvaluationRunOutput {
	s.StartedOn = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetDataQualityRulesetEvaluationRunOutput) SetStatus(v string) *GetDataQualityRulesetEvaluationRunOutput {
	s.Status = &v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *GetDataQualityRulesetEvaluationRunOutput) SetTimeout(v int64) *GetDataQualityRulesetEvaluationRunOutput {
	s.Timeout = &v
	return s
}

type GetDataQualityRulesetInput struct {
	_ struct{} `type:"structure"`

	// The name of the ruleset.
	//
	// 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 GetDataQualityRulesetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataQualityRulesetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDataQualityRulesetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDataQualityRulesetInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *GetDataQualityRulesetInput) SetName(v string) *GetDataQualityRulesetInput {
	s.Name = &v
	return s
}

type GetDataQualityRulesetOutput struct {
	_ struct{} `type:"structure"`

	// A timestamp. The time and date that this data quality ruleset was created.
	CreatedOn *time.Time `type:"timestamp"`

	// A description of the ruleset.
	Description *string `type:"string"`

	// A timestamp. The last point in time when this data quality ruleset was modified.
	LastModifiedOn *time.Time `type:"timestamp"`

	// The name of the ruleset.
	Name *string `min:"1" type:"string"`

	// When a ruleset was created from a recommendation run, this run ID is generated
	// to link the two together.
	RecommendationRunId *string `min:"1" type:"string"`

	// A Data Quality Definition Language (DQDL) ruleset. For more information,
	// see the Glue developer guide.
	Ruleset *string `min:"1" type:"string"`

	// The name and database name of the target table.
	TargetTable *DataQualityTargetTable `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataQualityRulesetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataQualityRulesetOutput) GoString() string {
	return s.String()
}

// SetCreatedOn sets the CreatedOn field's value.
func (s *GetDataQualityRulesetOutput) SetCreatedOn(v time.Time) *GetDataQualityRulesetOutput {
	s.CreatedOn = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetDataQualityRulesetOutput) SetDescription(v string) *GetDataQualityRulesetOutput {
	s.Description = &v
	return s
}

// SetLastModifiedOn sets the LastModifiedOn field's value.
func (s *GetDataQualityRulesetOutput) SetLastModifiedOn(v time.Time) *GetDataQualityRulesetOutput {
	s.LastModifiedOn = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetDataQualityRulesetOutput) SetName(v string) *GetDataQualityRulesetOutput {
	s.Name = &v
	return s
}

// SetRecommendationRunId sets the RecommendationRunId field's value.
func (s *GetDataQualityRulesetOutput) SetRecommendationRunId(v string) *GetDataQualityRulesetOutput {
	s.RecommendationRunId = &v
	return s
}

// SetRuleset sets the Ruleset field's value.
func (s *GetDataQualityRulesetOutput) SetRuleset(v string) *GetDataQualityRulesetOutput {
	s.Ruleset = &v
	return s
}

// SetTargetTable sets the TargetTable field's value.
func (s *GetDataQualityRulesetOutput) SetTargetTable(v *DataQualityTargetTable) *GetDataQualityRulesetOutput {
	s.TargetTable = v
	return s
}

type GetDatabaseInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which the database resides. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the database to retrieve. For Hive compatibility, this should
	// be all lowercase.
	//
	// 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 GetDatabaseInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDatabaseInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDatabaseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDatabaseInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 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
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetDatabaseInput) SetCatalogId(v string) *GetDatabaseInput {
	s.CatalogId = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetDatabaseInput) SetName(v string) *GetDatabaseInput {
	s.Name = &v
	return s
}

type GetDatabaseOutput struct {
	_ struct{} `type:"structure"`

	// The definition of the specified database in the Data Catalog.
	Database *Database `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDatabaseOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDatabaseOutput) GoString() string {
	return s.String()
}

// SetDatabase sets the Database field's value.
func (s *GetDatabaseOutput) SetDatabase(v *Database) *GetDatabaseOutput {
	s.Database = v
	return s
}

type GetDatabasesInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog from which to retrieve Databases. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The maximum number of databases to return in one response.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation call.
	NextToken *string `type:"string"`

	// Allows you to specify that you want to list the databases shared with your
	// account. The allowable values are FEDERATED, FOREIGN or ALL.
	//
	//    * If set to FEDERATED, will list the federated databases (referencing
	//    an external entity) shared with your account.
	//
	//    * If set to FOREIGN, will list the databases shared with your account.
	//
	//    * If set to ALL, will list the databases shared with your account, as
	//    well as the databases in yor local account.
	ResourceShareType *string `type:"string" enum:"ResourceShareType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDatabasesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDatabasesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDatabasesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDatabasesInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetDatabasesInput) SetCatalogId(v string) *GetDatabasesInput {
	s.CatalogId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetDatabasesInput) SetMaxResults(v int64) *GetDatabasesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetDatabasesInput) SetNextToken(v string) *GetDatabasesInput {
	s.NextToken = &v
	return s
}

// SetResourceShareType sets the ResourceShareType field's value.
func (s *GetDatabasesInput) SetResourceShareType(v string) *GetDatabasesInput {
	s.ResourceShareType = &v
	return s
}

type GetDatabasesOutput struct {
	_ struct{} `type:"structure"`

	// A list of Database objects from the specified catalog.
	//
	// DatabaseList is a required field
	DatabaseList []*Database `type:"list" required:"true"`

	// A continuation token for paginating the returned list of tokens, returned
	// if the current segment of the list is not the last.
	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 GetDatabasesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDatabasesOutput) GoString() string {
	return s.String()
}

// SetDatabaseList sets the DatabaseList field's value.
func (s *GetDatabasesOutput) SetDatabaseList(v []*Database) *GetDatabasesOutput {
	s.DatabaseList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetDatabasesOutput) SetNextToken(v string) *GetDatabasesOutput {
	s.NextToken = &v
	return s
}

type GetDataflowGraphInput struct {
	_ struct{} `type:"structure"`

	// The Python script to transform.
	PythonScript *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 GetDataflowGraphInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataflowGraphInput) GoString() string {
	return s.String()
}

// SetPythonScript sets the PythonScript field's value.
func (s *GetDataflowGraphInput) SetPythonScript(v string) *GetDataflowGraphInput {
	s.PythonScript = &v
	return s
}

type GetDataflowGraphOutput struct {
	_ struct{} `type:"structure"`

	// A list of the edges in the resulting DAG.
	DagEdges []*CodeGenEdge `type:"list"`

	// A list of the nodes in the resulting DAG.
	DagNodes []*CodeGenNode `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 GetDataflowGraphOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataflowGraphOutput) GoString() string {
	return s.String()
}

// SetDagEdges sets the DagEdges field's value.
func (s *GetDataflowGraphOutput) SetDagEdges(v []*CodeGenEdge) *GetDataflowGraphOutput {
	s.DagEdges = v
	return s
}

// SetDagNodes sets the DagNodes field's value.
func (s *GetDataflowGraphOutput) SetDagNodes(v []*CodeGenNode) *GetDataflowGraphOutput {
	s.DagNodes = v
	return s
}

type GetDevEndpointInput struct {
	_ struct{} `type:"structure"`

	// Name of the DevEndpoint to retrieve information for.
	//
	// EndpointName is a required field
	EndpointName *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 GetDevEndpointInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDevEndpointInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDevEndpointInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDevEndpointInput"}
	if s.EndpointName == nil {
		invalidParams.Add(request.NewErrParamRequired("EndpointName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEndpointName sets the EndpointName field's value.
func (s *GetDevEndpointInput) SetEndpointName(v string) *GetDevEndpointInput {
	s.EndpointName = &v
	return s
}

type GetDevEndpointOutput struct {
	_ struct{} `type:"structure"`

	// A DevEndpoint definition.
	DevEndpoint *DevEndpoint `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDevEndpointOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDevEndpointOutput) GoString() string {
	return s.String()
}

// SetDevEndpoint sets the DevEndpoint field's value.
func (s *GetDevEndpointOutput) SetDevEndpoint(v *DevEndpoint) *GetDevEndpointOutput {
	s.DevEndpoint = v
	return s
}

type GetDevEndpointsInput struct {
	_ struct{} `type:"structure"`

	// The maximum size of information to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation call.
	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 GetDevEndpointsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDevEndpointsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDevEndpointsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDevEndpointsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetDevEndpointsInput) SetMaxResults(v int64) *GetDevEndpointsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetDevEndpointsInput) SetNextToken(v string) *GetDevEndpointsInput {
	s.NextToken = &v
	return s
}

type GetDevEndpointsOutput struct {
	_ struct{} `type:"structure"`

	// A list of DevEndpoint definitions.
	DevEndpoints []*DevEndpoint `type:"list"`

	// A continuation token, if not all DevEndpoint definitions have yet been returned.
	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 GetDevEndpointsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDevEndpointsOutput) GoString() string {
	return s.String()
}

// SetDevEndpoints sets the DevEndpoints field's value.
func (s *GetDevEndpointsOutput) SetDevEndpoints(v []*DevEndpoint) *GetDevEndpointsOutput {
	s.DevEndpoints = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetDevEndpointsOutput) SetNextToken(v string) *GetDevEndpointsOutput {
	s.NextToken = &v
	return s
}

type GetJobBookmarkInput struct {
	_ struct{} `type:"structure"`

	// The name of the job in question.
	//
	// JobName is a required field
	JobName *string `type:"string" required:"true"`

	// The unique run identifier associated with this job run.
	RunId *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 GetJobBookmarkInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetJobBookmarkInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetJobBookmarkInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetJobBookmarkInput"}
	if s.JobName == nil {
		invalidParams.Add(request.NewErrParamRequired("JobName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetJobName sets the JobName field's value.
func (s *GetJobBookmarkInput) SetJobName(v string) *GetJobBookmarkInput {
	s.JobName = &v
	return s
}

// SetRunId sets the RunId field's value.
func (s *GetJobBookmarkInput) SetRunId(v string) *GetJobBookmarkInput {
	s.RunId = &v
	return s
}

type GetJobBookmarkOutput struct {
	_ struct{} `type:"structure"`

	// A structure that defines a point that a job can resume processing.
	JobBookmarkEntry *JobBookmarkEntry `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetJobBookmarkOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetJobBookmarkOutput) GoString() string {
	return s.String()
}

// SetJobBookmarkEntry sets the JobBookmarkEntry field's value.
func (s *GetJobBookmarkOutput) SetJobBookmarkEntry(v *JobBookmarkEntry) *GetJobBookmarkOutput {
	s.JobBookmarkEntry = v
	return s
}

type GetJobInput struct {
	_ struct{} `type:"structure"`

	// The name of the job definition to retrieve.
	//
	// JobName is a required field
	JobName *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 GetJobInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetJobInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetJobInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetJobInput"}
	if s.JobName == nil {
		invalidParams.Add(request.NewErrParamRequired("JobName"))
	}
	if s.JobName != nil && len(*s.JobName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("JobName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetJobName sets the JobName field's value.
func (s *GetJobInput) SetJobName(v string) *GetJobInput {
	s.JobName = &v
	return s
}

type GetJobOutput struct {
	_ struct{} `type:"structure"`

	// The requested job definition.
	Job *Job `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetJobOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetJobOutput) GoString() string {
	return s.String()
}

// SetJob sets the Job field's value.
func (s *GetJobOutput) SetJob(v *Job) *GetJobOutput {
	s.Job = v
	return s
}

type GetJobRunInput struct {
	_ struct{} `type:"structure"`

	// Name of the job definition being run.
	//
	// JobName is a required field
	JobName *string `min:"1" type:"string" required:"true"`

	// True if a list of predecessor runs should be returned.
	PredecessorsIncluded *bool `type:"boolean"`

	// The ID of the job run.
	//
	// RunId is a required field
	RunId *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 GetJobRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetJobRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetJobRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetJobRunInput"}
	if s.JobName == nil {
		invalidParams.Add(request.NewErrParamRequired("JobName"))
	}
	if s.JobName != nil && len(*s.JobName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("JobName", 1))
	}
	if s.RunId == nil {
		invalidParams.Add(request.NewErrParamRequired("RunId"))
	}
	if s.RunId != nil && len(*s.RunId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RunId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetJobName sets the JobName field's value.
func (s *GetJobRunInput) SetJobName(v string) *GetJobRunInput {
	s.JobName = &v
	return s
}

// SetPredecessorsIncluded sets the PredecessorsIncluded field's value.
func (s *GetJobRunInput) SetPredecessorsIncluded(v bool) *GetJobRunInput {
	s.PredecessorsIncluded = &v
	return s
}

// SetRunId sets the RunId field's value.
func (s *GetJobRunInput) SetRunId(v string) *GetJobRunInput {
	s.RunId = &v
	return s
}

type GetJobRunOutput struct {
	_ struct{} `type:"structure"`

	// The requested job-run metadata.
	JobRun *JobRun `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetJobRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetJobRunOutput) GoString() string {
	return s.String()
}

// SetJobRun sets the JobRun field's value.
func (s *GetJobRunOutput) SetJobRun(v *JobRun) *GetJobRunOutput {
	s.JobRun = v
	return s
}

type GetJobRunsInput struct {
	_ struct{} `type:"structure"`

	// The name of the job definition for which to retrieve all job runs.
	//
	// JobName is a required field
	JobName *string `min:"1" type:"string" required:"true"`

	// The maximum size of the response.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation call.
	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 GetJobRunsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetJobRunsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetJobRunsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetJobRunsInput"}
	if s.JobName == nil {
		invalidParams.Add(request.NewErrParamRequired("JobName"))
	}
	if s.JobName != nil && len(*s.JobName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("JobName", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetJobName sets the JobName field's value.
func (s *GetJobRunsInput) SetJobName(v string) *GetJobRunsInput {
	s.JobName = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetJobRunsInput) SetMaxResults(v int64) *GetJobRunsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetJobRunsInput) SetNextToken(v string) *GetJobRunsInput {
	s.NextToken = &v
	return s
}

type GetJobRunsOutput struct {
	_ struct{} `type:"structure"`

	// A list of job-run metadata objects.
	JobRuns []*JobRun `type:"list"`

	// A continuation token, if not all requested job runs have been returned.
	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 GetJobRunsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetJobRunsOutput) GoString() string {
	return s.String()
}

// SetJobRuns sets the JobRuns field's value.
func (s *GetJobRunsOutput) SetJobRuns(v []*JobRun) *GetJobRunsOutput {
	s.JobRuns = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetJobRunsOutput) SetNextToken(v string) *GetJobRunsOutput {
	s.NextToken = &v
	return s
}

type GetJobsInput struct {
	_ struct{} `type:"structure"`

	// The maximum size of the response.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation call.
	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 GetJobsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetJobsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetJobsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetJobsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetJobsInput) SetMaxResults(v int64) *GetJobsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetJobsInput) SetNextToken(v string) *GetJobsInput {
	s.NextToken = &v
	return s
}

type GetJobsOutput struct {
	_ struct{} `type:"structure"`

	// A list of job definitions.
	Jobs []*Job `type:"list"`

	// A continuation token, if not all job definitions have yet been returned.
	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 GetJobsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetJobsOutput) GoString() string {
	return s.String()
}

// SetJobs sets the Jobs field's value.
func (s *GetJobsOutput) SetJobs(v []*Job) *GetJobsOutput {
	s.Jobs = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetJobsOutput) SetNextToken(v string) *GetJobsOutput {
	s.NextToken = &v
	return s
}

type GetMLTaskRunInput struct {
	_ struct{} `type:"structure"`

	// The unique identifier of the task run.
	//
	// TaskRunId is a required field
	TaskRunId *string `min:"1" type:"string" required:"true"`

	// The unique identifier of the machine learning transform.
	//
	// TransformId is a required field
	TransformId *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 GetMLTaskRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMLTaskRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetMLTaskRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetMLTaskRunInput"}
	if s.TaskRunId == nil {
		invalidParams.Add(request.NewErrParamRequired("TaskRunId"))
	}
	if s.TaskRunId != nil && len(*s.TaskRunId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TaskRunId", 1))
	}
	if s.TransformId == nil {
		invalidParams.Add(request.NewErrParamRequired("TransformId"))
	}
	if s.TransformId != nil && len(*s.TransformId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TransformId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTaskRunId sets the TaskRunId field's value.
func (s *GetMLTaskRunInput) SetTaskRunId(v string) *GetMLTaskRunInput {
	s.TaskRunId = &v
	return s
}

// SetTransformId sets the TransformId field's value.
func (s *GetMLTaskRunInput) SetTransformId(v string) *GetMLTaskRunInput {
	s.TransformId = &v
	return s
}

type GetMLTaskRunOutput struct {
	_ struct{} `type:"structure"`

	// The date and time when this task run was completed.
	CompletedOn *time.Time `type:"timestamp"`

	// The error strings that are associated with the task run.
	ErrorString *string `type:"string"`

	// The amount of time (in seconds) that the task run consumed resources.
	ExecutionTime *int64 `type:"integer"`

	// The date and time when this task run was last modified.
	LastModifiedOn *time.Time `type:"timestamp"`

	// The names of the log groups that are associated with the task run.
	LogGroupName *string `type:"string"`

	// The list of properties that are associated with the task run.
	Properties *TaskRunProperties `type:"structure"`

	// The date and time when this task run started.
	StartedOn *time.Time `type:"timestamp"`

	// The status for this task run.
	Status *string `type:"string" enum:"TaskStatusType"`

	// The unique run identifier associated with this run.
	TaskRunId *string `min:"1" type:"string"`

	// The unique identifier of the task run.
	TransformId *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 GetMLTaskRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMLTaskRunOutput) GoString() string {
	return s.String()
}

// SetCompletedOn sets the CompletedOn field's value.
func (s *GetMLTaskRunOutput) SetCompletedOn(v time.Time) *GetMLTaskRunOutput {
	s.CompletedOn = &v
	return s
}

// SetErrorString sets the ErrorString field's value.
func (s *GetMLTaskRunOutput) SetErrorString(v string) *GetMLTaskRunOutput {
	s.ErrorString = &v
	return s
}

// SetExecutionTime sets the ExecutionTime field's value.
func (s *GetMLTaskRunOutput) SetExecutionTime(v int64) *GetMLTaskRunOutput {
	s.ExecutionTime = &v
	return s
}

// SetLastModifiedOn sets the LastModifiedOn field's value.
func (s *GetMLTaskRunOutput) SetLastModifiedOn(v time.Time) *GetMLTaskRunOutput {
	s.LastModifiedOn = &v
	return s
}

// SetLogGroupName sets the LogGroupName field's value.
func (s *GetMLTaskRunOutput) SetLogGroupName(v string) *GetMLTaskRunOutput {
	s.LogGroupName = &v
	return s
}

// SetProperties sets the Properties field's value.
func (s *GetMLTaskRunOutput) SetProperties(v *TaskRunProperties) *GetMLTaskRunOutput {
	s.Properties = v
	return s
}

// SetStartedOn sets the StartedOn field's value.
func (s *GetMLTaskRunOutput) SetStartedOn(v time.Time) *GetMLTaskRunOutput {
	s.StartedOn = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetMLTaskRunOutput) SetStatus(v string) *GetMLTaskRunOutput {
	s.Status = &v
	return s
}

// SetTaskRunId sets the TaskRunId field's value.
func (s *GetMLTaskRunOutput) SetTaskRunId(v string) *GetMLTaskRunOutput {
	s.TaskRunId = &v
	return s
}

// SetTransformId sets the TransformId field's value.
func (s *GetMLTaskRunOutput) SetTransformId(v string) *GetMLTaskRunOutput {
	s.TransformId = &v
	return s
}

type GetMLTaskRunsInput struct {
	_ struct{} `type:"structure"`

	// The filter criteria, in the TaskRunFilterCriteria structure, for the task
	// run.
	Filter *TaskRunFilterCriteria `type:"structure"`

	// The maximum number of results to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A token for pagination of the results. The default is empty.
	NextToken *string `type:"string"`

	// The sorting criteria, in the TaskRunSortCriteria structure, for the task
	// run.
	Sort *TaskRunSortCriteria `type:"structure"`

	// The unique identifier of the machine learning transform.
	//
	// TransformId is a required field
	TransformId *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 GetMLTaskRunsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMLTaskRunsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetMLTaskRunsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetMLTaskRunsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.TransformId == nil {
		invalidParams.Add(request.NewErrParamRequired("TransformId"))
	}
	if s.TransformId != nil && len(*s.TransformId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TransformId", 1))
	}
	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
}

// SetFilter sets the Filter field's value.
func (s *GetMLTaskRunsInput) SetFilter(v *TaskRunFilterCriteria) *GetMLTaskRunsInput {
	s.Filter = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetMLTaskRunsInput) SetMaxResults(v int64) *GetMLTaskRunsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetMLTaskRunsInput) SetNextToken(v string) *GetMLTaskRunsInput {
	s.NextToken = &v
	return s
}

// SetSort sets the Sort field's value.
func (s *GetMLTaskRunsInput) SetSort(v *TaskRunSortCriteria) *GetMLTaskRunsInput {
	s.Sort = v
	return s
}

// SetTransformId sets the TransformId field's value.
func (s *GetMLTaskRunsInput) SetTransformId(v string) *GetMLTaskRunsInput {
	s.TransformId = &v
	return s
}

type GetMLTaskRunsOutput struct {
	_ struct{} `type:"structure"`

	// A pagination token, if more results are available.
	NextToken *string `type:"string"`

	// A list of task runs that are associated with the transform.
	TaskRuns []*TaskRun `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 GetMLTaskRunsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMLTaskRunsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetMLTaskRunsOutput) SetNextToken(v string) *GetMLTaskRunsOutput {
	s.NextToken = &v
	return s
}

// SetTaskRuns sets the TaskRuns field's value.
func (s *GetMLTaskRunsOutput) SetTaskRuns(v []*TaskRun) *GetMLTaskRunsOutput {
	s.TaskRuns = v
	return s
}

type GetMLTransformInput struct {
	_ struct{} `type:"structure"`

	// The unique identifier of the transform, generated at the time that the transform
	// was created.
	//
	// TransformId is a required field
	TransformId *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 GetMLTransformInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMLTransformInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetMLTransformInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetMLTransformInput"}
	if s.TransformId == nil {
		invalidParams.Add(request.NewErrParamRequired("TransformId"))
	}
	if s.TransformId != nil && len(*s.TransformId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TransformId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTransformId sets the TransformId field's value.
func (s *GetMLTransformInput) SetTransformId(v string) *GetMLTransformInput {
	s.TransformId = &v
	return s
}

type GetMLTransformOutput struct {
	_ struct{} `type:"structure"`

	// The date and time when the transform was created.
	CreatedOn *time.Time `type:"timestamp"`

	// A description of the transform.
	Description *string `type:"string"`

	// The latest evaluation metrics.
	EvaluationMetrics *EvaluationMetrics `type:"structure"`

	// This value determines which version of Glue this machine learning transform
	// is compatible with. Glue 1.0 is recommended for most customers. If the value
	// is not set, the Glue compatibility defaults to Glue 0.9. For more information,
	// see Glue Versions (https://docs.aws.amazon.com/glue/latest/dg/release-notes.html#release-notes-versions)
	// in the developer guide.
	GlueVersion *string `min:"1" type:"string"`

	// A list of Glue table definitions used by the transform.
	InputRecordTables []*Table `type:"list"`

	// The number of labels available for this transform.
	LabelCount *int64 `type:"integer"`

	// The date and time when the transform was last modified.
	LastModifiedOn *time.Time `type:"timestamp"`

	// The number of Glue data processing units (DPUs) that are allocated to task
	// runs for this transform. You can allocate from 2 to 100 DPUs; the default
	// is 10. A DPU is a relative measure of processing power that consists of 4
	// vCPUs of compute capacity and 16 GB of memory. For more information, see
	// the Glue pricing page (https://aws.amazon.com/glue/pricing/).
	//
	// When the WorkerType field is set to a value other than Standard, the MaxCapacity
	// field is set automatically and becomes read-only.
	MaxCapacity *float64 `type:"double"`

	// The maximum number of times to retry a task for this transform after a task
	// run fails.
	MaxRetries *int64 `type:"integer"`

	// The unique name given to the transform when it was created.
	Name *string `min:"1" type:"string"`

	// The number of workers of a defined workerType that are allocated when this
	// task runs.
	NumberOfWorkers *int64 `type:"integer"`

	// The configuration parameters that are specific to the algorithm used.
	Parameters *TransformParameters `type:"structure"`

	// The name or Amazon Resource Name (ARN) of the IAM role with the required
	// permissions.
	Role *string `type:"string"`

	// The Map<Column, Type> object that represents the schema that this transform
	// accepts. Has an upper bound of 100 columns.
	Schema []*SchemaColumn `type:"list"`

	// The last known status of the transform (to indicate whether it can be used
	// or not). One of "NOT_READY", "READY", or "DELETING".
	Status *string `type:"string" enum:"TransformStatusType"`

	// The timeout for a task run for this transform in minutes. This is the maximum
	// time that a task run for this transform can consume resources before it is
	// terminated and enters TIMEOUT status. The default is 2,880 minutes (48 hours).
	Timeout *int64 `min:"1" type:"integer"`

	// The encryption-at-rest settings of the transform that apply to accessing
	// user data. Machine learning transforms can access user data encrypted in
	// Amazon S3 using KMS.
	TransformEncryption *TransformEncryption `type:"structure"`

	// The unique identifier of the transform, generated at the time that the transform
	// was created.
	TransformId *string `min:"1" type:"string"`

	// The type of predefined worker that is allocated when this task runs. Accepts
	// a value of Standard, G.1X, or G.2X.
	//
	//    * For the Standard worker type, each worker provides 4 vCPU, 16 GB of
	//    memory and a 50GB disk, and 2 executors per worker.
	//
	//    * For the G.1X worker type, each worker provides 4 vCPU, 16 GB of memory
	//    and a 64GB disk, and 1 executor per worker.
	//
	//    * For the G.2X worker type, each worker provides 8 vCPU, 32 GB of memory
	//    and a 128GB disk, and 1 executor per worker.
	WorkerType *string `type:"string" enum:"WorkerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMLTransformOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMLTransformOutput) GoString() string {
	return s.String()
}

// SetCreatedOn sets the CreatedOn field's value.
func (s *GetMLTransformOutput) SetCreatedOn(v time.Time) *GetMLTransformOutput {
	s.CreatedOn = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetMLTransformOutput) SetDescription(v string) *GetMLTransformOutput {
	s.Description = &v
	return s
}

// SetEvaluationMetrics sets the EvaluationMetrics field's value.
func (s *GetMLTransformOutput) SetEvaluationMetrics(v *EvaluationMetrics) *GetMLTransformOutput {
	s.EvaluationMetrics = v
	return s
}

// SetGlueVersion sets the GlueVersion field's value.
func (s *GetMLTransformOutput) SetGlueVersion(v string) *GetMLTransformOutput {
	s.GlueVersion = &v
	return s
}

// SetInputRecordTables sets the InputRecordTables field's value.
func (s *GetMLTransformOutput) SetInputRecordTables(v []*Table) *GetMLTransformOutput {
	s.InputRecordTables = v
	return s
}

// SetLabelCount sets the LabelCount field's value.
func (s *GetMLTransformOutput) SetLabelCount(v int64) *GetMLTransformOutput {
	s.LabelCount = &v
	return s
}

// SetLastModifiedOn sets the LastModifiedOn field's value.
func (s *GetMLTransformOutput) SetLastModifiedOn(v time.Time) *GetMLTransformOutput {
	s.LastModifiedOn = &v
	return s
}

// SetMaxCapacity sets the MaxCapacity field's value.
func (s *GetMLTransformOutput) SetMaxCapacity(v float64) *GetMLTransformOutput {
	s.MaxCapacity = &v
	return s
}

// SetMaxRetries sets the MaxRetries field's value.
func (s *GetMLTransformOutput) SetMaxRetries(v int64) *GetMLTransformOutput {
	s.MaxRetries = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetMLTransformOutput) SetName(v string) *GetMLTransformOutput {
	s.Name = &v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *GetMLTransformOutput) SetNumberOfWorkers(v int64) *GetMLTransformOutput {
	s.NumberOfWorkers = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *GetMLTransformOutput) SetParameters(v *TransformParameters) *GetMLTransformOutput {
	s.Parameters = v
	return s
}

// SetRole sets the Role field's value.
func (s *GetMLTransformOutput) SetRole(v string) *GetMLTransformOutput {
	s.Role = &v
	return s
}

// SetSchema sets the Schema field's value.
func (s *GetMLTransformOutput) SetSchema(v []*SchemaColumn) *GetMLTransformOutput {
	s.Schema = v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetMLTransformOutput) SetStatus(v string) *GetMLTransformOutput {
	s.Status = &v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *GetMLTransformOutput) SetTimeout(v int64) *GetMLTransformOutput {
	s.Timeout = &v
	return s
}

// SetTransformEncryption sets the TransformEncryption field's value.
func (s *GetMLTransformOutput) SetTransformEncryption(v *TransformEncryption) *GetMLTransformOutput {
	s.TransformEncryption = v
	return s
}

// SetTransformId sets the TransformId field's value.
func (s *GetMLTransformOutput) SetTransformId(v string) *GetMLTransformOutput {
	s.TransformId = &v
	return s
}

// SetWorkerType sets the WorkerType field's value.
func (s *GetMLTransformOutput) SetWorkerType(v string) *GetMLTransformOutput {
	s.WorkerType = &v
	return s
}

type GetMLTransformsInput struct {
	_ struct{} `type:"structure"`

	// The filter transformation criteria.
	Filter *TransformFilterCriteria `type:"structure"`

	// The maximum number of results to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A paginated token to offset the results.
	NextToken *string `type:"string"`

	// The sorting criteria.
	Sort *TransformSortCriteria `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMLTransformsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMLTransformsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetMLTransformsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetMLTransformsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filter != nil {
		if err := s.Filter.Validate(); err != nil {
			invalidParams.AddNested("Filter", 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
}

// SetFilter sets the Filter field's value.
func (s *GetMLTransformsInput) SetFilter(v *TransformFilterCriteria) *GetMLTransformsInput {
	s.Filter = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetMLTransformsInput) SetMaxResults(v int64) *GetMLTransformsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetMLTransformsInput) SetNextToken(v string) *GetMLTransformsInput {
	s.NextToken = &v
	return s
}

// SetSort sets the Sort field's value.
func (s *GetMLTransformsInput) SetSort(v *TransformSortCriteria) *GetMLTransformsInput {
	s.Sort = v
	return s
}

type GetMLTransformsOutput struct {
	_ struct{} `type:"structure"`

	// A pagination token, if more results are available.
	NextToken *string `type:"string"`

	// A list of machine learning transforms.
	//
	// Transforms is a required field
	Transforms []*MLTransform `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 GetMLTransformsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMLTransformsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetMLTransformsOutput) SetNextToken(v string) *GetMLTransformsOutput {
	s.NextToken = &v
	return s
}

// SetTransforms sets the Transforms field's value.
func (s *GetMLTransformsOutput) SetTransforms(v []*MLTransform) *GetMLTransformsOutput {
	s.Transforms = v
	return s
}

type GetMappingInput struct {
	_ struct{} `type:"structure"`

	// Parameters for the mapping.
	Location *Location `type:"structure"`

	// A list of target tables.
	Sinks []*CatalogEntry `type:"list"`

	// Specifies the source table.
	//
	// Source is a required field
	Source *CatalogEntry `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 GetMappingInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMappingInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetMappingInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetMappingInput"}
	if s.Source == nil {
		invalidParams.Add(request.NewErrParamRequired("Source"))
	}
	if s.Location != nil {
		if err := s.Location.Validate(); err != nil {
			invalidParams.AddNested("Location", err.(request.ErrInvalidParams))
		}
	}
	if s.Sinks != nil {
		for i, v := range s.Sinks {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Sinks", 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
}

// SetLocation sets the Location field's value.
func (s *GetMappingInput) SetLocation(v *Location) *GetMappingInput {
	s.Location = v
	return s
}

// SetSinks sets the Sinks field's value.
func (s *GetMappingInput) SetSinks(v []*CatalogEntry) *GetMappingInput {
	s.Sinks = v
	return s
}

// SetSource sets the Source field's value.
func (s *GetMappingInput) SetSource(v *CatalogEntry) *GetMappingInput {
	s.Source = v
	return s
}

type GetMappingOutput struct {
	_ struct{} `type:"structure"`

	// A list of mappings to the specified targets.
	//
	// Mapping is a required field
	Mapping []*MappingEntry `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 GetMappingOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetMappingOutput) GoString() string {
	return s.String()
}

// SetMapping sets the Mapping field's value.
func (s *GetMappingOutput) SetMapping(v []*MappingEntry) *GetMappingOutput {
	s.Mapping = v
	return s
}

type GetPartitionIndexesInput struct {
	_ struct{} `type:"structure"`

	// The catalog ID where the table resides.
	CatalogId *string `min:"1" type:"string"`

	// Specifies the name of a database from which you want to retrieve partition
	// indexes.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// A continuation token, included if this is a continuation call.
	NextToken *string `type:"string"`

	// Specifies the name of a table for which you want to retrieve the partition
	// indexes.
	//
	// TableName is a required field
	TableName *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 GetPartitionIndexesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetPartitionIndexesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetPartitionIndexesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetPartitionIndexesInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetPartitionIndexesInput) SetCatalogId(v string) *GetPartitionIndexesInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetPartitionIndexesInput) SetDatabaseName(v string) *GetPartitionIndexesInput {
	s.DatabaseName = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetPartitionIndexesInput) SetNextToken(v string) *GetPartitionIndexesInput {
	s.NextToken = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *GetPartitionIndexesInput) SetTableName(v string) *GetPartitionIndexesInput {
	s.TableName = &v
	return s
}

type GetPartitionIndexesOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token, present if the current list segment is not the last.
	NextToken *string `type:"string"`

	// A list of index descriptors.
	PartitionIndexDescriptorList []*PartitionIndexDescriptor `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 GetPartitionIndexesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetPartitionIndexesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetPartitionIndexesOutput) SetNextToken(v string) *GetPartitionIndexesOutput {
	s.NextToken = &v
	return s
}

// SetPartitionIndexDescriptorList sets the PartitionIndexDescriptorList field's value.
func (s *GetPartitionIndexesOutput) SetPartitionIndexDescriptorList(v []*PartitionIndexDescriptor) *GetPartitionIndexesOutput {
	s.PartitionIndexDescriptorList = v
	return s
}

type GetPartitionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the partition in question resides. If none
	// is provided, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the catalog database where the partition resides.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The values that define the partition.
	//
	// PartitionValues is a required field
	PartitionValues []*string `type:"list" required:"true"`

	// The name of the partition's table.
	//
	// TableName is a required field
	TableName *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 GetPartitionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetPartitionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetPartitionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetPartitionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.PartitionValues == nil {
		invalidParams.Add(request.NewErrParamRequired("PartitionValues"))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetPartitionInput) SetCatalogId(v string) *GetPartitionInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetPartitionInput) SetDatabaseName(v string) *GetPartitionInput {
	s.DatabaseName = &v
	return s
}

// SetPartitionValues sets the PartitionValues field's value.
func (s *GetPartitionInput) SetPartitionValues(v []*string) *GetPartitionInput {
	s.PartitionValues = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *GetPartitionInput) SetTableName(v string) *GetPartitionInput {
	s.TableName = &v
	return s
}

type GetPartitionOutput struct {
	_ struct{} `type:"structure"`

	// The requested information, in the form of a Partition object.
	Partition *Partition `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetPartitionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetPartitionOutput) GoString() string {
	return s.String()
}

// SetPartition sets the Partition field's value.
func (s *GetPartitionOutput) SetPartition(v *Partition) *GetPartitionOutput {
	s.Partition = v
	return s
}

type GetPartitionsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the partitions in question reside. If none
	// is provided, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the catalog database where the partitions reside.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// When true, specifies not returning the partition column schema. Useful when
	// you are interested only in other partition attributes such as partition values
	// or location. This approach avoids the problem of a large response by not
	// returning duplicate data.
	ExcludeColumnSchema *bool `type:"boolean"`

	// An expression that filters the partitions to be returned.
	//
	// The expression uses SQL syntax similar to the SQL WHERE filter clause. The
	// SQL statement parser JSQLParser (http://jsqlparser.sourceforge.net/home.php)
	// parses the expression.
	//
	// Operators: The following are the operators that you can use in the Expression
	// API call:
	//
	// =
	//
	// Checks whether the values of the two operands are equal; if yes, then the
	// condition becomes true.
	//
	// Example: Assume 'variable a' holds 10 and 'variable b' holds 20.
	//
	// (a = b) is not true.
	//
	// < >
	//
	// Checks whether the values of two operands are equal; if the values are not
	// equal, then the condition becomes true.
	//
	// Example: (a < > b) is true.
	//
	// >
	//
	// Checks whether the value of the left operand is greater than the value of
	// the right operand; if yes, then the condition becomes true.
	//
	// Example: (a > b) is not true.
	//
	// <
	//
	// Checks whether the value of the left operand is less than the value of the
	// right operand; if yes, then the condition becomes true.
	//
	// Example: (a < b) is true.
	//
	// >=
	//
	// Checks whether the value of the left operand is greater than or equal to
	// the value of the right operand; if yes, then the condition becomes true.
	//
	// Example: (a >= b) is not true.
	//
	// <=
	//
	// Checks whether the value of the left operand is less than or equal to the
	// value of the right operand; if yes, then the condition becomes true.
	//
	// Example: (a <= b) is true.
	//
	// AND, OR, IN, BETWEEN, LIKE, NOT, IS NULL
	//
	// Logical operators.
	//
	// Supported Partition Key Types: The following are the supported partition
	// keys.
	//
	//    * string
	//
	//    * date
	//
	//    * timestamp
	//
	//    * int
	//
	//    * bigint
	//
	//    * long
	//
	//    * tinyint
	//
	//    * smallint
	//
	//    * decimal
	//
	// If an type is encountered that is not valid, an exception is thrown.
	//
	// The following list shows the valid operators on each type. When you define
	// a crawler, the partitionKey type is created as a STRING, to be compatible
	// with the catalog partitions.
	//
	// Sample API Call:
	Expression *string `type:"string"`

	// The maximum number of partitions to return in a single response.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is not the first call to retrieve these partitions.
	NextToken *string `type:"string"`

	// The time as of when to read the partition contents. If not set, the most
	// recent transaction commit time will be used. Cannot be specified along with
	// TransactionId.
	QueryAsOfTime *time.Time `type:"timestamp"`

	// The segment of the table's partitions to scan in this request.
	Segment *Segment `type:"structure"`

	// The name of the partitions' table.
	//
	// TableName is a required field
	TableName *string `min:"1" type:"string" required:"true"`

	// The transaction ID at which to read the partition contents.
	TransactionId *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 GetPartitionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetPartitionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetPartitionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetPartitionsInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}
	if s.TransactionId != nil && len(*s.TransactionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TransactionId", 1))
	}
	if s.Segment != nil {
		if err := s.Segment.Validate(); err != nil {
			invalidParams.AddNested("Segment", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetPartitionsInput) SetCatalogId(v string) *GetPartitionsInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetPartitionsInput) SetDatabaseName(v string) *GetPartitionsInput {
	s.DatabaseName = &v
	return s
}

// SetExcludeColumnSchema sets the ExcludeColumnSchema field's value.
func (s *GetPartitionsInput) SetExcludeColumnSchema(v bool) *GetPartitionsInput {
	s.ExcludeColumnSchema = &v
	return s
}

// SetExpression sets the Expression field's value.
func (s *GetPartitionsInput) SetExpression(v string) *GetPartitionsInput {
	s.Expression = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetPartitionsInput) SetMaxResults(v int64) *GetPartitionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetPartitionsInput) SetNextToken(v string) *GetPartitionsInput {
	s.NextToken = &v
	return s
}

// SetQueryAsOfTime sets the QueryAsOfTime field's value.
func (s *GetPartitionsInput) SetQueryAsOfTime(v time.Time) *GetPartitionsInput {
	s.QueryAsOfTime = &v
	return s
}

// SetSegment sets the Segment field's value.
func (s *GetPartitionsInput) SetSegment(v *Segment) *GetPartitionsInput {
	s.Segment = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *GetPartitionsInput) SetTableName(v string) *GetPartitionsInput {
	s.TableName = &v
	return s
}

// SetTransactionId sets the TransactionId field's value.
func (s *GetPartitionsInput) SetTransactionId(v string) *GetPartitionsInput {
	s.TransactionId = &v
	return s
}

type GetPartitionsOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token, if the returned list of partitions does not include
	// the last one.
	NextToken *string `type:"string"`

	// A list of requested partitions.
	Partitions []*Partition `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 GetPartitionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetPartitionsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetPartitionsOutput) SetNextToken(v string) *GetPartitionsOutput {
	s.NextToken = &v
	return s
}

// SetPartitions sets the Partitions field's value.
func (s *GetPartitionsOutput) SetPartitions(v []*Partition) *GetPartitionsOutput {
	s.Partitions = v
	return s
}

type GetPlanInput struct {
	_ struct{} `type:"structure"`

	// A map to hold additional optional key-value parameters.
	//
	// Currently, these key-value pairs are supported:
	//
	//    * inferSchema — Specifies whether to set inferSchema to true or false
	//    for the default script generated by an Glue job. For example, to set inferSchema
	//    to true, pass the following key value pair: --additional-plan-options-map
	//    '{"inferSchema":"true"}'
	AdditionalPlanOptionsMap map[string]*string `type:"map"`

	// The programming language of the code to perform the mapping.
	Language *string `type:"string" enum:"Language"`

	// The parameters for the mapping.
	Location *Location `type:"structure"`

	// The list of mappings from a source table to target tables.
	//
	// Mapping is a required field
	Mapping []*MappingEntry `type:"list" required:"true"`

	// The target tables.
	Sinks []*CatalogEntry `type:"list"`

	// The source table.
	//
	// Source is a required field
	Source *CatalogEntry `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 GetPlanInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetPlanInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetPlanInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetPlanInput"}
	if s.Mapping == nil {
		invalidParams.Add(request.NewErrParamRequired("Mapping"))
	}
	if s.Source == nil {
		invalidParams.Add(request.NewErrParamRequired("Source"))
	}
	if s.Location != nil {
		if err := s.Location.Validate(); err != nil {
			invalidParams.AddNested("Location", err.(request.ErrInvalidParams))
		}
	}
	if s.Sinks != nil {
		for i, v := range s.Sinks {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Sinks", 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
}

// SetAdditionalPlanOptionsMap sets the AdditionalPlanOptionsMap field's value.
func (s *GetPlanInput) SetAdditionalPlanOptionsMap(v map[string]*string) *GetPlanInput {
	s.AdditionalPlanOptionsMap = v
	return s
}

// SetLanguage sets the Language field's value.
func (s *GetPlanInput) SetLanguage(v string) *GetPlanInput {
	s.Language = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *GetPlanInput) SetLocation(v *Location) *GetPlanInput {
	s.Location = v
	return s
}

// SetMapping sets the Mapping field's value.
func (s *GetPlanInput) SetMapping(v []*MappingEntry) *GetPlanInput {
	s.Mapping = v
	return s
}

// SetSinks sets the Sinks field's value.
func (s *GetPlanInput) SetSinks(v []*CatalogEntry) *GetPlanInput {
	s.Sinks = v
	return s
}

// SetSource sets the Source field's value.
func (s *GetPlanInput) SetSource(v *CatalogEntry) *GetPlanInput {
	s.Source = v
	return s
}

type GetPlanOutput struct {
	_ struct{} `type:"structure"`

	// A Python script to perform the mapping.
	PythonScript *string `type:"string"`

	// The Scala code to perform the mapping.
	ScalaCode *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 GetPlanOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetPlanOutput) GoString() string {
	return s.String()
}

// SetPythonScript sets the PythonScript field's value.
func (s *GetPlanOutput) SetPythonScript(v string) *GetPlanOutput {
	s.PythonScript = &v
	return s
}

// SetScalaCode sets the ScalaCode field's value.
func (s *GetPlanOutput) SetScalaCode(v string) *GetPlanOutput {
	s.ScalaCode = &v
	return s
}

type GetRegistryInput struct {
	_ struct{} `type:"structure"`

	// This is a wrapper structure that may contain the registry name and Amazon
	// Resource Name (ARN).
	//
	// RegistryId is a required field
	RegistryId *RegistryId `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 GetRegistryInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRegistryInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetRegistryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetRegistryInput"}
	if s.RegistryId == nil {
		invalidParams.Add(request.NewErrParamRequired("RegistryId"))
	}
	if s.RegistryId != nil {
		if err := s.RegistryId.Validate(); err != nil {
			invalidParams.AddNested("RegistryId", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRegistryId sets the RegistryId field's value.
func (s *GetRegistryInput) SetRegistryId(v *RegistryId) *GetRegistryInput {
	s.RegistryId = v
	return s
}

type GetRegistryOutput struct {
	_ struct{} `type:"structure"`

	// The date and time the registry was created.
	CreatedTime *string `type:"string"`

	// A description of the registry.
	Description *string `type:"string"`

	// The Amazon Resource Name (ARN) of the registry.
	RegistryArn *string `min:"1" type:"string"`

	// The name of the registry.
	RegistryName *string `min:"1" type:"string"`

	// The status of the registry.
	Status *string `type:"string" enum:"RegistryStatus"`

	// The date and time the registry was updated.
	UpdatedTime *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 GetRegistryOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetRegistryOutput) GoString() string {
	return s.String()
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *GetRegistryOutput) SetCreatedTime(v string) *GetRegistryOutput {
	s.CreatedTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetRegistryOutput) SetDescription(v string) *GetRegistryOutput {
	s.Description = &v
	return s
}

// SetRegistryArn sets the RegistryArn field's value.
func (s *GetRegistryOutput) SetRegistryArn(v string) *GetRegistryOutput {
	s.RegistryArn = &v
	return s
}

// SetRegistryName sets the RegistryName field's value.
func (s *GetRegistryOutput) SetRegistryName(v string) *GetRegistryOutput {
	s.RegistryName = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetRegistryOutput) SetStatus(v string) *GetRegistryOutput {
	s.Status = &v
	return s
}

// SetUpdatedTime sets the UpdatedTime field's value.
func (s *GetRegistryOutput) SetUpdatedTime(v string) *GetRegistryOutput {
	s.UpdatedTime = &v
	return s
}

type GetResourcePoliciesInput struct {
	_ struct{} `type:"structure"`

	// The maximum size of a list to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation 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 GetResourcePoliciesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetResourcePoliciesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetResourcePoliciesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetResourcePoliciesInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetResourcePoliciesInput) SetMaxResults(v int64) *GetResourcePoliciesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetResourcePoliciesInput) SetNextToken(v string) *GetResourcePoliciesInput {
	s.NextToken = &v
	return s
}

type GetResourcePoliciesOutput struct {
	_ struct{} `type:"structure"`

	// A list of the individual resource policies and the account-level resource
	// policy.
	GetResourcePoliciesResponseList []*GluePolicy `type:"list"`

	// A continuation token, if the returned list does not contain the last resource
	// policy available.
	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 GetResourcePoliciesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetResourcePoliciesOutput) GoString() string {
	return s.String()
}

// SetGetResourcePoliciesResponseList sets the GetResourcePoliciesResponseList field's value.
func (s *GetResourcePoliciesOutput) SetGetResourcePoliciesResponseList(v []*GluePolicy) *GetResourcePoliciesOutput {
	s.GetResourcePoliciesResponseList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetResourcePoliciesOutput) SetNextToken(v string) *GetResourcePoliciesOutput {
	s.NextToken = &v
	return s
}

type GetResourcePolicyInput struct {
	_ struct{} `type:"structure"`

	// The ARN of the Glue resource for which to retrieve the resource policy. If
	// not supplied, the Data Catalog resource policy is returned. Use GetResourcePolicies
	// to view all existing resource policies. For more information see Specifying
	// Glue Resource ARNs (https://docs.aws.amazon.com/glue/latest/dg/glue-specifying-resource-arns.html).
	ResourceArn *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 GetResourcePolicyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetResourcePolicyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetResourcePolicyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetResourcePolicyInput"}
	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 *GetResourcePolicyInput) SetResourceArn(v string) *GetResourcePolicyInput {
	s.ResourceArn = &v
	return s
}

type GetResourcePolicyOutput struct {
	_ struct{} `type:"structure"`

	// The date and time at which the policy was created.
	CreateTime *time.Time `type:"timestamp"`

	// Contains the hash value associated with this policy.
	PolicyHash *string `min:"1" type:"string"`

	// Contains the requested policy document, in JSON format.
	PolicyInJson *string `min:"2" type:"string"`

	// The date and time at which the policy was last updated.
	UpdateTime *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 GetResourcePolicyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetResourcePolicyOutput) GoString() string {
	return s.String()
}

// SetCreateTime sets the CreateTime field's value.
func (s *GetResourcePolicyOutput) SetCreateTime(v time.Time) *GetResourcePolicyOutput {
	s.CreateTime = &v
	return s
}

// SetPolicyHash sets the PolicyHash field's value.
func (s *GetResourcePolicyOutput) SetPolicyHash(v string) *GetResourcePolicyOutput {
	s.PolicyHash = &v
	return s
}

// SetPolicyInJson sets the PolicyInJson field's value.
func (s *GetResourcePolicyOutput) SetPolicyInJson(v string) *GetResourcePolicyOutput {
	s.PolicyInJson = &v
	return s
}

// SetUpdateTime sets the UpdateTime field's value.
func (s *GetResourcePolicyOutput) SetUpdateTime(v time.Time) *GetResourcePolicyOutput {
	s.UpdateTime = &v
	return s
}

type GetSchemaByDefinitionInput struct {
	_ struct{} `type:"structure"`

	// The definition of the schema for which schema details are required.
	//
	// SchemaDefinition is a required field
	SchemaDefinition *string `min:"1" type:"string" required:"true"`

	// This is a wrapper structure to contain schema identity fields. The structure
	// contains:
	//
	//    * SchemaId$SchemaArn: The Amazon Resource Name (ARN) of the schema. One
	//    of SchemaArn or SchemaName has to be provided.
	//
	//    * SchemaId$SchemaName: The name of the schema. One of SchemaArn or SchemaName
	//    has to be provided.
	//
	// SchemaId is a required field
	SchemaId *SchemaId `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 GetSchemaByDefinitionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSchemaByDefinitionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetSchemaByDefinitionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetSchemaByDefinitionInput"}
	if s.SchemaDefinition == nil {
		invalidParams.Add(request.NewErrParamRequired("SchemaDefinition"))
	}
	if s.SchemaDefinition != nil && len(*s.SchemaDefinition) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SchemaDefinition", 1))
	}
	if s.SchemaId == nil {
		invalidParams.Add(request.NewErrParamRequired("SchemaId"))
	}
	if s.SchemaId != nil {
		if err := s.SchemaId.Validate(); err != nil {
			invalidParams.AddNested("SchemaId", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSchemaDefinition sets the SchemaDefinition field's value.
func (s *GetSchemaByDefinitionInput) SetSchemaDefinition(v string) *GetSchemaByDefinitionInput {
	s.SchemaDefinition = &v
	return s
}

// SetSchemaId sets the SchemaId field's value.
func (s *GetSchemaByDefinitionInput) SetSchemaId(v *SchemaId) *GetSchemaByDefinitionInput {
	s.SchemaId = v
	return s
}

type GetSchemaByDefinitionOutput struct {
	_ struct{} `type:"structure"`

	// The date and time the schema was created.
	CreatedTime *string `type:"string"`

	// The data format of the schema definition. Currently AVRO, JSON and PROTOBUF
	// are supported.
	DataFormat *string `type:"string" enum:"DataFormat"`

	// The Amazon Resource Name (ARN) of the schema.
	SchemaArn *string `min:"1" type:"string"`

	// The schema ID of the schema version.
	SchemaVersionId *string `min:"36" type:"string"`

	// The status of the schema version.
	Status *string `type:"string" enum:"SchemaVersionStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSchemaByDefinitionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSchemaByDefinitionOutput) GoString() string {
	return s.String()
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *GetSchemaByDefinitionOutput) SetCreatedTime(v string) *GetSchemaByDefinitionOutput {
	s.CreatedTime = &v
	return s
}

// SetDataFormat sets the DataFormat field's value.
func (s *GetSchemaByDefinitionOutput) SetDataFormat(v string) *GetSchemaByDefinitionOutput {
	s.DataFormat = &v
	return s
}

// SetSchemaArn sets the SchemaArn field's value.
func (s *GetSchemaByDefinitionOutput) SetSchemaArn(v string) *GetSchemaByDefinitionOutput {
	s.SchemaArn = &v
	return s
}

// SetSchemaVersionId sets the SchemaVersionId field's value.
func (s *GetSchemaByDefinitionOutput) SetSchemaVersionId(v string) *GetSchemaByDefinitionOutput {
	s.SchemaVersionId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetSchemaByDefinitionOutput) SetStatus(v string) *GetSchemaByDefinitionOutput {
	s.Status = &v
	return s
}

type GetSchemaInput struct {
	_ struct{} `type:"structure"`

	// This is a wrapper structure to contain schema identity fields. The structure
	// contains:
	//
	//    * SchemaId$SchemaArn: The Amazon Resource Name (ARN) of the schema. Either
	//    SchemaArn or SchemaName and RegistryName has to be provided.
	//
	//    * SchemaId$SchemaName: The name of the schema. Either SchemaArn or SchemaName
	//    and RegistryName has to be provided.
	//
	// SchemaId is a required field
	SchemaId *SchemaId `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 GetSchemaInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSchemaInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetSchemaInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetSchemaInput"}
	if s.SchemaId == nil {
		invalidParams.Add(request.NewErrParamRequired("SchemaId"))
	}
	if s.SchemaId != nil {
		if err := s.SchemaId.Validate(); err != nil {
			invalidParams.AddNested("SchemaId", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSchemaId sets the SchemaId field's value.
func (s *GetSchemaInput) SetSchemaId(v *SchemaId) *GetSchemaInput {
	s.SchemaId = v
	return s
}

type GetSchemaOutput struct {
	_ struct{} `type:"structure"`

	// The compatibility mode of the schema.
	Compatibility *string `type:"string" enum:"Compatibility"`

	// The date and time the schema was created.
	CreatedTime *string `type:"string"`

	// The data format of the schema definition. Currently AVRO, JSON and PROTOBUF
	// are supported.
	DataFormat *string `type:"string" enum:"DataFormat"`

	// A description of schema if specified when created
	Description *string `type:"string"`

	// The latest version of the schema associated with the returned schema definition.
	LatestSchemaVersion *int64 `min:"1" type:"long"`

	// The next version of the schema associated with the returned schema definition.
	NextSchemaVersion *int64 `min:"1" type:"long"`

	// The Amazon Resource Name (ARN) of the registry.
	RegistryArn *string `min:"1" type:"string"`

	// The name of the registry.
	RegistryName *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the schema.
	SchemaArn *string `min:"1" type:"string"`

	// The version number of the checkpoint (the last time the compatibility mode
	// was changed).
	SchemaCheckpoint *int64 `min:"1" type:"long"`

	// The name of the schema.
	SchemaName *string `min:"1" type:"string"`

	// The status of the schema.
	SchemaStatus *string `type:"string" enum:"SchemaStatus"`

	// The date and time the schema was updated.
	UpdatedTime *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 GetSchemaOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSchemaOutput) GoString() string {
	return s.String()
}

// SetCompatibility sets the Compatibility field's value.
func (s *GetSchemaOutput) SetCompatibility(v string) *GetSchemaOutput {
	s.Compatibility = &v
	return s
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *GetSchemaOutput) SetCreatedTime(v string) *GetSchemaOutput {
	s.CreatedTime = &v
	return s
}

// SetDataFormat sets the DataFormat field's value.
func (s *GetSchemaOutput) SetDataFormat(v string) *GetSchemaOutput {
	s.DataFormat = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetSchemaOutput) SetDescription(v string) *GetSchemaOutput {
	s.Description = &v
	return s
}

// SetLatestSchemaVersion sets the LatestSchemaVersion field's value.
func (s *GetSchemaOutput) SetLatestSchemaVersion(v int64) *GetSchemaOutput {
	s.LatestSchemaVersion = &v
	return s
}

// SetNextSchemaVersion sets the NextSchemaVersion field's value.
func (s *GetSchemaOutput) SetNextSchemaVersion(v int64) *GetSchemaOutput {
	s.NextSchemaVersion = &v
	return s
}

// SetRegistryArn sets the RegistryArn field's value.
func (s *GetSchemaOutput) SetRegistryArn(v string) *GetSchemaOutput {
	s.RegistryArn = &v
	return s
}

// SetRegistryName sets the RegistryName field's value.
func (s *GetSchemaOutput) SetRegistryName(v string) *GetSchemaOutput {
	s.RegistryName = &v
	return s
}

// SetSchemaArn sets the SchemaArn field's value.
func (s *GetSchemaOutput) SetSchemaArn(v string) *GetSchemaOutput {
	s.SchemaArn = &v
	return s
}

// SetSchemaCheckpoint sets the SchemaCheckpoint field's value.
func (s *GetSchemaOutput) SetSchemaCheckpoint(v int64) *GetSchemaOutput {
	s.SchemaCheckpoint = &v
	return s
}

// SetSchemaName sets the SchemaName field's value.
func (s *GetSchemaOutput) SetSchemaName(v string) *GetSchemaOutput {
	s.SchemaName = &v
	return s
}

// SetSchemaStatus sets the SchemaStatus field's value.
func (s *GetSchemaOutput) SetSchemaStatus(v string) *GetSchemaOutput {
	s.SchemaStatus = &v
	return s
}

// SetUpdatedTime sets the UpdatedTime field's value.
func (s *GetSchemaOutput) SetUpdatedTime(v string) *GetSchemaOutput {
	s.UpdatedTime = &v
	return s
}

type GetSchemaVersionInput struct {
	_ struct{} `type:"structure"`

	// This is a wrapper structure to contain schema identity fields. The structure
	// contains:
	//
	//    * SchemaId$SchemaArn: The Amazon Resource Name (ARN) of the schema. Either
	//    SchemaArn or SchemaName and RegistryName has to be provided.
	//
	//    * SchemaId$SchemaName: The name of the schema. Either SchemaArn or SchemaName
	//    and RegistryName has to be provided.
	SchemaId *SchemaId `type:"structure"`

	// The SchemaVersionId of the schema version. This field is required for fetching
	// by schema ID. Either this or the SchemaId wrapper has to be provided.
	SchemaVersionId *string `min:"36" type:"string"`

	// The version number of the schema.
	SchemaVersionNumber *SchemaVersionNumber `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSchemaVersionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSchemaVersionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetSchemaVersionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetSchemaVersionInput"}
	if s.SchemaVersionId != nil && len(*s.SchemaVersionId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("SchemaVersionId", 36))
	}
	if s.SchemaId != nil {
		if err := s.SchemaId.Validate(); err != nil {
			invalidParams.AddNested("SchemaId", err.(request.ErrInvalidParams))
		}
	}
	if s.SchemaVersionNumber != nil {
		if err := s.SchemaVersionNumber.Validate(); err != nil {
			invalidParams.AddNested("SchemaVersionNumber", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSchemaId sets the SchemaId field's value.
func (s *GetSchemaVersionInput) SetSchemaId(v *SchemaId) *GetSchemaVersionInput {
	s.SchemaId = v
	return s
}

// SetSchemaVersionId sets the SchemaVersionId field's value.
func (s *GetSchemaVersionInput) SetSchemaVersionId(v string) *GetSchemaVersionInput {
	s.SchemaVersionId = &v
	return s
}

// SetSchemaVersionNumber sets the SchemaVersionNumber field's value.
func (s *GetSchemaVersionInput) SetSchemaVersionNumber(v *SchemaVersionNumber) *GetSchemaVersionInput {
	s.SchemaVersionNumber = v
	return s
}

type GetSchemaVersionOutput struct {
	_ struct{} `type:"structure"`

	// The date and time the schema version was created.
	CreatedTime *string `type:"string"`

	// The data format of the schema definition. Currently AVRO, JSON and PROTOBUF
	// are supported.
	DataFormat *string `type:"string" enum:"DataFormat"`

	// The Amazon Resource Name (ARN) of the schema.
	SchemaArn *string `min:"1" type:"string"`

	// The schema definition for the schema ID.
	SchemaDefinition *string `min:"1" type:"string"`

	// The SchemaVersionId of the schema version.
	SchemaVersionId *string `min:"36" type:"string"`

	// The status of the schema version.
	Status *string `type:"string" enum:"SchemaVersionStatus"`

	// The version number of the schema.
	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 GetSchemaVersionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSchemaVersionOutput) GoString() string {
	return s.String()
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *GetSchemaVersionOutput) SetCreatedTime(v string) *GetSchemaVersionOutput {
	s.CreatedTime = &v
	return s
}

// SetDataFormat sets the DataFormat field's value.
func (s *GetSchemaVersionOutput) SetDataFormat(v string) *GetSchemaVersionOutput {
	s.DataFormat = &v
	return s
}

// SetSchemaArn sets the SchemaArn field's value.
func (s *GetSchemaVersionOutput) SetSchemaArn(v string) *GetSchemaVersionOutput {
	s.SchemaArn = &v
	return s
}

// SetSchemaDefinition sets the SchemaDefinition field's value.
func (s *GetSchemaVersionOutput) SetSchemaDefinition(v string) *GetSchemaVersionOutput {
	s.SchemaDefinition = &v
	return s
}

// SetSchemaVersionId sets the SchemaVersionId field's value.
func (s *GetSchemaVersionOutput) SetSchemaVersionId(v string) *GetSchemaVersionOutput {
	s.SchemaVersionId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetSchemaVersionOutput) SetStatus(v string) *GetSchemaVersionOutput {
	s.Status = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *GetSchemaVersionOutput) SetVersionNumber(v int64) *GetSchemaVersionOutput {
	s.VersionNumber = &v
	return s
}

type GetSchemaVersionsDiffInput struct {
	_ struct{} `type:"structure"`

	// The first of the two schema versions to be compared.
	//
	// FirstSchemaVersionNumber is a required field
	FirstSchemaVersionNumber *SchemaVersionNumber `type:"structure" required:"true"`

	// Refers to SYNTAX_DIFF, which is the currently supported diff type.
	//
	// SchemaDiffType is a required field
	SchemaDiffType *string `type:"string" required:"true" enum:"SchemaDiffType"`

	// This is a wrapper structure to contain schema identity fields. The structure
	// contains:
	//
	//    * SchemaId$SchemaArn: The Amazon Resource Name (ARN) of the schema. One
	//    of SchemaArn or SchemaName has to be provided.
	//
	//    * SchemaId$SchemaName: The name of the schema. One of SchemaArn or SchemaName
	//    has to be provided.
	//
	// SchemaId is a required field
	SchemaId *SchemaId `type:"structure" required:"true"`

	// The second of the two schema versions to be compared.
	//
	// SecondSchemaVersionNumber is a required field
	SecondSchemaVersionNumber *SchemaVersionNumber `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 GetSchemaVersionsDiffInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSchemaVersionsDiffInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetSchemaVersionsDiffInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetSchemaVersionsDiffInput"}
	if s.FirstSchemaVersionNumber == nil {
		invalidParams.Add(request.NewErrParamRequired("FirstSchemaVersionNumber"))
	}
	if s.SchemaDiffType == nil {
		invalidParams.Add(request.NewErrParamRequired("SchemaDiffType"))
	}
	if s.SchemaId == nil {
		invalidParams.Add(request.NewErrParamRequired("SchemaId"))
	}
	if s.SecondSchemaVersionNumber == nil {
		invalidParams.Add(request.NewErrParamRequired("SecondSchemaVersionNumber"))
	}
	if s.FirstSchemaVersionNumber != nil {
		if err := s.FirstSchemaVersionNumber.Validate(); err != nil {
			invalidParams.AddNested("FirstSchemaVersionNumber", err.(request.ErrInvalidParams))
		}
	}
	if s.SchemaId != nil {
		if err := s.SchemaId.Validate(); err != nil {
			invalidParams.AddNested("SchemaId", err.(request.ErrInvalidParams))
		}
	}
	if s.SecondSchemaVersionNumber != nil {
		if err := s.SecondSchemaVersionNumber.Validate(); err != nil {
			invalidParams.AddNested("SecondSchemaVersionNumber", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFirstSchemaVersionNumber sets the FirstSchemaVersionNumber field's value.
func (s *GetSchemaVersionsDiffInput) SetFirstSchemaVersionNumber(v *SchemaVersionNumber) *GetSchemaVersionsDiffInput {
	s.FirstSchemaVersionNumber = v
	return s
}

// SetSchemaDiffType sets the SchemaDiffType field's value.
func (s *GetSchemaVersionsDiffInput) SetSchemaDiffType(v string) *GetSchemaVersionsDiffInput {
	s.SchemaDiffType = &v
	return s
}

// SetSchemaId sets the SchemaId field's value.
func (s *GetSchemaVersionsDiffInput) SetSchemaId(v *SchemaId) *GetSchemaVersionsDiffInput {
	s.SchemaId = v
	return s
}

// SetSecondSchemaVersionNumber sets the SecondSchemaVersionNumber field's value.
func (s *GetSchemaVersionsDiffInput) SetSecondSchemaVersionNumber(v *SchemaVersionNumber) *GetSchemaVersionsDiffInput {
	s.SecondSchemaVersionNumber = v
	return s
}

type GetSchemaVersionsDiffOutput struct {
	_ struct{} `type:"structure"`

	// The difference between schemas as a string in JsonPatch format.
	Diff *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 GetSchemaVersionsDiffOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSchemaVersionsDiffOutput) GoString() string {
	return s.String()
}

// SetDiff sets the Diff field's value.
func (s *GetSchemaVersionsDiffOutput) SetDiff(v string) *GetSchemaVersionsDiffOutput {
	s.Diff = &v
	return s
}

type GetSecurityConfigurationInput struct {
	_ struct{} `type:"structure"`

	// The name of the security configuration to retrieve.
	//
	// 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 GetSecurityConfigurationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSecurityConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetSecurityConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetSecurityConfigurationInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *GetSecurityConfigurationInput) SetName(v string) *GetSecurityConfigurationInput {
	s.Name = &v
	return s
}

type GetSecurityConfigurationOutput struct {
	_ struct{} `type:"structure"`

	// The requested security configuration.
	SecurityConfiguration *SecurityConfiguration `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSecurityConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSecurityConfigurationOutput) GoString() string {
	return s.String()
}

// SetSecurityConfiguration sets the SecurityConfiguration field's value.
func (s *GetSecurityConfigurationOutput) SetSecurityConfiguration(v *SecurityConfiguration) *GetSecurityConfigurationOutput {
	s.SecurityConfiguration = v
	return s
}

type GetSecurityConfigurationsInput struct {
	_ struct{} `type:"structure"`

	// The maximum number of results to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation call.
	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 GetSecurityConfigurationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSecurityConfigurationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetSecurityConfigurationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetSecurityConfigurationsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetSecurityConfigurationsInput) SetMaxResults(v int64) *GetSecurityConfigurationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetSecurityConfigurationsInput) SetNextToken(v string) *GetSecurityConfigurationsInput {
	s.NextToken = &v
	return s
}

type GetSecurityConfigurationsOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token, if there are more security configurations to return.
	NextToken *string `type:"string"`

	// A list of security configurations.
	SecurityConfigurations []*SecurityConfiguration `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 GetSecurityConfigurationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSecurityConfigurationsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetSecurityConfigurationsOutput) SetNextToken(v string) *GetSecurityConfigurationsOutput {
	s.NextToken = &v
	return s
}

// SetSecurityConfigurations sets the SecurityConfigurations field's value.
func (s *GetSecurityConfigurationsOutput) SetSecurityConfigurations(v []*SecurityConfiguration) *GetSecurityConfigurationsOutput {
	s.SecurityConfigurations = v
	return s
}

type GetSessionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the session.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// The origin of the request.
	RequestOrigin *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 GetSessionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSessionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetSessionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetSessionInput"}
	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.RequestOrigin != nil && len(*s.RequestOrigin) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RequestOrigin", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetId sets the Id field's value.
func (s *GetSessionInput) SetId(v string) *GetSessionInput {
	s.Id = &v
	return s
}

// SetRequestOrigin sets the RequestOrigin field's value.
func (s *GetSessionInput) SetRequestOrigin(v string) *GetSessionInput {
	s.RequestOrigin = &v
	return s
}

type GetSessionOutput struct {
	_ struct{} `type:"structure"`

	// The session object is returned in the response.
	Session *Session `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSessionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSessionOutput) GoString() string {
	return s.String()
}

// SetSession sets the Session field's value.
func (s *GetSessionOutput) SetSession(v *Session) *GetSessionOutput {
	s.Session = v
	return s
}

type GetStatementInput struct {
	_ struct{} `type:"structure"`

	// The Id of the statement.
	//
	// Id is a required field
	Id *int64 `type:"integer" required:"true"`

	// The origin of the request.
	RequestOrigin *string `min:"1" type:"string"`

	// The Session ID of the statement.
	//
	// SessionId is a required field
	SessionId *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 GetStatementInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetStatementInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetStatementInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetStatementInput"}
	if s.Id == nil {
		invalidParams.Add(request.NewErrParamRequired("Id"))
	}
	if s.RequestOrigin != nil && len(*s.RequestOrigin) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RequestOrigin", 1))
	}
	if s.SessionId == nil {
		invalidParams.Add(request.NewErrParamRequired("SessionId"))
	}
	if s.SessionId != nil && len(*s.SessionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SessionId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetId sets the Id field's value.
func (s *GetStatementInput) SetId(v int64) *GetStatementInput {
	s.Id = &v
	return s
}

// SetRequestOrigin sets the RequestOrigin field's value.
func (s *GetStatementInput) SetRequestOrigin(v string) *GetStatementInput {
	s.RequestOrigin = &v
	return s
}

// SetSessionId sets the SessionId field's value.
func (s *GetStatementInput) SetSessionId(v string) *GetStatementInput {
	s.SessionId = &v
	return s
}

type GetStatementOutput struct {
	_ struct{} `type:"structure"`

	// Returns the statement.
	Statement *Statement `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetStatementOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetStatementOutput) GoString() string {
	return s.String()
}

// SetStatement sets the Statement field's value.
func (s *GetStatementOutput) SetStatement(v *Statement) *GetStatementOutput {
	s.Statement = v
	return s
}

type GetTableInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the table resides. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the database in the catalog in which the table resides. For Hive
	// compatibility, this name is entirely lowercase.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the table for which to retrieve the definition. For Hive compatibility,
	// this name is entirely lowercase.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The time as of when to read the table contents. If not set, the most recent
	// transaction commit time will be used. Cannot be specified along with TransactionId.
	QueryAsOfTime *time.Time `type:"timestamp"`

	// The transaction ID at which to read the table contents.
	TransactionId *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 GetTableInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTableInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetTableInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetTableInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 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.TransactionId != nil && len(*s.TransactionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TransactionId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetTableInput) SetCatalogId(v string) *GetTableInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetTableInput) SetDatabaseName(v string) *GetTableInput {
	s.DatabaseName = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetTableInput) SetName(v string) *GetTableInput {
	s.Name = &v
	return s
}

// SetQueryAsOfTime sets the QueryAsOfTime field's value.
func (s *GetTableInput) SetQueryAsOfTime(v time.Time) *GetTableInput {
	s.QueryAsOfTime = &v
	return s
}

// SetTransactionId sets the TransactionId field's value.
func (s *GetTableInput) SetTransactionId(v string) *GetTableInput {
	s.TransactionId = &v
	return s
}

type GetTableOptimizerInput struct {
	_ struct{} `type:"structure"`

	// The Catalog ID of the table.
	//
	// CatalogId is a required field
	CatalogId *string `min:"1" type:"string" required:"true"`

	// The name of the database in the catalog in which the table resides.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the table.
	//
	// TableName is a required field
	TableName *string `min:"1" type:"string" required:"true"`

	// The type of table optimizer.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"TableOptimizerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTableOptimizerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTableOptimizerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetTableOptimizerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetTableOptimizerInput"}
	if s.CatalogId == nil {
		invalidParams.Add(request.NewErrParamRequired("CatalogId"))
	}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetTableOptimizerInput) SetCatalogId(v string) *GetTableOptimizerInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetTableOptimizerInput) SetDatabaseName(v string) *GetTableOptimizerInput {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *GetTableOptimizerInput) SetTableName(v string) *GetTableOptimizerInput {
	s.TableName = &v
	return s
}

// SetType sets the Type field's value.
func (s *GetTableOptimizerInput) SetType(v string) *GetTableOptimizerInput {
	s.Type = &v
	return s
}

type GetTableOptimizerOutput struct {
	_ struct{} `type:"structure"`

	// The Catalog ID of the table.
	CatalogId *string `min:"1" type:"string"`

	// The name of the database in the catalog in which the table resides.
	DatabaseName *string `min:"1" type:"string"`

	// The name of the table.
	TableName *string `min:"1" type:"string"`

	// The optimizer associated with the specified table.
	TableOptimizer *TableOptimizer `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTableOptimizerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTableOptimizerOutput) GoString() string {
	return s.String()
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetTableOptimizerOutput) SetCatalogId(v string) *GetTableOptimizerOutput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetTableOptimizerOutput) SetDatabaseName(v string) *GetTableOptimizerOutput {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *GetTableOptimizerOutput) SetTableName(v string) *GetTableOptimizerOutput {
	s.TableName = &v
	return s
}

// SetTableOptimizer sets the TableOptimizer field's value.
func (s *GetTableOptimizerOutput) SetTableOptimizer(v *TableOptimizer) *GetTableOptimizerOutput {
	s.TableOptimizer = v
	return s
}

type GetTableOutput struct {
	_ struct{} `type:"structure"`

	// The Table object that defines the specified table.
	Table *TableData `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTableOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTableOutput) GoString() string {
	return s.String()
}

// SetTable sets the Table field's value.
func (s *GetTableOutput) SetTable(v *TableData) *GetTableOutput {
	s.Table = v
	return s
}

type GetTableVersionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the tables reside. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The database in the catalog in which the table resides. For Hive compatibility,
	// this name is entirely lowercase.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the table. For Hive compatibility, this name is entirely lowercase.
	//
	// TableName is a required field
	TableName *string `min:"1" type:"string" required:"true"`

	// The ID value of the table version to be retrieved. A VersionID is a string
	// representation of an integer. Each version is incremented by 1.
	VersionId *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 GetTableVersionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTableVersionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetTableVersionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetTableVersionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}
	if s.VersionId != nil && len(*s.VersionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VersionId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetTableVersionInput) SetCatalogId(v string) *GetTableVersionInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetTableVersionInput) SetDatabaseName(v string) *GetTableVersionInput {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *GetTableVersionInput) SetTableName(v string) *GetTableVersionInput {
	s.TableName = &v
	return s
}

// SetVersionId sets the VersionId field's value.
func (s *GetTableVersionInput) SetVersionId(v string) *GetTableVersionInput {
	s.VersionId = &v
	return s
}

type GetTableVersionOutput struct {
	_ struct{} `type:"structure"`

	// The requested table version.
	TableVersion *TableVersion `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTableVersionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTableVersionOutput) GoString() string {
	return s.String()
}

// SetTableVersion sets the TableVersion field's value.
func (s *GetTableVersionOutput) SetTableVersion(v *TableVersion) *GetTableVersionOutput {
	s.TableVersion = v
	return s
}

type GetTableVersionsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the tables reside. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The database in the catalog in which the table resides. For Hive compatibility,
	// this name is entirely lowercase.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The maximum number of table versions to return in one response.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is not the first call.
	NextToken *string `type:"string"`

	// The name of the table. For Hive compatibility, this name is entirely lowercase.
	//
	// TableName is a required field
	TableName *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 GetTableVersionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTableVersionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetTableVersionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetTableVersionsInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetTableVersionsInput) SetCatalogId(v string) *GetTableVersionsInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetTableVersionsInput) SetDatabaseName(v string) *GetTableVersionsInput {
	s.DatabaseName = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetTableVersionsInput) SetMaxResults(v int64) *GetTableVersionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetTableVersionsInput) SetNextToken(v string) *GetTableVersionsInput {
	s.NextToken = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *GetTableVersionsInput) SetTableName(v string) *GetTableVersionsInput {
	s.TableName = &v
	return s
}

type GetTableVersionsOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token, if the list of available versions does not include
	// the last one.
	NextToken *string `type:"string"`

	// A list of strings identifying available versions of the specified table.
	TableVersions []*TableVersion `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 GetTableVersionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTableVersionsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetTableVersionsOutput) SetNextToken(v string) *GetTableVersionsOutput {
	s.NextToken = &v
	return s
}

// SetTableVersions sets the TableVersions field's value.
func (s *GetTableVersionsOutput) SetTableVersions(v []*TableVersion) *GetTableVersionsOutput {
	s.TableVersions = v
	return s
}

type GetTablesInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the tables reside. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The database in the catalog whose tables to list. For Hive compatibility,
	// this name is entirely lowercase.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// A regular expression pattern. If present, only those tables whose names match
	// the pattern are returned.
	Expression *string `type:"string"`

	// The maximum number of tables to return in a single response.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, included if this is a continuation call.
	NextToken *string `type:"string"`

	// The time as of when to read the table contents. If not set, the most recent
	// transaction commit time will be used. Cannot be specified along with TransactionId.
	QueryAsOfTime *time.Time `type:"timestamp"`

	// The transaction ID at which to read the table contents.
	TransactionId *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 GetTablesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTablesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetTablesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetTablesInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.TransactionId != nil && len(*s.TransactionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TransactionId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetTablesInput) SetCatalogId(v string) *GetTablesInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetTablesInput) SetDatabaseName(v string) *GetTablesInput {
	s.DatabaseName = &v
	return s
}

// SetExpression sets the Expression field's value.
func (s *GetTablesInput) SetExpression(v string) *GetTablesInput {
	s.Expression = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetTablesInput) SetMaxResults(v int64) *GetTablesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetTablesInput) SetNextToken(v string) *GetTablesInput {
	s.NextToken = &v
	return s
}

// SetQueryAsOfTime sets the QueryAsOfTime field's value.
func (s *GetTablesInput) SetQueryAsOfTime(v time.Time) *GetTablesInput {
	s.QueryAsOfTime = &v
	return s
}

// SetTransactionId sets the TransactionId field's value.
func (s *GetTablesInput) SetTransactionId(v string) *GetTablesInput {
	s.TransactionId = &v
	return s
}

type GetTablesOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token, present if the current list segment is not the last.
	NextToken *string `type:"string"`

	// A list of the requested Table objects.
	TableList []*TableData `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 GetTablesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTablesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetTablesOutput) SetNextToken(v string) *GetTablesOutput {
	s.NextToken = &v
	return s
}

// SetTableList sets the TableList field's value.
func (s *GetTablesOutput) SetTableList(v []*TableData) *GetTablesOutput {
	s.TableList = v
	return s
}

type GetTagsInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource for which to retrieve tags.
	//
	// ResourceArn is a required field
	ResourceArn *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 GetTagsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTagsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetTagsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetTagsInput"}
	if s.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 *GetTagsInput) SetResourceArn(v string) *GetTagsInput {
	s.ResourceArn = &v
	return s
}

type GetTagsOutput struct {
	_ struct{} `type:"structure"`

	// The requested tags.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTagsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTagsOutput) GoString() string {
	return s.String()
}

// SetTags sets the Tags field's value.
func (s *GetTagsOutput) SetTags(v map[string]*string) *GetTagsOutput {
	s.Tags = v
	return s
}

type GetTriggerInput struct {
	_ struct{} `type:"structure"`

	// The name of the trigger to retrieve.
	//
	// 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 GetTriggerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTriggerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetTriggerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetTriggerInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *GetTriggerInput) SetName(v string) *GetTriggerInput {
	s.Name = &v
	return s
}

type GetTriggerOutput struct {
	_ struct{} `type:"structure"`

	// The requested trigger definition.
	Trigger *Trigger `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTriggerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTriggerOutput) GoString() string {
	return s.String()
}

// SetTrigger sets the Trigger field's value.
func (s *GetTriggerOutput) SetTrigger(v *Trigger) *GetTriggerOutput {
	s.Trigger = v
	return s
}

type GetTriggersInput struct {
	_ struct{} `type:"structure"`

	// The name of the job to retrieve triggers for. The trigger that can start
	// this job is returned, and if there is no such trigger, all triggers are returned.
	DependentJobName *string `min:"1" type:"string"`

	// The maximum size of the response.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation call.
	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 GetTriggersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTriggersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetTriggersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetTriggersInput"}
	if s.DependentJobName != nil && len(*s.DependentJobName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DependentJobName", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDependentJobName sets the DependentJobName field's value.
func (s *GetTriggersInput) SetDependentJobName(v string) *GetTriggersInput {
	s.DependentJobName = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetTriggersInput) SetMaxResults(v int64) *GetTriggersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetTriggersInput) SetNextToken(v string) *GetTriggersInput {
	s.NextToken = &v
	return s
}

type GetTriggersOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token, if not all the requested triggers have yet been returned.
	NextToken *string `type:"string"`

	// A list of triggers for the specified job.
	Triggers []*Trigger `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 GetTriggersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetTriggersOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetTriggersOutput) SetNextToken(v string) *GetTriggersOutput {
	s.NextToken = &v
	return s
}

// SetTriggers sets the Triggers field's value.
func (s *GetTriggersOutput) SetTriggers(v []*Trigger) *GetTriggersOutput {
	s.Triggers = v
	return s
}

type GetUnfilteredPartitionMetadataInput struct {
	_ struct{} `type:"structure"`

	// A structure containing Lake Formation audit context information.
	AuditContext *AuditContext `type:"structure"`

	// The catalog ID where the partition resides.
	//
	// CatalogId is a required field
	CatalogId *string `min:"1" type:"string" required:"true"`

	// (Required) Specifies the name of a database that contains the partition.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// (Required) A list of partition key values.
	//
	// PartitionValues is a required field
	PartitionValues []*string `type:"list" required:"true"`

	// A structure used as a protocol between query engines and Lake Formation or
	// Glue. Contains both a Lake Formation generated authorization identifier and
	// information from the request's authorization context.
	QuerySessionContext *QuerySessionContext `type:"structure"`

	// Specified only if the base tables belong to a different Amazon Web Services
	// Region.
	Region *string `type:"string"`

	// (Required) A list of supported permission types.
	//
	// SupportedPermissionTypes is a required field
	SupportedPermissionTypes []*string `min:"1" type:"list" required:"true" enum:"PermissionType"`

	// (Required) Specifies the name of a table that contains the partition.
	//
	// TableName is a required field
	TableName *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 GetUnfilteredPartitionMetadataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUnfilteredPartitionMetadataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetUnfilteredPartitionMetadataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetUnfilteredPartitionMetadataInput"}
	if s.CatalogId == nil {
		invalidParams.Add(request.NewErrParamRequired("CatalogId"))
	}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.PartitionValues == nil {
		invalidParams.Add(request.NewErrParamRequired("PartitionValues"))
	}
	if s.SupportedPermissionTypes == nil {
		invalidParams.Add(request.NewErrParamRequired("SupportedPermissionTypes"))
	}
	if s.SupportedPermissionTypes != nil && len(s.SupportedPermissionTypes) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SupportedPermissionTypes", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}
	if s.QuerySessionContext != nil {
		if err := s.QuerySessionContext.Validate(); err != nil {
			invalidParams.AddNested("QuerySessionContext", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAuditContext sets the AuditContext field's value.
func (s *GetUnfilteredPartitionMetadataInput) SetAuditContext(v *AuditContext) *GetUnfilteredPartitionMetadataInput {
	s.AuditContext = v
	return s
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetUnfilteredPartitionMetadataInput) SetCatalogId(v string) *GetUnfilteredPartitionMetadataInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetUnfilteredPartitionMetadataInput) SetDatabaseName(v string) *GetUnfilteredPartitionMetadataInput {
	s.DatabaseName = &v
	return s
}

// SetPartitionValues sets the PartitionValues field's value.
func (s *GetUnfilteredPartitionMetadataInput) SetPartitionValues(v []*string) *GetUnfilteredPartitionMetadataInput {
	s.PartitionValues = v
	return s
}

// SetQuerySessionContext sets the QuerySessionContext field's value.
func (s *GetUnfilteredPartitionMetadataInput) SetQuerySessionContext(v *QuerySessionContext) *GetUnfilteredPartitionMetadataInput {
	s.QuerySessionContext = v
	return s
}

// SetRegion sets the Region field's value.
func (s *GetUnfilteredPartitionMetadataInput) SetRegion(v string) *GetUnfilteredPartitionMetadataInput {
	s.Region = &v
	return s
}

// SetSupportedPermissionTypes sets the SupportedPermissionTypes field's value.
func (s *GetUnfilteredPartitionMetadataInput) SetSupportedPermissionTypes(v []*string) *GetUnfilteredPartitionMetadataInput {
	s.SupportedPermissionTypes = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *GetUnfilteredPartitionMetadataInput) SetTableName(v string) *GetUnfilteredPartitionMetadataInput {
	s.TableName = &v
	return s
}

type GetUnfilteredPartitionMetadataOutput struct {
	_ struct{} `type:"structure"`

	// A list of column names that the user has been granted access to.
	AuthorizedColumns []*string `type:"list"`

	// A Boolean value that indicates whether the partition location is registered
	// with Lake Formation.
	IsRegisteredWithLakeFormation *bool `type:"boolean"`

	// A Partition object containing the partition metadata.
	Partition *Partition `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUnfilteredPartitionMetadataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUnfilteredPartitionMetadataOutput) GoString() string {
	return s.String()
}

// SetAuthorizedColumns sets the AuthorizedColumns field's value.
func (s *GetUnfilteredPartitionMetadataOutput) SetAuthorizedColumns(v []*string) *GetUnfilteredPartitionMetadataOutput {
	s.AuthorizedColumns = v
	return s
}

// SetIsRegisteredWithLakeFormation sets the IsRegisteredWithLakeFormation field's value.
func (s *GetUnfilteredPartitionMetadataOutput) SetIsRegisteredWithLakeFormation(v bool) *GetUnfilteredPartitionMetadataOutput {
	s.IsRegisteredWithLakeFormation = &v
	return s
}

// SetPartition sets the Partition field's value.
func (s *GetUnfilteredPartitionMetadataOutput) SetPartition(v *Partition) *GetUnfilteredPartitionMetadataOutput {
	s.Partition = v
	return s
}

type GetUnfilteredPartitionsMetadataInput struct {
	_ struct{} `type:"structure"`

	// A structure containing Lake Formation audit context information.
	AuditContext *AuditContext `type:"structure"`

	// The ID of the Data Catalog where the partitions in question reside. If none
	// is provided, the AWS account ID is used by default.
	//
	// CatalogId is a required field
	CatalogId *string `min:"1" type:"string" required:"true"`

	// The name of the catalog database where the partitions reside.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// An expression that filters the partitions to be returned.
	//
	// The expression uses SQL syntax similar to the SQL WHERE filter clause. The
	// SQL statement parser JSQLParser (http://jsqlparser.sourceforge.net/home.php)
	// parses the expression.
	//
	// Operators: The following are the operators that you can use in the Expression
	// API call:
	//
	// =
	//
	// Checks whether the values of the two operands are equal; if yes, then the
	// condition becomes true.
	//
	// Example: Assume 'variable a' holds 10 and 'variable b' holds 20.
	//
	// (a = b) is not true.
	//
	// < >
	//
	// Checks whether the values of two operands are equal; if the values are not
	// equal, then the condition becomes true.
	//
	// Example: (a < > b) is true.
	//
	// >
	//
	// Checks whether the value of the left operand is greater than the value of
	// the right operand; if yes, then the condition becomes true.
	//
	// Example: (a > b) is not true.
	//
	// <
	//
	// Checks whether the value of the left operand is less than the value of the
	// right operand; if yes, then the condition becomes true.
	//
	// Example: (a < b) is true.
	//
	// >=
	//
	// Checks whether the value of the left operand is greater than or equal to
	// the value of the right operand; if yes, then the condition becomes true.
	//
	// Example: (a >= b) is not true.
	//
	// <=
	//
	// Checks whether the value of the left operand is less than or equal to the
	// value of the right operand; if yes, then the condition becomes true.
	//
	// Example: (a <= b) is true.
	//
	// AND, OR, IN, BETWEEN, LIKE, NOT, IS NULL
	//
	// Logical operators.
	//
	// Supported Partition Key Types: The following are the supported partition
	// keys.
	//
	//    * string
	//
	//    * date
	//
	//    * timestamp
	//
	//    * int
	//
	//    * bigint
	//
	//    * long
	//
	//    * tinyint
	//
	//    * smallint
	//
	//    * decimal
	//
	// If an type is encountered that is not valid, an exception is thrown.
	Expression *string `type:"string"`

	// The maximum number of partitions to return in a single response.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is not the first call to retrieve these partitions.
	NextToken *string `type:"string"`

	// A structure used as a protocol between query engines and Lake Formation or
	// Glue. Contains both a Lake Formation generated authorization identifier and
	// information from the request's authorization context.
	QuerySessionContext *QuerySessionContext `type:"structure"`

	// Specified only if the base tables belong to a different Amazon Web Services
	// Region.
	Region *string `type:"string"`

	// The segment of the table's partitions to scan in this request.
	Segment *Segment `type:"structure"`

	// A list of supported permission types.
	//
	// SupportedPermissionTypes is a required field
	SupportedPermissionTypes []*string `min:"1" type:"list" required:"true" enum:"PermissionType"`

	// The name of the table that contains the partition.
	//
	// TableName is a required field
	TableName *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 GetUnfilteredPartitionsMetadataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUnfilteredPartitionsMetadataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetUnfilteredPartitionsMetadataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetUnfilteredPartitionsMetadataInput"}
	if s.CatalogId == nil {
		invalidParams.Add(request.NewErrParamRequired("CatalogId"))
	}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.SupportedPermissionTypes == nil {
		invalidParams.Add(request.NewErrParamRequired("SupportedPermissionTypes"))
	}
	if s.SupportedPermissionTypes != nil && len(s.SupportedPermissionTypes) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SupportedPermissionTypes", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}
	if s.QuerySessionContext != nil {
		if err := s.QuerySessionContext.Validate(); err != nil {
			invalidParams.AddNested("QuerySessionContext", err.(request.ErrInvalidParams))
		}
	}
	if s.Segment != nil {
		if err := s.Segment.Validate(); err != nil {
			invalidParams.AddNested("Segment", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAuditContext sets the AuditContext field's value.
func (s *GetUnfilteredPartitionsMetadataInput) SetAuditContext(v *AuditContext) *GetUnfilteredPartitionsMetadataInput {
	s.AuditContext = v
	return s
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetUnfilteredPartitionsMetadataInput) SetCatalogId(v string) *GetUnfilteredPartitionsMetadataInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetUnfilteredPartitionsMetadataInput) SetDatabaseName(v string) *GetUnfilteredPartitionsMetadataInput {
	s.DatabaseName = &v
	return s
}

// SetExpression sets the Expression field's value.
func (s *GetUnfilteredPartitionsMetadataInput) SetExpression(v string) *GetUnfilteredPartitionsMetadataInput {
	s.Expression = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetUnfilteredPartitionsMetadataInput) SetMaxResults(v int64) *GetUnfilteredPartitionsMetadataInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetUnfilteredPartitionsMetadataInput) SetNextToken(v string) *GetUnfilteredPartitionsMetadataInput {
	s.NextToken = &v
	return s
}

// SetQuerySessionContext sets the QuerySessionContext field's value.
func (s *GetUnfilteredPartitionsMetadataInput) SetQuerySessionContext(v *QuerySessionContext) *GetUnfilteredPartitionsMetadataInput {
	s.QuerySessionContext = v
	return s
}

// SetRegion sets the Region field's value.
func (s *GetUnfilteredPartitionsMetadataInput) SetRegion(v string) *GetUnfilteredPartitionsMetadataInput {
	s.Region = &v
	return s
}

// SetSegment sets the Segment field's value.
func (s *GetUnfilteredPartitionsMetadataInput) SetSegment(v *Segment) *GetUnfilteredPartitionsMetadataInput {
	s.Segment = v
	return s
}

// SetSupportedPermissionTypes sets the SupportedPermissionTypes field's value.
func (s *GetUnfilteredPartitionsMetadataInput) SetSupportedPermissionTypes(v []*string) *GetUnfilteredPartitionsMetadataInput {
	s.SupportedPermissionTypes = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *GetUnfilteredPartitionsMetadataInput) SetTableName(v string) *GetUnfilteredPartitionsMetadataInput {
	s.TableName = &v
	return s
}

type GetUnfilteredPartitionsMetadataOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token, if the returned list of partitions does not include
	// the last one.
	NextToken *string `type:"string"`

	// A list of requested partitions.
	UnfilteredPartitions []*UnfilteredPartition `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 GetUnfilteredPartitionsMetadataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUnfilteredPartitionsMetadataOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetUnfilteredPartitionsMetadataOutput) SetNextToken(v string) *GetUnfilteredPartitionsMetadataOutput {
	s.NextToken = &v
	return s
}

// SetUnfilteredPartitions sets the UnfilteredPartitions field's value.
func (s *GetUnfilteredPartitionsMetadataOutput) SetUnfilteredPartitions(v []*UnfilteredPartition) *GetUnfilteredPartitionsMetadataOutput {
	s.UnfilteredPartitions = v
	return s
}

type GetUnfilteredTableMetadataInput struct {
	_ struct{} `type:"structure"`

	// A structure containing Lake Formation audit context information.
	AuditContext *AuditContext `type:"structure"`

	// The catalog ID where the table resides.
	//
	// CatalogId is a required field
	CatalogId *string `min:"1" type:"string" required:"true"`

	// (Required) Specifies the name of a database that contains the table.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// (Required) Specifies the name of a table for which you are requesting metadata.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The resource ARN of the view.
	ParentResourceArn *string `min:"20" type:"string"`

	// The Lake Formation data permissions of the caller on the table. Used to authorize
	// the call when no view context is found.
	Permissions []*string `type:"list" enum:"Permission"`

	// A structure used as a protocol between query engines and Lake Formation or
	// Glue. Contains both a Lake Formation generated authorization identifier and
	// information from the request's authorization context.
	QuerySessionContext *QuerySessionContext `type:"structure"`

	// Specified only if the base tables belong to a different Amazon Web Services
	// Region.
	Region *string `type:"string"`

	// The resource ARN of the root view in a chain of nested views.
	RootResourceArn *string `min:"20" type:"string"`

	// A structure specifying the dialect and dialect version used by the query
	// engine.
	SupportedDialect *SupportedDialect `type:"structure"`

	// Indicates the level of filtering a third-party analytical engine is capable
	// of enforcing when calling the GetUnfilteredTableMetadata API operation. Accepted
	// values are:
	//
	//    * COLUMN_PERMISSION - Column permissions ensure that users can access
	//    only specific columns in the table. If there are particular columns contain
	//    sensitive data, data lake administrators can define column filters that
	//    exclude access to specific columns.
	//
	//    * CELL_FILTER_PERMISSION - Cell-level filtering combines column filtering
	//    (include or exclude columns) and row filter expressions to restrict access
	//    to individual elements in the table.
	//
	//    * NESTED_PERMISSION - Nested permissions combines cell-level filtering
	//    and nested column filtering to restrict access to columns and/or nested
	//    columns in specific rows based on row filter expressions.
	//
	//    * NESTED_CELL_PERMISSION - Nested cell permissions combines nested permission
	//    with nested cell-level filtering. This allows different subsets of nested
	//    columns to be restricted based on an array of row filter expressions.
	//
	// Note: Each of these permission types follows a hierarchical order where each
	// subsequent permission type includes all permission of the previous type.
	//
	// Important: If you provide a supported permission type that doesn't match
	// the user's level of permissions on the table, then Lake Formation raises
	// an exception. For example, if the third-party engine calling the GetUnfilteredTableMetadata
	// operation can enforce only column-level filtering, and the user has nested
	// cell filtering applied on the table, Lake Formation throws an exception,
	// and will not return unfiltered table metadata and data access credentials.
	//
	// SupportedPermissionTypes is a required field
	SupportedPermissionTypes []*string `min:"1" type:"list" required:"true" enum:"PermissionType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUnfilteredTableMetadataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUnfilteredTableMetadataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetUnfilteredTableMetadataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetUnfilteredTableMetadataInput"}
	if s.CatalogId == nil {
		invalidParams.Add(request.NewErrParamRequired("CatalogId"))
	}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 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.ParentResourceArn != nil && len(*s.ParentResourceArn) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("ParentResourceArn", 20))
	}
	if s.RootResourceArn != nil && len(*s.RootResourceArn) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("RootResourceArn", 20))
	}
	if s.SupportedPermissionTypes == nil {
		invalidParams.Add(request.NewErrParamRequired("SupportedPermissionTypes"))
	}
	if s.SupportedPermissionTypes != nil && len(s.SupportedPermissionTypes) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SupportedPermissionTypes", 1))
	}
	if s.QuerySessionContext != nil {
		if err := s.QuerySessionContext.Validate(); err != nil {
			invalidParams.AddNested("QuerySessionContext", err.(request.ErrInvalidParams))
		}
	}
	if s.SupportedDialect != nil {
		if err := s.SupportedDialect.Validate(); err != nil {
			invalidParams.AddNested("SupportedDialect", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAuditContext sets the AuditContext field's value.
func (s *GetUnfilteredTableMetadataInput) SetAuditContext(v *AuditContext) *GetUnfilteredTableMetadataInput {
	s.AuditContext = v
	return s
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetUnfilteredTableMetadataInput) SetCatalogId(v string) *GetUnfilteredTableMetadataInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetUnfilteredTableMetadataInput) SetDatabaseName(v string) *GetUnfilteredTableMetadataInput {
	s.DatabaseName = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetUnfilteredTableMetadataInput) SetName(v string) *GetUnfilteredTableMetadataInput {
	s.Name = &v
	return s
}

// SetParentResourceArn sets the ParentResourceArn field's value.
func (s *GetUnfilteredTableMetadataInput) SetParentResourceArn(v string) *GetUnfilteredTableMetadataInput {
	s.ParentResourceArn = &v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *GetUnfilteredTableMetadataInput) SetPermissions(v []*string) *GetUnfilteredTableMetadataInput {
	s.Permissions = v
	return s
}

// SetQuerySessionContext sets the QuerySessionContext field's value.
func (s *GetUnfilteredTableMetadataInput) SetQuerySessionContext(v *QuerySessionContext) *GetUnfilteredTableMetadataInput {
	s.QuerySessionContext = v
	return s
}

// SetRegion sets the Region field's value.
func (s *GetUnfilteredTableMetadataInput) SetRegion(v string) *GetUnfilteredTableMetadataInput {
	s.Region = &v
	return s
}

// SetRootResourceArn sets the RootResourceArn field's value.
func (s *GetUnfilteredTableMetadataInput) SetRootResourceArn(v string) *GetUnfilteredTableMetadataInput {
	s.RootResourceArn = &v
	return s
}

// SetSupportedDialect sets the SupportedDialect field's value.
func (s *GetUnfilteredTableMetadataInput) SetSupportedDialect(v *SupportedDialect) *GetUnfilteredTableMetadataInput {
	s.SupportedDialect = v
	return s
}

// SetSupportedPermissionTypes sets the SupportedPermissionTypes field's value.
func (s *GetUnfilteredTableMetadataInput) SetSupportedPermissionTypes(v []*string) *GetUnfilteredTableMetadataInput {
	s.SupportedPermissionTypes = v
	return s
}

type GetUnfilteredTableMetadataOutput struct {
	_ struct{} `type:"structure"`

	// A list of column names that the user has been granted access to.
	AuthorizedColumns []*string `type:"list"`

	// A list of column row filters.
	CellFilters []*ColumnRowFilter `type:"list"`

	// Specifies whether the view supports the SQL dialects of one or more different
	// query engines and can therefore be read by those engines.
	IsMultiDialectView *bool `type:"boolean"`

	// A flag that instructs the engine not to push user-provided operations into
	// the logical plan of the view during query planning. However, if set this
	// flag does not guarantee that the engine will comply. Refer to the engine's
	// documentation to understand the guarantees provided, if any.
	IsProtected *bool `type:"boolean"`

	// A Boolean value that indicates whether the partition location is registered
	// with Lake Formation.
	IsRegisteredWithLakeFormation *bool `type:"boolean"`

	// The Lake Formation data permissions of the caller on the table. Used to authorize
	// the call when no view context is found.
	Permissions []*string `type:"list" enum:"Permission"`

	// A cryptographically generated query identifier generated by Glue or Lake
	// Formation.
	QueryAuthorizationId *string `min:"1" type:"string"`

	// The resource ARN of the parent resource extracted from the request.
	ResourceArn *string `min:"20" type:"string"`

	// The filter that applies to the table. For example when applying the filter
	// in SQL, it would go in the WHERE clause and can be evaluated by using an
	// AND operator with any other predicates applied by the user querying the table.
	RowFilter *string `type:"string"`

	// A Table object containing the table metadata.
	Table *TableData `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUnfilteredTableMetadataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUnfilteredTableMetadataOutput) GoString() string {
	return s.String()
}

// SetAuthorizedColumns sets the AuthorizedColumns field's value.
func (s *GetUnfilteredTableMetadataOutput) SetAuthorizedColumns(v []*string) *GetUnfilteredTableMetadataOutput {
	s.AuthorizedColumns = v
	return s
}

// SetCellFilters sets the CellFilters field's value.
func (s *GetUnfilteredTableMetadataOutput) SetCellFilters(v []*ColumnRowFilter) *GetUnfilteredTableMetadataOutput {
	s.CellFilters = v
	return s
}

// SetIsMultiDialectView sets the IsMultiDialectView field's value.
func (s *GetUnfilteredTableMetadataOutput) SetIsMultiDialectView(v bool) *GetUnfilteredTableMetadataOutput {
	s.IsMultiDialectView = &v
	return s
}

// SetIsProtected sets the IsProtected field's value.
func (s *GetUnfilteredTableMetadataOutput) SetIsProtected(v bool) *GetUnfilteredTableMetadataOutput {
	s.IsProtected = &v
	return s
}

// SetIsRegisteredWithLakeFormation sets the IsRegisteredWithLakeFormation field's value.
func (s *GetUnfilteredTableMetadataOutput) SetIsRegisteredWithLakeFormation(v bool) *GetUnfilteredTableMetadataOutput {
	s.IsRegisteredWithLakeFormation = &v
	return s
}

// SetPermissions sets the Permissions field's value.
func (s *GetUnfilteredTableMetadataOutput) SetPermissions(v []*string) *GetUnfilteredTableMetadataOutput {
	s.Permissions = v
	return s
}

// SetQueryAuthorizationId sets the QueryAuthorizationId field's value.
func (s *GetUnfilteredTableMetadataOutput) SetQueryAuthorizationId(v string) *GetUnfilteredTableMetadataOutput {
	s.QueryAuthorizationId = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *GetUnfilteredTableMetadataOutput) SetResourceArn(v string) *GetUnfilteredTableMetadataOutput {
	s.ResourceArn = &v
	return s
}

// SetRowFilter sets the RowFilter field's value.
func (s *GetUnfilteredTableMetadataOutput) SetRowFilter(v string) *GetUnfilteredTableMetadataOutput {
	s.RowFilter = &v
	return s
}

// SetTable sets the Table field's value.
func (s *GetUnfilteredTableMetadataOutput) SetTable(v *TableData) *GetUnfilteredTableMetadataOutput {
	s.Table = v
	return s
}

type GetUsageProfileInput struct {
	_ struct{} `type:"structure"`

	// The name of the usage profile to retrieve.
	//
	// 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 GetUsageProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUsageProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetUsageProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetUsageProfileInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *GetUsageProfileInput) SetName(v string) *GetUsageProfileInput {
	s.Name = &v
	return s
}

type GetUsageProfileOutput struct {
	_ struct{} `type:"structure"`

	// A ProfileConfiguration object specifying the job and session values for the
	// profile.
	Configuration *ProfileConfiguration `type:"structure"`

	// The date and time when the usage profile was created.
	CreatedOn *time.Time `type:"timestamp"`

	// A description of the usage profile.
	Description *string `type:"string"`

	// The date and time when the usage profile was last modified.
	LastModifiedOn *time.Time `type:"timestamp"`

	// The name of the usage profile.
	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 GetUsageProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUsageProfileOutput) GoString() string {
	return s.String()
}

// SetConfiguration sets the Configuration field's value.
func (s *GetUsageProfileOutput) SetConfiguration(v *ProfileConfiguration) *GetUsageProfileOutput {
	s.Configuration = v
	return s
}

// SetCreatedOn sets the CreatedOn field's value.
func (s *GetUsageProfileOutput) SetCreatedOn(v time.Time) *GetUsageProfileOutput {
	s.CreatedOn = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetUsageProfileOutput) SetDescription(v string) *GetUsageProfileOutput {
	s.Description = &v
	return s
}

// SetLastModifiedOn sets the LastModifiedOn field's value.
func (s *GetUsageProfileOutput) SetLastModifiedOn(v time.Time) *GetUsageProfileOutput {
	s.LastModifiedOn = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetUsageProfileOutput) SetName(v string) *GetUsageProfileOutput {
	s.Name = &v
	return s
}

type GetUserDefinedFunctionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the function to be retrieved is located.
	// If none is provided, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the catalog database where the function is located.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the function.
	//
	// FunctionName is a required field
	FunctionName *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 GetUserDefinedFunctionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUserDefinedFunctionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetUserDefinedFunctionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetUserDefinedFunctionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.FunctionName == nil {
		invalidParams.Add(request.NewErrParamRequired("FunctionName"))
	}
	if s.FunctionName != nil && len(*s.FunctionName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FunctionName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetUserDefinedFunctionInput) SetCatalogId(v string) *GetUserDefinedFunctionInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetUserDefinedFunctionInput) SetDatabaseName(v string) *GetUserDefinedFunctionInput {
	s.DatabaseName = &v
	return s
}

// SetFunctionName sets the FunctionName field's value.
func (s *GetUserDefinedFunctionInput) SetFunctionName(v string) *GetUserDefinedFunctionInput {
	s.FunctionName = &v
	return s
}

type GetUserDefinedFunctionOutput struct {
	_ struct{} `type:"structure"`

	// The requested function definition.
	UserDefinedFunction *UserDefinedFunction `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUserDefinedFunctionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUserDefinedFunctionOutput) GoString() string {
	return s.String()
}

// SetUserDefinedFunction sets the UserDefinedFunction field's value.
func (s *GetUserDefinedFunctionOutput) SetUserDefinedFunction(v *UserDefinedFunction) *GetUserDefinedFunctionOutput {
	s.UserDefinedFunction = v
	return s
}

type GetUserDefinedFunctionsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the functions to be retrieved are located.
	// If none is provided, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the catalog database where the functions are located. If none
	// is provided, functions from all the databases across the catalog will be
	// returned.
	DatabaseName *string `min:"1" type:"string"`

	// The maximum number of functions to return in one response.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation call.
	NextToken *string `type:"string"`

	// An optional function-name pattern string that filters the function definitions
	// returned.
	//
	// Pattern is a required field
	Pattern *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 GetUserDefinedFunctionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUserDefinedFunctionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetUserDefinedFunctionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetUserDefinedFunctionsInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Pattern == nil {
		invalidParams.Add(request.NewErrParamRequired("Pattern"))
	}
	if s.Pattern != nil && len(*s.Pattern) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Pattern", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *GetUserDefinedFunctionsInput) SetCatalogId(v string) *GetUserDefinedFunctionsInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *GetUserDefinedFunctionsInput) SetDatabaseName(v string) *GetUserDefinedFunctionsInput {
	s.DatabaseName = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetUserDefinedFunctionsInput) SetMaxResults(v int64) *GetUserDefinedFunctionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetUserDefinedFunctionsInput) SetNextToken(v string) *GetUserDefinedFunctionsInput {
	s.NextToken = &v
	return s
}

// SetPattern sets the Pattern field's value.
func (s *GetUserDefinedFunctionsInput) SetPattern(v string) *GetUserDefinedFunctionsInput {
	s.Pattern = &v
	return s
}

type GetUserDefinedFunctionsOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token, if the list of functions returned does not include
	// the last requested function.
	NextToken *string `type:"string"`

	// A list of requested function definitions.
	UserDefinedFunctions []*UserDefinedFunction `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 GetUserDefinedFunctionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUserDefinedFunctionsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetUserDefinedFunctionsOutput) SetNextToken(v string) *GetUserDefinedFunctionsOutput {
	s.NextToken = &v
	return s
}

// SetUserDefinedFunctions sets the UserDefinedFunctions field's value.
func (s *GetUserDefinedFunctionsOutput) SetUserDefinedFunctions(v []*UserDefinedFunction) *GetUserDefinedFunctionsOutput {
	s.UserDefinedFunctions = v
	return s
}

type GetWorkflowInput struct {
	_ struct{} `type:"structure"`

	// Specifies whether to include a graph when returning the workflow resource
	// metadata.
	IncludeGraph *bool `type:"boolean"`

	// The name of the workflow to retrieve.
	//
	// 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 GetWorkflowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetWorkflowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetWorkflowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetWorkflowInput"}
	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
}

// SetIncludeGraph sets the IncludeGraph field's value.
func (s *GetWorkflowInput) SetIncludeGraph(v bool) *GetWorkflowInput {
	s.IncludeGraph = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetWorkflowInput) SetName(v string) *GetWorkflowInput {
	s.Name = &v
	return s
}

type GetWorkflowOutput struct {
	_ struct{} `type:"structure"`

	// The resource metadata for the workflow.
	Workflow *Workflow `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetWorkflowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetWorkflowOutput) GoString() string {
	return s.String()
}

// SetWorkflow sets the Workflow field's value.
func (s *GetWorkflowOutput) SetWorkflow(v *Workflow) *GetWorkflowOutput {
	s.Workflow = v
	return s
}

type GetWorkflowRunInput struct {
	_ struct{} `type:"structure"`

	// Specifies whether to include the workflow graph in response or not.
	IncludeGraph *bool `type:"boolean"`

	// Name of the workflow being run.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The ID of the workflow run.
	//
	// RunId is a required field
	RunId *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 GetWorkflowRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetWorkflowRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetWorkflowRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetWorkflowRunInput"}
	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.RunId == nil {
		invalidParams.Add(request.NewErrParamRequired("RunId"))
	}
	if s.RunId != nil && len(*s.RunId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RunId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIncludeGraph sets the IncludeGraph field's value.
func (s *GetWorkflowRunInput) SetIncludeGraph(v bool) *GetWorkflowRunInput {
	s.IncludeGraph = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetWorkflowRunInput) SetName(v string) *GetWorkflowRunInput {
	s.Name = &v
	return s
}

// SetRunId sets the RunId field's value.
func (s *GetWorkflowRunInput) SetRunId(v string) *GetWorkflowRunInput {
	s.RunId = &v
	return s
}

type GetWorkflowRunOutput struct {
	_ struct{} `type:"structure"`

	// The requested workflow run metadata.
	Run *WorkflowRun `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetWorkflowRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetWorkflowRunOutput) GoString() string {
	return s.String()
}

// SetRun sets the Run field's value.
func (s *GetWorkflowRunOutput) SetRun(v *WorkflowRun) *GetWorkflowRunOutput {
	s.Run = v
	return s
}

type GetWorkflowRunPropertiesInput struct {
	_ struct{} `type:"structure"`

	// Name of the workflow which was run.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The ID of the workflow run whose run properties should be returned.
	//
	// RunId is a required field
	RunId *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 GetWorkflowRunPropertiesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetWorkflowRunPropertiesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetWorkflowRunPropertiesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetWorkflowRunPropertiesInput"}
	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.RunId == nil {
		invalidParams.Add(request.NewErrParamRequired("RunId"))
	}
	if s.RunId != nil && len(*s.RunId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RunId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *GetWorkflowRunPropertiesInput) SetName(v string) *GetWorkflowRunPropertiesInput {
	s.Name = &v
	return s
}

// SetRunId sets the RunId field's value.
func (s *GetWorkflowRunPropertiesInput) SetRunId(v string) *GetWorkflowRunPropertiesInput {
	s.RunId = &v
	return s
}

type GetWorkflowRunPropertiesOutput struct {
	_ struct{} `type:"structure"`

	// The workflow run properties which were set during the specified run.
	RunProperties 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 GetWorkflowRunPropertiesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetWorkflowRunPropertiesOutput) GoString() string {
	return s.String()
}

// SetRunProperties sets the RunProperties field's value.
func (s *GetWorkflowRunPropertiesOutput) SetRunProperties(v map[string]*string) *GetWorkflowRunPropertiesOutput {
	s.RunProperties = v
	return s
}

type GetWorkflowRunsInput struct {
	_ struct{} `type:"structure"`

	// Specifies whether to include the workflow graph in response or not.
	IncludeGraph *bool `type:"boolean"`

	// The maximum number of workflow runs to be included in the response.
	MaxResults *int64 `min:"1" type:"integer"`

	// Name of the workflow whose metadata of runs should be returned.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The maximum size of the response.
	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 GetWorkflowRunsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetWorkflowRunsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetWorkflowRunsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetWorkflowRunsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 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
}

// SetIncludeGraph sets the IncludeGraph field's value.
func (s *GetWorkflowRunsInput) SetIncludeGraph(v bool) *GetWorkflowRunsInput {
	s.IncludeGraph = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *GetWorkflowRunsInput) SetMaxResults(v int64) *GetWorkflowRunsInput {
	s.MaxResults = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetWorkflowRunsInput) SetName(v string) *GetWorkflowRunsInput {
	s.Name = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *GetWorkflowRunsInput) SetNextToken(v string) *GetWorkflowRunsInput {
	s.NextToken = &v
	return s
}

type GetWorkflowRunsOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token, if not all requested workflow runs have been returned.
	NextToken *string `type:"string"`

	// A list of workflow run metadata objects.
	Runs []*WorkflowRun `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 GetWorkflowRunsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetWorkflowRunsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *GetWorkflowRunsOutput) SetNextToken(v string) *GetWorkflowRunsOutput {
	s.NextToken = &v
	return s
}

// SetRuns sets the Runs field's value.
func (s *GetWorkflowRunsOutput) SetRuns(v []*WorkflowRun) *GetWorkflowRunsOutput {
	s.Runs = v
	return s
}

// A structure for returning a resource policy.
type GluePolicy struct {
	_ struct{} `type:"structure"`

	// The date and time at which the policy was created.
	CreateTime *time.Time `type:"timestamp"`

	// Contains the hash value associated with this policy.
	PolicyHash *string `min:"1" type:"string"`

	// Contains the requested policy document, in JSON format.
	PolicyInJson *string `min:"2" type:"string"`

	// The date and time at which the policy was last updated.
	UpdateTime *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 GluePolicy) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GluePolicy) GoString() string {
	return s.String()
}

// SetCreateTime sets the CreateTime field's value.
func (s *GluePolicy) SetCreateTime(v time.Time) *GluePolicy {
	s.CreateTime = &v
	return s
}

// SetPolicyHash sets the PolicyHash field's value.
func (s *GluePolicy) SetPolicyHash(v string) *GluePolicy {
	s.PolicyHash = &v
	return s
}

// SetPolicyInJson sets the PolicyInJson field's value.
func (s *GluePolicy) SetPolicyInJson(v string) *GluePolicy {
	s.PolicyInJson = &v
	return s
}

// SetUpdateTime sets the UpdateTime field's value.
func (s *GluePolicy) SetUpdateTime(v time.Time) *GluePolicy {
	s.UpdateTime = &v
	return s
}

// Specifies a user-defined schema when a schema cannot be determined by Glue.
type GlueSchema struct {
	_ struct{} `type:"structure"`

	// Specifies the column definitions that make up a Glue schema.
	Columns []*GlueStudioSchemaColumn `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 GlueSchema) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GlueSchema) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GlueSchema) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GlueSchema"}
	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 *GlueSchema) SetColumns(v []*GlueStudioSchemaColumn) *GlueSchema {
	s.Columns = v
	return s
}

// Specifies a single column in a Glue schema definition.
type GlueStudioSchemaColumn struct {
	_ struct{} `type:"structure"`

	// The name of the column in the Glue Studio schema.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The hive type for this column in the Glue Studio schema.
	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 GlueStudioSchemaColumn) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GlueStudioSchemaColumn) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GlueStudioSchemaColumn) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GlueStudioSchemaColumn"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *GlueStudioSchemaColumn) SetName(v string) *GlueStudioSchemaColumn {
	s.Name = &v
	return s
}

// SetType sets the Type field's value.
func (s *GlueStudioSchemaColumn) SetType(v string) *GlueStudioSchemaColumn {
	s.Type = &v
	return s
}

// Specifies the data store in the governed Glue Data Catalog.
type GovernedCatalogSource struct {
	_ struct{} `type:"structure"`

	// Specifies additional connection options.
	AdditionalOptions *S3SourceAdditionalOptions `type:"structure"`

	// The database to read from.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The name of the data store.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Partitions satisfying this predicate are deleted. Files within the retention
	// period in these partitions are not deleted. Set to "" – empty by default.
	PartitionPredicate *string `type:"string"`

	// The database table to read from.
	//
	// Table is a required field
	Table *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 GovernedCatalogSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GovernedCatalogSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GovernedCatalogSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GovernedCatalogSource"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *GovernedCatalogSource) SetAdditionalOptions(v *S3SourceAdditionalOptions) *GovernedCatalogSource {
	s.AdditionalOptions = v
	return s
}

// SetDatabase sets the Database field's value.
func (s *GovernedCatalogSource) SetDatabase(v string) *GovernedCatalogSource {
	s.Database = &v
	return s
}

// SetName sets the Name field's value.
func (s *GovernedCatalogSource) SetName(v string) *GovernedCatalogSource {
	s.Name = &v
	return s
}

// SetPartitionPredicate sets the PartitionPredicate field's value.
func (s *GovernedCatalogSource) SetPartitionPredicate(v string) *GovernedCatalogSource {
	s.PartitionPredicate = &v
	return s
}

// SetTable sets the Table field's value.
func (s *GovernedCatalogSource) SetTable(v string) *GovernedCatalogSource {
	s.Table = &v
	return s
}

// Specifies a data target that writes to Amazon S3 using the Glue Data Catalog.
type GovernedCatalogTarget struct {
	_ struct{} `type:"structure"`

	// The name of the database to write to.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The nodes that are inputs to the data target.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data target.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies native partitioning using a sequence of keys.
	PartitionKeys [][]*string `type:"list"`

	// A policy that specifies update behavior for the governed catalog.
	SchemaChangePolicy *CatalogSchemaChangePolicy `type:"structure"`

	// The name of the table in the database to write to.
	//
	// Table is a required field
	Table *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 GovernedCatalogTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GovernedCatalogTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GovernedCatalogTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GovernedCatalogTarget"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *GovernedCatalogTarget) SetDatabase(v string) *GovernedCatalogTarget {
	s.Database = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *GovernedCatalogTarget) SetInputs(v []*string) *GovernedCatalogTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *GovernedCatalogTarget) SetName(v string) *GovernedCatalogTarget {
	s.Name = &v
	return s
}

// SetPartitionKeys sets the PartitionKeys field's value.
func (s *GovernedCatalogTarget) SetPartitionKeys(v [][]*string) *GovernedCatalogTarget {
	s.PartitionKeys = v
	return s
}

// SetSchemaChangePolicy sets the SchemaChangePolicy field's value.
func (s *GovernedCatalogTarget) SetSchemaChangePolicy(v *CatalogSchemaChangePolicy) *GovernedCatalogTarget {
	s.SchemaChangePolicy = v
	return s
}

// SetTable sets the Table field's value.
func (s *GovernedCatalogTarget) SetTable(v string) *GovernedCatalogTarget {
	s.Table = &v
	return s
}

// A classifier that uses grok patterns.
type GrokClassifier struct {
	_ struct{} `type:"structure"`

	// An identifier of the data format that the classifier matches, such as Twitter,
	// JSON, Omniture logs, and so on.
	//
	// Classification is a required field
	Classification *string `type:"string" required:"true"`

	// The time that this classifier was registered.
	CreationTime *time.Time `type:"timestamp"`

	// Optional custom grok patterns defined by this classifier. For more information,
	// see custom patterns in Writing Custom Classifiers (https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html).
	CustomPatterns *string `type:"string"`

	// The grok pattern applied to a data store by this classifier. For more information,
	// see built-in patterns in Writing Custom Classifiers (https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html).
	//
	// GrokPattern is a required field
	GrokPattern *string `min:"1" type:"string" required:"true"`

	// The time that this classifier was last updated.
	LastUpdated *time.Time `type:"timestamp"`

	// The name of the classifier.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The version of this classifier.
	Version *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 GrokClassifier) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GrokClassifier) GoString() string {
	return s.String()
}

// SetClassification sets the Classification field's value.
func (s *GrokClassifier) SetClassification(v string) *GrokClassifier {
	s.Classification = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *GrokClassifier) SetCreationTime(v time.Time) *GrokClassifier {
	s.CreationTime = &v
	return s
}

// SetCustomPatterns sets the CustomPatterns field's value.
func (s *GrokClassifier) SetCustomPatterns(v string) *GrokClassifier {
	s.CustomPatterns = &v
	return s
}

// SetGrokPattern sets the GrokPattern field's value.
func (s *GrokClassifier) SetGrokPattern(v string) *GrokClassifier {
	s.GrokPattern = &v
	return s
}

// SetLastUpdated sets the LastUpdated field's value.
func (s *GrokClassifier) SetLastUpdated(v time.Time) *GrokClassifier {
	s.LastUpdated = &v
	return s
}

// SetName sets the Name field's value.
func (s *GrokClassifier) SetName(v string) *GrokClassifier {
	s.Name = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *GrokClassifier) SetVersion(v int64) *GrokClassifier {
	s.Version = &v
	return s
}

// Specifies an Apache Hudi data source.
type HudiTarget struct {
	_ struct{} `type:"structure"`

	// The name of the connection to use to connect to the Hudi target. If your
	// Hudi files are stored in buckets that require VPC authorization, you can
	// set their connection properties here.
	ConnectionName *string `type:"string"`

	// A list of glob patterns used to exclude from the crawl. For more information,
	// see Catalog Tables with a Crawler (https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html).
	Exclusions []*string `type:"list"`

	// The maximum depth of Amazon S3 paths that the crawler can traverse to discover
	// the Hudi metadata folder in your Amazon S3 path. Used to limit the crawler
	// run time.
	MaximumTraversalDepth *int64 `type:"integer"`

	// An array of Amazon S3 location strings for Hudi, each indicating the root
	// folder with which the metadata files for a Hudi table resides. The Hudi folder
	// may be located in a child folder of the root folder.
	//
	// The crawler will scan all folders underneath a path for a Hudi folder.
	Paths []*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 HudiTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s HudiTarget) GoString() string {
	return s.String()
}

// SetConnectionName sets the ConnectionName field's value.
func (s *HudiTarget) SetConnectionName(v string) *HudiTarget {
	s.ConnectionName = &v
	return s
}

// SetExclusions sets the Exclusions field's value.
func (s *HudiTarget) SetExclusions(v []*string) *HudiTarget {
	s.Exclusions = v
	return s
}

// SetMaximumTraversalDepth sets the MaximumTraversalDepth field's value.
func (s *HudiTarget) SetMaximumTraversalDepth(v int64) *HudiTarget {
	s.MaximumTraversalDepth = &v
	return s
}

// SetPaths sets the Paths field's value.
func (s *HudiTarget) SetPaths(v []*string) *HudiTarget {
	s.Paths = v
	return s
}

// A structure that defines an Apache Iceberg metadata table to create in the
// catalog.
type IcebergInput_ struct {
	_ struct{} `type:"structure"`

	// A required metadata operation. Can only be set to CREATE.
	//
	// MetadataOperation is a required field
	MetadataOperation *string `type:"string" required:"true" enum:"MetadataOperation"`

	// The table version for the Iceberg table. Defaults to 2.
	Version *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 IcebergInput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IcebergInput_) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *IcebergInput_) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "IcebergInput_"}
	if s.MetadataOperation == nil {
		invalidParams.Add(request.NewErrParamRequired("MetadataOperation"))
	}
	if s.Version != nil && len(*s.Version) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Version", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMetadataOperation sets the MetadataOperation field's value.
func (s *IcebergInput_) SetMetadataOperation(v string) *IcebergInput_ {
	s.MetadataOperation = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *IcebergInput_) SetVersion(v string) *IcebergInput_ {
	s.Version = &v
	return s
}

// Specifies an Apache Iceberg data source where Iceberg tables are stored in
// Amazon S3.
type IcebergTarget struct {
	_ struct{} `type:"structure"`

	// The name of the connection to use to connect to the Iceberg target.
	ConnectionName *string `type:"string"`

	// A list of glob patterns used to exclude from the crawl. For more information,
	// see Catalog Tables with a Crawler (https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html).
	Exclusions []*string `type:"list"`

	// The maximum depth of Amazon S3 paths that the crawler can traverse to discover
	// the Iceberg metadata folder in your Amazon S3 path. Used to limit the crawler
	// run time.
	MaximumTraversalDepth *int64 `type:"integer"`

	// One or more Amazon S3 paths that contains Iceberg metadata folders as s3://bucket/prefix.
	Paths []*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 IcebergTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IcebergTarget) GoString() string {
	return s.String()
}

// SetConnectionName sets the ConnectionName field's value.
func (s *IcebergTarget) SetConnectionName(v string) *IcebergTarget {
	s.ConnectionName = &v
	return s
}

// SetExclusions sets the Exclusions field's value.
func (s *IcebergTarget) SetExclusions(v []*string) *IcebergTarget {
	s.Exclusions = v
	return s
}

// SetMaximumTraversalDepth sets the MaximumTraversalDepth field's value.
func (s *IcebergTarget) SetMaximumTraversalDepth(v int64) *IcebergTarget {
	s.MaximumTraversalDepth = &v
	return s
}

// SetPaths sets the Paths field's value.
func (s *IcebergTarget) SetPaths(v []*string) *IcebergTarget {
	s.Paths = v
	return s
}

// The same unique identifier was associated with two different records.
type IdempotentParameterMismatchException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IdempotentParameterMismatchException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IdempotentParameterMismatchException) GoString() string {
	return s.String()
}

func newErrorIdempotentParameterMismatchException(v protocol.ResponseMetadata) error {
	return &IdempotentParameterMismatchException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *IdempotentParameterMismatchException) Code() string {
	return "IdempotentParameterMismatchException"
}

// Message returns the exception's message.
func (s *IdempotentParameterMismatchException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *IdempotentParameterMismatchException) OrigErr() error {
	return nil
}

func (s *IdempotentParameterMismatchException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *IdempotentParameterMismatchException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *IdempotentParameterMismatchException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The blueprint is in an invalid state to perform a requested operation.
type IllegalBlueprintStateException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IllegalBlueprintStateException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IllegalBlueprintStateException) GoString() string {
	return s.String()
}

func newErrorIllegalBlueprintStateException(v protocol.ResponseMetadata) error {
	return &IllegalBlueprintStateException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *IllegalBlueprintStateException) Code() string {
	return "IllegalBlueprintStateException"
}

// Message returns the exception's message.
func (s *IllegalBlueprintStateException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *IllegalBlueprintStateException) OrigErr() error {
	return nil
}

func (s *IllegalBlueprintStateException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *IllegalBlueprintStateException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *IllegalBlueprintStateException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The session is in an invalid state to perform a requested operation.
type IllegalSessionStateException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IllegalSessionStateException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IllegalSessionStateException) GoString() string {
	return s.String()
}

func newErrorIllegalSessionStateException(v protocol.ResponseMetadata) error {
	return &IllegalSessionStateException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *IllegalSessionStateException) Code() string {
	return "IllegalSessionStateException"
}

// Message returns the exception's message.
func (s *IllegalSessionStateException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *IllegalSessionStateException) OrigErr() error {
	return nil
}

func (s *IllegalSessionStateException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *IllegalSessionStateException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *IllegalSessionStateException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The workflow is in an invalid state to perform a requested operation.
type IllegalWorkflowStateException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IllegalWorkflowStateException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IllegalWorkflowStateException) GoString() string {
	return s.String()
}

func newErrorIllegalWorkflowStateException(v protocol.ResponseMetadata) error {
	return &IllegalWorkflowStateException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *IllegalWorkflowStateException) Code() string {
	return "IllegalWorkflowStateException"
}

// Message returns the exception's message.
func (s *IllegalWorkflowStateException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *IllegalWorkflowStateException) OrigErr() error {
	return nil
}

func (s *IllegalWorkflowStateException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *IllegalWorkflowStateException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *IllegalWorkflowStateException) RequestID() string {
	return s.RespMetadata.RequestID
}

type ImportCatalogToGlueInput struct {
	_ struct{} `type:"structure"`

	// The ID of the catalog to import. Currently, this should be the Amazon Web
	// Services account ID.
	CatalogId *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 ImportCatalogToGlueInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImportCatalogToGlueInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ImportCatalogToGlueInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ImportCatalogToGlueInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *ImportCatalogToGlueInput) SetCatalogId(v string) *ImportCatalogToGlueInput {
	s.CatalogId = &v
	return s
}

type ImportCatalogToGlueOutput 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 ImportCatalogToGlueOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImportCatalogToGlueOutput) GoString() string {
	return s.String()
}

// Specifies configuration properties for an importing labels task run.
type ImportLabelsTaskRunProperties struct {
	_ struct{} `type:"structure"`

	// The Amazon Simple Storage Service (Amazon S3) path from where you will import
	// the labels.
	InputS3Path *string `type:"string"`

	// Indicates whether to overwrite your existing labels.
	Replace *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 ImportLabelsTaskRunProperties) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ImportLabelsTaskRunProperties) GoString() string {
	return s.String()
}

// SetInputS3Path sets the InputS3Path field's value.
func (s *ImportLabelsTaskRunProperties) SetInputS3Path(v string) *ImportLabelsTaskRunProperties {
	s.InputS3Path = &v
	return s
}

// SetReplace sets the Replace field's value.
func (s *ImportLabelsTaskRunProperties) SetReplace(v bool) *ImportLabelsTaskRunProperties {
	s.Replace = &v
	return s
}

// An internal service error occurred.
type InternalServiceException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InternalServiceException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InternalServiceException) GoString() string {
	return s.String()
}

func newErrorInternalServiceException(v protocol.ResponseMetadata) error {
	return &InternalServiceException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InternalServiceException) Code() string {
	return "InternalServiceException"
}

// Message returns the exception's message.
func (s *InternalServiceException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InternalServiceException) OrigErr() error {
	return nil
}

func (s *InternalServiceException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *InternalServiceException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InternalServiceException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The input provided was not valid.
type InvalidInputException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// Indicates whether or not the exception relates to a federated source.
	FromFederationSource *bool `type:"boolean"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidInputException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidInputException) GoString() string {
	return s.String()
}

func newErrorInvalidInputException(v protocol.ResponseMetadata) error {
	return &InvalidInputException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidInputException) Code() string {
	return "InvalidInputException"
}

// Message returns the exception's message.
func (s *InvalidInputException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidInputException) OrigErr() error {
	return nil
}

func (s *InvalidInputException) 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 *InvalidInputException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidInputException) RequestID() string {
	return s.RespMetadata.RequestID
}

// An error that indicates your data is in an invalid state.
type InvalidStateException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidStateException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InvalidStateException) GoString() string {
	return s.String()
}

func newErrorInvalidStateException(v protocol.ResponseMetadata) error {
	return &InvalidStateException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InvalidStateException) Code() string {
	return "InvalidStateException"
}

// Message returns the exception's message.
func (s *InvalidStateException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InvalidStateException) OrigErr() error {
	return nil
}

func (s *InvalidStateException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *InvalidStateException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InvalidStateException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Additional connection options for the connector.
type JDBCConnectorOptions struct {
	_ struct{} `type:"structure"`

	// Custom data type mapping that builds a mapping from a JDBC data type to an
	// Glue data type. For example, the option "dataTypeMapping":{"FLOAT":"STRING"}
	// maps data fields of JDBC type FLOAT into the Java String type by calling
	// the ResultSet.getString() method of the driver, and uses it to build the
	// Glue record. The ResultSet object is implemented by each driver, so the behavior
	// is specific to the driver you use. Refer to the documentation for your JDBC
	// driver to understand how the driver performs the conversions.
	DataTypeMapping map[string]*string `type:"map"`

	// Extra condition clause to filter data from source. For example:
	//
	// BillingCity='Mountain View'
	//
	// When using a query instead of a table name, you should validate that the
	// query works with the specified filterPredicate.
	FilterPredicate *string `type:"string"`

	// The name of the job bookmark keys on which to sort.
	JobBookmarkKeys []*string `type:"list"`

	// Specifies an ascending or descending sort order.
	JobBookmarkKeysSortOrder *string `type:"string"`

	// The minimum value of partitionColumn that is used to decide partition stride.
	LowerBound *int64 `type:"long"`

	// The number of partitions. This value, along with lowerBound (inclusive) and
	// upperBound (exclusive), form partition strides for generated WHERE clause
	// expressions that are used to split the partitionColumn.
	NumPartitions *int64 `type:"long"`

	// The name of an integer column that is used for partitioning. This option
	// works only when it's included with lowerBound, upperBound, and numPartitions.
	// This option works the same way as in the Spark SQL JDBC reader.
	PartitionColumn *string `type:"string"`

	// The maximum value of partitionColumn that is used to decide partition stride.
	UpperBound *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 JDBCConnectorOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JDBCConnectorOptions) GoString() string {
	return s.String()
}

// SetDataTypeMapping sets the DataTypeMapping field's value.
func (s *JDBCConnectorOptions) SetDataTypeMapping(v map[string]*string) *JDBCConnectorOptions {
	s.DataTypeMapping = v
	return s
}

// SetFilterPredicate sets the FilterPredicate field's value.
func (s *JDBCConnectorOptions) SetFilterPredicate(v string) *JDBCConnectorOptions {
	s.FilterPredicate = &v
	return s
}

// SetJobBookmarkKeys sets the JobBookmarkKeys field's value.
func (s *JDBCConnectorOptions) SetJobBookmarkKeys(v []*string) *JDBCConnectorOptions {
	s.JobBookmarkKeys = v
	return s
}

// SetJobBookmarkKeysSortOrder sets the JobBookmarkKeysSortOrder field's value.
func (s *JDBCConnectorOptions) SetJobBookmarkKeysSortOrder(v string) *JDBCConnectorOptions {
	s.JobBookmarkKeysSortOrder = &v
	return s
}

// SetLowerBound sets the LowerBound field's value.
func (s *JDBCConnectorOptions) SetLowerBound(v int64) *JDBCConnectorOptions {
	s.LowerBound = &v
	return s
}

// SetNumPartitions sets the NumPartitions field's value.
func (s *JDBCConnectorOptions) SetNumPartitions(v int64) *JDBCConnectorOptions {
	s.NumPartitions = &v
	return s
}

// SetPartitionColumn sets the PartitionColumn field's value.
func (s *JDBCConnectorOptions) SetPartitionColumn(v string) *JDBCConnectorOptions {
	s.PartitionColumn = &v
	return s
}

// SetUpperBound sets the UpperBound field's value.
func (s *JDBCConnectorOptions) SetUpperBound(v int64) *JDBCConnectorOptions {
	s.UpperBound = &v
	return s
}

// Specifies a connector to a JDBC data source.
type JDBCConnectorSource struct {
	_ struct{} `type:"structure"`

	// Additional connection options for the connector.
	AdditionalOptions *JDBCConnectorOptions `type:"structure"`

	// The name of the connection that is associated with the connector.
	//
	// ConnectionName is a required field
	ConnectionName *string `type:"string" required:"true"`

	// The name of the table in the data source.
	ConnectionTable *string `type:"string"`

	// The type of connection, such as marketplace.jdbc or custom.jdbc, designating
	// a connection to a JDBC data store.
	//
	// ConnectionType is a required field
	ConnectionType *string `type:"string" required:"true"`

	// The name of a connector that assists with accessing the data store in Glue
	// Studio.
	//
	// ConnectorName is a required field
	ConnectorName *string `type:"string" required:"true"`

	// The name of the data source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the data schema for the custom JDBC source.
	OutputSchemas []*GlueSchema `type:"list"`

	// The table or SQL query to get the data from. You can specify either ConnectionTable
	// or query, but not both.
	Query *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 JDBCConnectorSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JDBCConnectorSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *JDBCConnectorSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "JDBCConnectorSource"}
	if s.ConnectionName == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionName"))
	}
	if s.ConnectionType == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionType"))
	}
	if s.ConnectorName == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectorName"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.OutputSchemas != nil {
		for i, v := range s.OutputSchemas {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputSchemas", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *JDBCConnectorSource) SetAdditionalOptions(v *JDBCConnectorOptions) *JDBCConnectorSource {
	s.AdditionalOptions = v
	return s
}

// SetConnectionName sets the ConnectionName field's value.
func (s *JDBCConnectorSource) SetConnectionName(v string) *JDBCConnectorSource {
	s.ConnectionName = &v
	return s
}

// SetConnectionTable sets the ConnectionTable field's value.
func (s *JDBCConnectorSource) SetConnectionTable(v string) *JDBCConnectorSource {
	s.ConnectionTable = &v
	return s
}

// SetConnectionType sets the ConnectionType field's value.
func (s *JDBCConnectorSource) SetConnectionType(v string) *JDBCConnectorSource {
	s.ConnectionType = &v
	return s
}

// SetConnectorName sets the ConnectorName field's value.
func (s *JDBCConnectorSource) SetConnectorName(v string) *JDBCConnectorSource {
	s.ConnectorName = &v
	return s
}

// SetName sets the Name field's value.
func (s *JDBCConnectorSource) SetName(v string) *JDBCConnectorSource {
	s.Name = &v
	return s
}

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *JDBCConnectorSource) SetOutputSchemas(v []*GlueSchema) *JDBCConnectorSource {
	s.OutputSchemas = v
	return s
}

// SetQuery sets the Query field's value.
func (s *JDBCConnectorSource) SetQuery(v string) *JDBCConnectorSource {
	s.Query = &v
	return s
}

// Specifies a data target that writes to Amazon S3 in Apache Parquet columnar
// storage.
type JDBCConnectorTarget struct {
	_ struct{} `type:"structure"`

	// Additional connection options for the connector.
	AdditionalOptions map[string]*string `type:"map"`

	// The name of the connection that is associated with the connector.
	//
	// ConnectionName is a required field
	ConnectionName *string `type:"string" required:"true"`

	// The name of the table in the data target.
	//
	// ConnectionTable is a required field
	ConnectionTable *string `type:"string" required:"true"`

	// The type of connection, such as marketplace.jdbc or custom.jdbc, designating
	// a connection to a JDBC data target.
	//
	// ConnectionType is a required field
	ConnectionType *string `type:"string" required:"true"`

	// The name of a connector that will be used.
	//
	// ConnectorName is a required field
	ConnectorName *string `type:"string" required:"true"`

	// The nodes that are inputs to the data target.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data target.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the data schema for the JDBC target.
	OutputSchemas []*GlueSchema `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 JDBCConnectorTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JDBCConnectorTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *JDBCConnectorTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "JDBCConnectorTarget"}
	if s.ConnectionName == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionName"))
	}
	if s.ConnectionTable == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionTable"))
	}
	if s.ConnectionType == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionType"))
	}
	if s.ConnectorName == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectorName"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.OutputSchemas != nil {
		for i, v := range s.OutputSchemas {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputSchemas", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *JDBCConnectorTarget) SetAdditionalOptions(v map[string]*string) *JDBCConnectorTarget {
	s.AdditionalOptions = v
	return s
}

// SetConnectionName sets the ConnectionName field's value.
func (s *JDBCConnectorTarget) SetConnectionName(v string) *JDBCConnectorTarget {
	s.ConnectionName = &v
	return s
}

// SetConnectionTable sets the ConnectionTable field's value.
func (s *JDBCConnectorTarget) SetConnectionTable(v string) *JDBCConnectorTarget {
	s.ConnectionTable = &v
	return s
}

// SetConnectionType sets the ConnectionType field's value.
func (s *JDBCConnectorTarget) SetConnectionType(v string) *JDBCConnectorTarget {
	s.ConnectionType = &v
	return s
}

// SetConnectorName sets the ConnectorName field's value.
func (s *JDBCConnectorTarget) SetConnectorName(v string) *JDBCConnectorTarget {
	s.ConnectorName = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *JDBCConnectorTarget) SetInputs(v []*string) *JDBCConnectorTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *JDBCConnectorTarget) SetName(v string) *JDBCConnectorTarget {
	s.Name = &v
	return s
}

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *JDBCConnectorTarget) SetOutputSchemas(v []*GlueSchema) *JDBCConnectorTarget {
	s.OutputSchemas = v
	return s
}

// Specifies a JDBC data store to crawl.
type JdbcTarget struct {
	_ struct{} `type:"structure"`

	// The name of the connection to use to connect to the JDBC target.
	ConnectionName *string `type:"string"`

	// Specify a value of RAWTYPES or COMMENTS to enable additional metadata in
	// table responses. RAWTYPES provides the native-level datatype. COMMENTS provides
	// comments associated with a column or table in the database.
	//
	// If you do not need additional metadata, keep the field empty.
	EnableAdditionalMetadata []*string `type:"list" enum:"JdbcMetadataEntry"`

	// A list of glob patterns used to exclude from the crawl. For more information,
	// see Catalog Tables with a Crawler (https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html).
	Exclusions []*string `type:"list"`

	// The path of the JDBC target.
	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 JdbcTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JdbcTarget) GoString() string {
	return s.String()
}

// SetConnectionName sets the ConnectionName field's value.
func (s *JdbcTarget) SetConnectionName(v string) *JdbcTarget {
	s.ConnectionName = &v
	return s
}

// SetEnableAdditionalMetadata sets the EnableAdditionalMetadata field's value.
func (s *JdbcTarget) SetEnableAdditionalMetadata(v []*string) *JdbcTarget {
	s.EnableAdditionalMetadata = v
	return s
}

// SetExclusions sets the Exclusions field's value.
func (s *JdbcTarget) SetExclusions(v []*string) *JdbcTarget {
	s.Exclusions = v
	return s
}

// SetPath sets the Path field's value.
func (s *JdbcTarget) SetPath(v string) *JdbcTarget {
	s.Path = &v
	return s
}

// Specifies a job definition.
type Job struct {
	_ struct{} `type:"structure"`

	// This field is deprecated. Use MaxCapacity instead.
	//
	// The number of Glue data processing units (DPUs) allocated to runs of this
	// job. You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a
	// relative measure of processing power that consists of 4 vCPUs of compute
	// capacity and 16 GB of memory. For more information, see the Glue pricing
	// page (https://aws.amazon.com/glue/pricing/).
	//
	// Deprecated: This property is deprecated, use MaxCapacity instead.
	AllocatedCapacity *int64 `deprecated:"true" type:"integer"`

	// The representation of a directed acyclic graph on which both the Glue Studio
	// visual component and Glue Studio code generation is based.
	//
	// CodeGenConfigurationNodes is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Job's
	// String and GoString methods.
	CodeGenConfigurationNodes map[string]*CodeGenConfigurationNode `type:"map" sensitive:"true"`

	// The JobCommand that runs this job.
	Command *JobCommand `type:"structure"`

	// The connections used for this job.
	Connections *ConnectionsList `type:"structure"`

	// The time and date that this job definition was created.
	CreatedOn *time.Time `type:"timestamp"`

	// The default arguments for every run of this job, specified as name-value
	// pairs.
	//
	// You can specify arguments here that your own job-execution script consumes,
	// as well as arguments that Glue itself consumes.
	//
	// Job arguments may be logged. Do not pass plaintext secrets as arguments.
	// Retrieve secrets from a Glue Connection, Secrets Manager or other secret
	// management mechanism if you intend to keep them within the Job.
	//
	// For information about how to specify and consume your own Job arguments,
	// see the Calling Glue APIs in Python (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html)
	// topic in the developer guide.
	//
	// For information about the arguments you can provide to this field when configuring
	// Spark jobs, see the Special Parameters Used by Glue (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html)
	// topic in the developer guide.
	//
	// For information about the arguments you can provide to this field when configuring
	// Ray jobs, see Using job parameters in Ray jobs (https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html)
	// in the developer guide.
	DefaultArguments map[string]*string `type:"map"`

	// A description of the job.
	Description *string `type:"string"`

	// Indicates whether the job is run with a standard or flexible execution class.
	// The standard execution class is ideal for time-sensitive workloads that require
	// fast job startup and dedicated resources.
	//
	// The flexible execution class is appropriate for time-insensitive jobs whose
	// start and completion times may vary.
	//
	// Only jobs with Glue version 3.0 and above and command type glueetl will be
	// allowed to set ExecutionClass to FLEX. The flexible execution class is available
	// for Spark jobs.
	ExecutionClass *string `type:"string" enum:"ExecutionClass"`

	// An ExecutionProperty specifying the maximum number of concurrent runs allowed
	// for this job.
	ExecutionProperty *ExecutionProperty `type:"structure"`

	// In Spark jobs, GlueVersion determines the versions of Apache Spark and Python
	// that Glue available in a job. The Python version indicates the version supported
	// for jobs of type Spark.
	//
	// Ray jobs should set GlueVersion to 4.0 or greater. However, the versions
	// of Ray, Python and additional libraries available in your Ray job are determined
	// by the Runtime parameter of the Job command.
	//
	// For more information about the available Glue versions and corresponding
	// Spark and Python versions, see Glue version (https://docs.aws.amazon.com/glue/latest/dg/add-job.html)
	// in the developer guide.
	//
	// Jobs that are created without specifying a Glue version default to Glue 0.9.
	GlueVersion *string `min:"1" type:"string"`

	// A mode that describes how a job was created. Valid values are:
	//
	//    * SCRIPT - The job was created using the Glue Studio script editor.
	//
	//    * VISUAL - The job was created using the Glue Studio visual editor.
	//
	//    * NOTEBOOK - The job was created using an interactive sessions notebook.
	//
	// When the JobMode field is missing or null, SCRIPT is assigned as the default
	// value.
	JobMode *string `type:"string" enum:"JobMode"`

	// The last point in time when this job definition was modified.
	LastModifiedOn *time.Time `type:"timestamp"`

	// This field is reserved for future use.
	LogUri *string `type:"string"`

	// This field specifies a day of the week and hour for a maintenance window
	// for streaming jobs. Glue periodically performs maintenance activities. During
	// these maintenance windows, Glue will need to restart your streaming jobs.
	//
	// Glue will restart the job within 3 hours of the specified maintenance window.
	// For instance, if you set up the maintenance window for Monday at 10:00AM
	// GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.
	MaintenanceWindow *string `type:"string"`

	// For Glue version 1.0 or earlier jobs, using the standard worker type, the
	// number of Glue data processing units (DPUs) that can be allocated when this
	// job runs. A DPU is a relative measure of processing power that consists of
	// 4 vCPUs of compute capacity and 16 GB of memory. For more information, see
	// the Glue pricing page (https://aws.amazon.com/glue/pricing/).
	//
	// For Glue version 2.0 or later jobs, you cannot specify a Maximum capacity.
	// Instead, you should specify a Worker type and the Number of workers.
	//
	// Do not set MaxCapacity if using WorkerType and NumberOfWorkers.
	//
	// The value that can be allocated for MaxCapacity depends on whether you are
	// running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming
	// ETL job:
	//
	//    * When you specify a Python shell job (JobCommand.Name="pythonshell"),
	//    you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.
	//
	//    * When you specify an Apache Spark ETL job (JobCommand.Name="glueetl")
	//    or Apache Spark streaming ETL job (JobCommand.Name="gluestreaming"), you
	//    can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type
	//    cannot have a fractional DPU allocation.
	MaxCapacity *float64 `type:"double"`

	// The maximum number of times to retry this job after a JobRun fails.
	MaxRetries *int64 `type:"integer"`

	// The name you assign to this job definition.
	Name *string `min:"1" type:"string"`

	// Arguments for this job that are not overridden when providing job arguments
	// in a job run, specified as name-value pairs.
	NonOverridableArguments map[string]*string `type:"map"`

	// Specifies configuration properties of a job notification.
	NotificationProperty *NotificationProperty `type:"structure"`

	// The number of workers of a defined workerType that are allocated when a job
	// runs.
	NumberOfWorkers *int64 `type:"integer"`

	// The name of an Glue usage profile associated with the job.
	ProfileName *string `min:"1" type:"string"`

	// The name or Amazon Resource Name (ARN) of the IAM role associated with this
	// job.
	Role *string `type:"string"`

	// The name of the SecurityConfiguration structure to be used with this job.
	SecurityConfiguration *string `min:"1" type:"string"`

	// The details for a source control configuration for a job, allowing synchronization
	// of job artifacts to or from a remote repository.
	SourceControlDetails *SourceControlDetails `type:"structure"`

	// The job timeout in minutes. This is the maximum time that a job run can consume
	// resources before it is terminated and enters TIMEOUT status. The default
	// is 2,880 minutes (48 hours) for batch jobs.
	//
	// Streaming jobs must have timeout values less than 7 days or 10080 minutes.
	// When the value is left blank, the job will be restarted after 7 days based
	// if you have not setup a maintenance window. If you have setup maintenance
	// window, it will be restarted during the maintenance window after 7 days.
	Timeout *int64 `min:"1" type:"integer"`

	// The type of predefined worker that is allocated when a job runs. Accepts
	// a value of G.1X, G.2X, G.4X, G.8X or G.025X for Spark jobs. Accepts the value
	// Z.2X for Ray jobs.
	//
	//    * For the G.1X worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB
	//    of memory) with 84GB disk (approximately 34GB free), and provides 1 executor
	//    per worker. We recommend this worker type for workloads such as data transforms,
	//    joins, and queries, to offers a scalable and cost effective way to run
	//    most jobs.
	//
	//    * For the G.2X worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB
	//    of memory) with 128GB disk (approximately 77GB free), and provides 1 executor
	//    per worker. We recommend this worker type for workloads such as data transforms,
	//    joins, and queries, to offers a scalable and cost effective way to run
	//    most jobs.
	//
	//    * For the G.4X worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB
	//    of memory) with 256GB disk (approximately 235GB free), and provides 1
	//    executor per worker. We recommend this worker type for jobs whose workloads
	//    contain your most demanding transforms, aggregations, joins, and queries.
	//    This worker type is available only for Glue version 3.0 or later Spark
	//    ETL jobs in the following Amazon Web Services Regions: US East (Ohio),
	//    US East (N. Virginia), US West (Oregon), Asia Pacific (Singapore), Asia
	//    Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt),
	//    Europe (Ireland), and Europe (Stockholm).
	//
	//    * For the G.8X worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB
	//    of memory) with 512GB disk (approximately 487GB free), and provides 1
	//    executor per worker. We recommend this worker type for jobs whose workloads
	//    contain your most demanding transforms, aggregations, joins, and queries.
	//    This worker type is available only for Glue version 3.0 or later Spark
	//    ETL jobs, in the same Amazon Web Services Regions as supported for the
	//    G.4X worker type.
	//
	//    * For the G.025X worker type, each worker maps to 0.25 DPU (2 vCPUs, 4
	//    GB of memory) with 84GB disk (approximately 34GB free), and provides 1
	//    executor per worker. We recommend this worker type for low volume streaming
	//    jobs. This worker type is only available for Glue version 3.0 streaming
	//    jobs.
	//
	//    * For the Z.2X worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB
	//    of memory) with 128 GB disk (approximately 120GB free), and provides up
	//    to 8 Ray workers based on the autoscaler.
	WorkerType *string `type:"string" enum:"WorkerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Job) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Job) GoString() string {
	return s.String()
}

// SetAllocatedCapacity sets the AllocatedCapacity field's value.
func (s *Job) SetAllocatedCapacity(v int64) *Job {
	s.AllocatedCapacity = &v
	return s
}

// SetCodeGenConfigurationNodes sets the CodeGenConfigurationNodes field's value.
func (s *Job) SetCodeGenConfigurationNodes(v map[string]*CodeGenConfigurationNode) *Job {
	s.CodeGenConfigurationNodes = v
	return s
}

// SetCommand sets the Command field's value.
func (s *Job) SetCommand(v *JobCommand) *Job {
	s.Command = v
	return s
}

// SetConnections sets the Connections field's value.
func (s *Job) SetConnections(v *ConnectionsList) *Job {
	s.Connections = v
	return s
}

// SetCreatedOn sets the CreatedOn field's value.
func (s *Job) SetCreatedOn(v time.Time) *Job {
	s.CreatedOn = &v
	return s
}

// SetDefaultArguments sets the DefaultArguments field's value.
func (s *Job) SetDefaultArguments(v map[string]*string) *Job {
	s.DefaultArguments = v
	return s
}

// SetDescription sets the Description field's value.
func (s *Job) SetDescription(v string) *Job {
	s.Description = &v
	return s
}

// SetExecutionClass sets the ExecutionClass field's value.
func (s *Job) SetExecutionClass(v string) *Job {
	s.ExecutionClass = &v
	return s
}

// SetExecutionProperty sets the ExecutionProperty field's value.
func (s *Job) SetExecutionProperty(v *ExecutionProperty) *Job {
	s.ExecutionProperty = v
	return s
}

// SetGlueVersion sets the GlueVersion field's value.
func (s *Job) SetGlueVersion(v string) *Job {
	s.GlueVersion = &v
	return s
}

// SetJobMode sets the JobMode field's value.
func (s *Job) SetJobMode(v string) *Job {
	s.JobMode = &v
	return s
}

// SetLastModifiedOn sets the LastModifiedOn field's value.
func (s *Job) SetLastModifiedOn(v time.Time) *Job {
	s.LastModifiedOn = &v
	return s
}

// SetLogUri sets the LogUri field's value.
func (s *Job) SetLogUri(v string) *Job {
	s.LogUri = &v
	return s
}

// SetMaintenanceWindow sets the MaintenanceWindow field's value.
func (s *Job) SetMaintenanceWindow(v string) *Job {
	s.MaintenanceWindow = &v
	return s
}

// SetMaxCapacity sets the MaxCapacity field's value.
func (s *Job) SetMaxCapacity(v float64) *Job {
	s.MaxCapacity = &v
	return s
}

// SetMaxRetries sets the MaxRetries field's value.
func (s *Job) SetMaxRetries(v int64) *Job {
	s.MaxRetries = &v
	return s
}

// SetName sets the Name field's value.
func (s *Job) SetName(v string) *Job {
	s.Name = &v
	return s
}

// SetNonOverridableArguments sets the NonOverridableArguments field's value.
func (s *Job) SetNonOverridableArguments(v map[string]*string) *Job {
	s.NonOverridableArguments = v
	return s
}

// SetNotificationProperty sets the NotificationProperty field's value.
func (s *Job) SetNotificationProperty(v *NotificationProperty) *Job {
	s.NotificationProperty = v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *Job) SetNumberOfWorkers(v int64) *Job {
	s.NumberOfWorkers = &v
	return s
}

// SetProfileName sets the ProfileName field's value.
func (s *Job) SetProfileName(v string) *Job {
	s.ProfileName = &v
	return s
}

// SetRole sets the Role field's value.
func (s *Job) SetRole(v string) *Job {
	s.Role = &v
	return s
}

// SetSecurityConfiguration sets the SecurityConfiguration field's value.
func (s *Job) SetSecurityConfiguration(v string) *Job {
	s.SecurityConfiguration = &v
	return s
}

// SetSourceControlDetails sets the SourceControlDetails field's value.
func (s *Job) SetSourceControlDetails(v *SourceControlDetails) *Job {
	s.SourceControlDetails = v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *Job) SetTimeout(v int64) *Job {
	s.Timeout = &v
	return s
}

// SetWorkerType sets the WorkerType field's value.
func (s *Job) SetWorkerType(v string) *Job {
	s.WorkerType = &v
	return s
}

// Defines a point that a job can resume processing.
type JobBookmarkEntry struct {
	_ struct{} `type:"structure"`

	// The attempt ID number.
	Attempt *int64 `type:"integer"`

	// The bookmark itself.
	JobBookmark *string `type:"string"`

	// The name of the job in question.
	JobName *string `type:"string"`

	// The unique run identifier associated with the previous job run.
	PreviousRunId *string `type:"string"`

	// The run ID number.
	Run *int64 `type:"integer"`

	// The run ID number.
	RunId *string `type:"string"`

	// The version of the job.
	Version *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 JobBookmarkEntry) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JobBookmarkEntry) GoString() string {
	return s.String()
}

// SetAttempt sets the Attempt field's value.
func (s *JobBookmarkEntry) SetAttempt(v int64) *JobBookmarkEntry {
	s.Attempt = &v
	return s
}

// SetJobBookmark sets the JobBookmark field's value.
func (s *JobBookmarkEntry) SetJobBookmark(v string) *JobBookmarkEntry {
	s.JobBookmark = &v
	return s
}

// SetJobName sets the JobName field's value.
func (s *JobBookmarkEntry) SetJobName(v string) *JobBookmarkEntry {
	s.JobName = &v
	return s
}

// SetPreviousRunId sets the PreviousRunId field's value.
func (s *JobBookmarkEntry) SetPreviousRunId(v string) *JobBookmarkEntry {
	s.PreviousRunId = &v
	return s
}

// SetRun sets the Run field's value.
func (s *JobBookmarkEntry) SetRun(v int64) *JobBookmarkEntry {
	s.Run = &v
	return s
}

// SetRunId sets the RunId field's value.
func (s *JobBookmarkEntry) SetRunId(v string) *JobBookmarkEntry {
	s.RunId = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *JobBookmarkEntry) SetVersion(v int64) *JobBookmarkEntry {
	s.Version = &v
	return s
}

// Specifies how job bookmark data should be encrypted.
type JobBookmarksEncryption struct {
	_ struct{} `type:"structure"`

	// The encryption mode to use for job bookmarks data.
	JobBookmarksEncryptionMode *string `type:"string" enum:"JobBookmarksEncryptionMode"`

	// The Amazon Resource Name (ARN) of the KMS key to be used to encrypt the data.
	KmsKeyArn *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 JobBookmarksEncryption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JobBookmarksEncryption) GoString() string {
	return s.String()
}

// SetJobBookmarksEncryptionMode sets the JobBookmarksEncryptionMode field's value.
func (s *JobBookmarksEncryption) SetJobBookmarksEncryptionMode(v string) *JobBookmarksEncryption {
	s.JobBookmarksEncryptionMode = &v
	return s
}

// SetKmsKeyArn sets the KmsKeyArn field's value.
func (s *JobBookmarksEncryption) SetKmsKeyArn(v string) *JobBookmarksEncryption {
	s.KmsKeyArn = &v
	return s
}

// Specifies code that runs when a job is run.
type JobCommand struct {
	_ struct{} `type:"structure"`

	// The name of the job command. For an Apache Spark ETL job, this must be glueetl.
	// For a Python shell job, it must be pythonshell. For an Apache Spark streaming
	// ETL job, this must be gluestreaming. For a Ray job, this must be glueray.
	Name *string `type:"string"`

	// The Python version being used to run a Python shell job. Allowed values are
	// 2 or 3.
	PythonVersion *string `type:"string"`

	// In Ray jobs, Runtime is used to specify the versions of Ray, Python and additional
	// libraries available in your environment. This field is not used in other
	// job types. For supported runtime environment values, see Supported Ray runtime
	// environments (https://docs.aws.amazon.com/glue/latest/dg/ray-jobs-section.html)
	// in the Glue Developer Guide.
	Runtime *string `type:"string"`

	// Specifies the Amazon Simple Storage Service (Amazon S3) path to a script
	// that runs a job.
	ScriptLocation *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 JobCommand) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JobCommand) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *JobCommand) SetName(v string) *JobCommand {
	s.Name = &v
	return s
}

// SetPythonVersion sets the PythonVersion field's value.
func (s *JobCommand) SetPythonVersion(v string) *JobCommand {
	s.PythonVersion = &v
	return s
}

// SetRuntime sets the Runtime field's value.
func (s *JobCommand) SetRuntime(v string) *JobCommand {
	s.Runtime = &v
	return s
}

// SetScriptLocation sets the ScriptLocation field's value.
func (s *JobCommand) SetScriptLocation(v string) *JobCommand {
	s.ScriptLocation = &v
	return s
}

// The details of a Job node present in the workflow.
type JobNodeDetails struct {
	_ struct{} `type:"structure"`

	// The information for the job runs represented by the job node.
	JobRuns []*JobRun `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 JobNodeDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JobNodeDetails) GoString() string {
	return s.String()
}

// SetJobRuns sets the JobRuns field's value.
func (s *JobNodeDetails) SetJobRuns(v []*JobRun) *JobNodeDetails {
	s.JobRuns = v
	return s
}

// Contains information about a job run.
type JobRun struct {
	_ struct{} `type:"structure"`

	// This field is deprecated. Use MaxCapacity instead.
	//
	// The number of Glue data processing units (DPUs) allocated to this JobRun.
	// From 2 to 100 DPUs can be allocated; the default is 10. A DPU is a relative
	// measure of processing power that consists of 4 vCPUs of compute capacity
	// and 16 GB of memory. For more information, see the Glue pricing page (https://aws.amazon.com/glue/pricing/).
	//
	// Deprecated: This property is deprecated, use MaxCapacity instead.
	AllocatedCapacity *int64 `deprecated:"true" type:"integer"`

	// The job arguments associated with this run. For this job run, they replace
	// the default arguments set in the job definition itself.
	//
	// You can specify arguments here that your own job-execution script consumes,
	// as well as arguments that Glue itself consumes.
	//
	// Job arguments may be logged. Do not pass plaintext secrets as arguments.
	// Retrieve secrets from a Glue Connection, Secrets Manager or other secret
	// management mechanism if you intend to keep them within the Job.
	//
	// For information about how to specify and consume your own Job arguments,
	// see the Calling Glue APIs in Python (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html)
	// topic in the developer guide.
	//
	// For information about the arguments you can provide to this field when configuring
	// Spark jobs, see the Special Parameters Used by Glue (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html)
	// topic in the developer guide.
	//
	// For information about the arguments you can provide to this field when configuring
	// Ray jobs, see Using job parameters in Ray jobs (https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html)
	// in the developer guide.
	Arguments map[string]*string `type:"map"`

	// The number of the attempt to run this job.
	Attempt *int64 `type:"integer"`

	// The date and time that this job run completed.
	CompletedOn *time.Time `type:"timestamp"`

	// This field can be set for either job runs with execution class FLEX or when
	// Auto Scaling is enabled, and represents the total time each executor ran
	// during the lifecycle of a job run in seconds, multiplied by a DPU factor
	// (1 for G.1X, 2 for G.2X, or 0.25 for G.025X workers). This value may be different
	// than the executionEngineRuntime * MaxCapacity as in the case of Auto Scaling
	// jobs, as the number of executors running at a given time may be less than
	// the MaxCapacity. Therefore, it is possible that the value of DPUSeconds is
	// less than executionEngineRuntime * MaxCapacity.
	DPUSeconds *float64 `type:"double"`

	// An error message associated with this job run.
	ErrorMessage *string `type:"string"`

	// Indicates whether the job is run with a standard or flexible execution class.
	// The standard execution-class is ideal for time-sensitive workloads that require
	// fast job startup and dedicated resources.
	//
	// The flexible execution class is appropriate for time-insensitive jobs whose
	// start and completion times may vary.
	//
	// Only jobs with Glue version 3.0 and above and command type glueetl will be
	// allowed to set ExecutionClass to FLEX. The flexible execution class is available
	// for Spark jobs.
	ExecutionClass *string `type:"string" enum:"ExecutionClass"`

	// The amount of time (in seconds) that the job run consumed resources.
	ExecutionTime *int64 `type:"integer"`

	// In Spark jobs, GlueVersion determines the versions of Apache Spark and Python
	// that Glue available in a job. The Python version indicates the version supported
	// for jobs of type Spark.
	//
	// Ray jobs should set GlueVersion to 4.0 or greater. However, the versions
	// of Ray, Python and additional libraries available in your Ray job are determined
	// by the Runtime parameter of the Job command.
	//
	// For more information about the available Glue versions and corresponding
	// Spark and Python versions, see Glue version (https://docs.aws.amazon.com/glue/latest/dg/add-job.html)
	// in the developer guide.
	//
	// Jobs that are created without specifying a Glue version default to Glue 0.9.
	GlueVersion *string `min:"1" type:"string"`

	// The ID of this job run.
	Id *string `min:"1" type:"string"`

	// A mode that describes how a job was created. Valid values are:
	//
	//    * SCRIPT - The job was created using the Glue Studio script editor.
	//
	//    * VISUAL - The job was created using the Glue Studio visual editor.
	//
	//    * NOTEBOOK - The job was created using an interactive sessions notebook.
	//
	// When the JobMode field is missing or null, SCRIPT is assigned as the default
	// value.
	JobMode *string `type:"string" enum:"JobMode"`

	// The name of the job definition being used in this run.
	JobName *string `min:"1" type:"string"`

	// The current state of the job run. For more information about the statuses
	// of jobs that have terminated abnormally, see Glue Job Run Statuses (https://docs.aws.amazon.com/glue/latest/dg/job-run-statuses.html).
	JobRunState *string `type:"string" enum:"JobRunState"`

	// The last time that this job run was modified.
	LastModifiedOn *time.Time `type:"timestamp"`

	// The name of the log group for secure logging that can be server-side encrypted
	// in Amazon CloudWatch using KMS. This name can be /aws-glue/jobs/, in which
	// case the default encryption is NONE. If you add a role name and SecurityConfiguration
	// name (in other words, /aws-glue/jobs-yourRoleName-yourSecurityConfigurationName/),
	// then that security configuration is used to encrypt the log group.
	LogGroupName *string `type:"string"`

	// This field specifies a day of the week and hour for a maintenance window
	// for streaming jobs. Glue periodically performs maintenance activities. During
	// these maintenance windows, Glue will need to restart your streaming jobs.
	//
	// Glue will restart the job within 3 hours of the specified maintenance window.
	// For instance, if you set up the maintenance window for Monday at 10:00AM
	// GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.
	MaintenanceWindow *string `type:"string"`

	// For Glue version 1.0 or earlier jobs, using the standard worker type, the
	// number of Glue data processing units (DPUs) that can be allocated when this
	// job runs. A DPU is a relative measure of processing power that consists of
	// 4 vCPUs of compute capacity and 16 GB of memory. For more information, see
	// the Glue pricing page (https://aws.amazon.com/glue/pricing/).
	//
	// For Glue version 2.0+ jobs, you cannot specify a Maximum capacity. Instead,
	// you should specify a Worker type and the Number of workers.
	//
	// Do not set MaxCapacity if using WorkerType and NumberOfWorkers.
	//
	// The value that can be allocated for MaxCapacity depends on whether you are
	// running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming
	// ETL job:
	//
	//    * When you specify a Python shell job (JobCommand.Name="pythonshell"),
	//    you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.
	//
	//    * When you specify an Apache Spark ETL job (JobCommand.Name="glueetl")
	//    or Apache Spark streaming ETL job (JobCommand.Name="gluestreaming"), you
	//    can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type
	//    cannot have a fractional DPU allocation.
	MaxCapacity *float64 `type:"double"`

	// Specifies configuration properties of a job run notification.
	NotificationProperty *NotificationProperty `type:"structure"`

	// The number of workers of a defined workerType that are allocated when a job
	// runs.
	NumberOfWorkers *int64 `type:"integer"`

	// A list of predecessors to this job run.
	PredecessorRuns []*Predecessor `type:"list"`

	// The ID of the previous run of this job. For example, the JobRunId specified
	// in the StartJobRun action.
	PreviousRunId *string `min:"1" type:"string"`

	// The name of an Glue usage profile associated with the job run.
	ProfileName *string `min:"1" type:"string"`

	// The name of the SecurityConfiguration structure to be used with this job
	// run.
	SecurityConfiguration *string `min:"1" type:"string"`

	// The date and time at which this job run was started.
	StartedOn *time.Time `type:"timestamp"`

	// The JobRun timeout in minutes. This is the maximum time that a job run can
	// consume resources before it is terminated and enters TIMEOUT status. This
	// value overrides the timeout value set in the parent job.
	//
	// Streaming jobs must have timeout values less than 7 days or 10080 minutes.
	// When the value is left blank, the job will be restarted after 7 days based
	// if you have not setup a maintenance window. If you have setup maintenance
	// window, it will be restarted during the maintenance window after 7 days.
	Timeout *int64 `min:"1" type:"integer"`

	// The name of the trigger that started this job run.
	TriggerName *string `min:"1" type:"string"`

	// The type of predefined worker that is allocated when a job runs. Accepts
	// a value of G.1X, G.2X, G.4X, G.8X or G.025X for Spark jobs. Accepts the value
	// Z.2X for Ray jobs.
	//
	//    * For the G.1X worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB
	//    of memory) with 84GB disk (approximately 34GB free), and provides 1 executor
	//    per worker. We recommend this worker type for workloads such as data transforms,
	//    joins, and queries, to offers a scalable and cost effective way to run
	//    most jobs.
	//
	//    * For the G.2X worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB
	//    of memory) with 128GB disk (approximately 77GB free), and provides 1 executor
	//    per worker. We recommend this worker type for workloads such as data transforms,
	//    joins, and queries, to offers a scalable and cost effective way to run
	//    most jobs.
	//
	//    * For the G.4X worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB
	//    of memory) with 256GB disk (approximately 235GB free), and provides 1
	//    executor per worker. We recommend this worker type for jobs whose workloads
	//    contain your most demanding transforms, aggregations, joins, and queries.
	//    This worker type is available only for Glue version 3.0 or later Spark
	//    ETL jobs in the following Amazon Web Services Regions: US East (Ohio),
	//    US East (N. Virginia), US West (Oregon), Asia Pacific (Singapore), Asia
	//    Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt),
	//    Europe (Ireland), and Europe (Stockholm).
	//
	//    * For the G.8X worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB
	//    of memory) with 512GB disk (approximately 487GB free), and provides 1
	//    executor per worker. We recommend this worker type for jobs whose workloads
	//    contain your most demanding transforms, aggregations, joins, and queries.
	//    This worker type is available only for Glue version 3.0 or later Spark
	//    ETL jobs, in the same Amazon Web Services Regions as supported for the
	//    G.4X worker type.
	//
	//    * For the G.025X worker type, each worker maps to 0.25 DPU (2 vCPUs, 4
	//    GB of memory) with 84GB disk (approximately 34GB free), and provides 1
	//    executor per worker. We recommend this worker type for low volume streaming
	//    jobs. This worker type is only available for Glue version 3.0 streaming
	//    jobs.
	//
	//    * For the Z.2X worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB
	//    of memory) with 128 GB disk (approximately 120GB free), and provides up
	//    to 8 Ray workers based on the autoscaler.
	WorkerType *string `type:"string" enum:"WorkerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JobRun) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JobRun) GoString() string {
	return s.String()
}

// SetAllocatedCapacity sets the AllocatedCapacity field's value.
func (s *JobRun) SetAllocatedCapacity(v int64) *JobRun {
	s.AllocatedCapacity = &v
	return s
}

// SetArguments sets the Arguments field's value.
func (s *JobRun) SetArguments(v map[string]*string) *JobRun {
	s.Arguments = v
	return s
}

// SetAttempt sets the Attempt field's value.
func (s *JobRun) SetAttempt(v int64) *JobRun {
	s.Attempt = &v
	return s
}

// SetCompletedOn sets the CompletedOn field's value.
func (s *JobRun) SetCompletedOn(v time.Time) *JobRun {
	s.CompletedOn = &v
	return s
}

// SetDPUSeconds sets the DPUSeconds field's value.
func (s *JobRun) SetDPUSeconds(v float64) *JobRun {
	s.DPUSeconds = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *JobRun) SetErrorMessage(v string) *JobRun {
	s.ErrorMessage = &v
	return s
}

// SetExecutionClass sets the ExecutionClass field's value.
func (s *JobRun) SetExecutionClass(v string) *JobRun {
	s.ExecutionClass = &v
	return s
}

// SetExecutionTime sets the ExecutionTime field's value.
func (s *JobRun) SetExecutionTime(v int64) *JobRun {
	s.ExecutionTime = &v
	return s
}

// SetGlueVersion sets the GlueVersion field's value.
func (s *JobRun) SetGlueVersion(v string) *JobRun {
	s.GlueVersion = &v
	return s
}

// SetId sets the Id field's value.
func (s *JobRun) SetId(v string) *JobRun {
	s.Id = &v
	return s
}

// SetJobMode sets the JobMode field's value.
func (s *JobRun) SetJobMode(v string) *JobRun {
	s.JobMode = &v
	return s
}

// SetJobName sets the JobName field's value.
func (s *JobRun) SetJobName(v string) *JobRun {
	s.JobName = &v
	return s
}

// SetJobRunState sets the JobRunState field's value.
func (s *JobRun) SetJobRunState(v string) *JobRun {
	s.JobRunState = &v
	return s
}

// SetLastModifiedOn sets the LastModifiedOn field's value.
func (s *JobRun) SetLastModifiedOn(v time.Time) *JobRun {
	s.LastModifiedOn = &v
	return s
}

// SetLogGroupName sets the LogGroupName field's value.
func (s *JobRun) SetLogGroupName(v string) *JobRun {
	s.LogGroupName = &v
	return s
}

// SetMaintenanceWindow sets the MaintenanceWindow field's value.
func (s *JobRun) SetMaintenanceWindow(v string) *JobRun {
	s.MaintenanceWindow = &v
	return s
}

// SetMaxCapacity sets the MaxCapacity field's value.
func (s *JobRun) SetMaxCapacity(v float64) *JobRun {
	s.MaxCapacity = &v
	return s
}

// SetNotificationProperty sets the NotificationProperty field's value.
func (s *JobRun) SetNotificationProperty(v *NotificationProperty) *JobRun {
	s.NotificationProperty = v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *JobRun) SetNumberOfWorkers(v int64) *JobRun {
	s.NumberOfWorkers = &v
	return s
}

// SetPredecessorRuns sets the PredecessorRuns field's value.
func (s *JobRun) SetPredecessorRuns(v []*Predecessor) *JobRun {
	s.PredecessorRuns = v
	return s
}

// SetPreviousRunId sets the PreviousRunId field's value.
func (s *JobRun) SetPreviousRunId(v string) *JobRun {
	s.PreviousRunId = &v
	return s
}

// SetProfileName sets the ProfileName field's value.
func (s *JobRun) SetProfileName(v string) *JobRun {
	s.ProfileName = &v
	return s
}

// SetSecurityConfiguration sets the SecurityConfiguration field's value.
func (s *JobRun) SetSecurityConfiguration(v string) *JobRun {
	s.SecurityConfiguration = &v
	return s
}

// SetStartedOn sets the StartedOn field's value.
func (s *JobRun) SetStartedOn(v time.Time) *JobRun {
	s.StartedOn = &v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *JobRun) SetTimeout(v int64) *JobRun {
	s.Timeout = &v
	return s
}

// SetTriggerName sets the TriggerName field's value.
func (s *JobRun) SetTriggerName(v string) *JobRun {
	s.TriggerName = &v
	return s
}

// SetWorkerType sets the WorkerType field's value.
func (s *JobRun) SetWorkerType(v string) *JobRun {
	s.WorkerType = &v
	return s
}

// Specifies information used to update an existing job definition. The previous
// job definition is completely overwritten by this information.
type JobUpdate struct {
	_ struct{} `type:"structure"`

	// This field is deprecated. Use MaxCapacity instead.
	//
	// The number of Glue data processing units (DPUs) to allocate to this job.
	// You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative
	// measure of processing power that consists of 4 vCPUs of compute capacity
	// and 16 GB of memory. For more information, see the Glue pricing page (https://aws.amazon.com/glue/pricing/).
	//
	// Deprecated: This property is deprecated, use MaxCapacity instead.
	AllocatedCapacity *int64 `deprecated:"true" type:"integer"`

	// The representation of a directed acyclic graph on which both the Glue Studio
	// visual component and Glue Studio code generation is based.
	//
	// CodeGenConfigurationNodes is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by JobUpdate's
	// String and GoString methods.
	CodeGenConfigurationNodes map[string]*CodeGenConfigurationNode `type:"map" sensitive:"true"`

	// The JobCommand that runs this job (required).
	Command *JobCommand `type:"structure"`

	// The connections used for this job.
	Connections *ConnectionsList `type:"structure"`

	// The default arguments for every run of this job, specified as name-value
	// pairs.
	//
	// You can specify arguments here that your own job-execution script consumes,
	// as well as arguments that Glue itself consumes.
	//
	// Job arguments may be logged. Do not pass plaintext secrets as arguments.
	// Retrieve secrets from a Glue Connection, Secrets Manager or other secret
	// management mechanism if you intend to keep them within the Job.
	//
	// For information about how to specify and consume your own Job arguments,
	// see the Calling Glue APIs in Python (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html)
	// topic in the developer guide.
	//
	// For information about the arguments you can provide to this field when configuring
	// Spark jobs, see the Special Parameters Used by Glue (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html)
	// topic in the developer guide.
	//
	// For information about the arguments you can provide to this field when configuring
	// Ray jobs, see Using job parameters in Ray jobs (https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html)
	// in the developer guide.
	DefaultArguments map[string]*string `type:"map"`

	// Description of the job being defined.
	Description *string `type:"string"`

	// Indicates whether the job is run with a standard or flexible execution class.
	// The standard execution-class is ideal for time-sensitive workloads that require
	// fast job startup and dedicated resources.
	//
	// The flexible execution class is appropriate for time-insensitive jobs whose
	// start and completion times may vary.
	//
	// Only jobs with Glue version 3.0 and above and command type glueetl will be
	// allowed to set ExecutionClass to FLEX. The flexible execution class is available
	// for Spark jobs.
	ExecutionClass *string `type:"string" enum:"ExecutionClass"`

	// An ExecutionProperty specifying the maximum number of concurrent runs allowed
	// for this job.
	ExecutionProperty *ExecutionProperty `type:"structure"`

	// In Spark jobs, GlueVersion determines the versions of Apache Spark and Python
	// that Glue available in a job. The Python version indicates the version supported
	// for jobs of type Spark.
	//
	// Ray jobs should set GlueVersion to 4.0 or greater. However, the versions
	// of Ray, Python and additional libraries available in your Ray job are determined
	// by the Runtime parameter of the Job command.
	//
	// For more information about the available Glue versions and corresponding
	// Spark and Python versions, see Glue version (https://docs.aws.amazon.com/glue/latest/dg/add-job.html)
	// in the developer guide.
	//
	// Jobs that are created without specifying a Glue version default to Glue 0.9.
	GlueVersion *string `min:"1" type:"string"`

	// A mode that describes how a job was created. Valid values are:
	//
	//    * SCRIPT - The job was created using the Glue Studio script editor.
	//
	//    * VISUAL - The job was created using the Glue Studio visual editor.
	//
	//    * NOTEBOOK - The job was created using an interactive sessions notebook.
	//
	// When the JobMode field is missing or null, SCRIPT is assigned as the default
	// value.
	JobMode *string `type:"string" enum:"JobMode"`

	// This field is reserved for future use.
	LogUri *string `type:"string"`

	// This field specifies a day of the week and hour for a maintenance window
	// for streaming jobs. Glue periodically performs maintenance activities. During
	// these maintenance windows, Glue will need to restart your streaming jobs.
	//
	// Glue will restart the job within 3 hours of the specified maintenance window.
	// For instance, if you set up the maintenance window for Monday at 10:00AM
	// GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.
	MaintenanceWindow *string `type:"string"`

	// For Glue version 1.0 or earlier jobs, using the standard worker type, the
	// number of Glue data processing units (DPUs) that can be allocated when this
	// job runs. A DPU is a relative measure of processing power that consists of
	// 4 vCPUs of compute capacity and 16 GB of memory. For more information, see
	// the Glue pricing page (https://aws.amazon.com/glue/pricing/).
	//
	// For Glue version 2.0+ jobs, you cannot specify a Maximum capacity. Instead,
	// you should specify a Worker type and the Number of workers.
	//
	// Do not set MaxCapacity if using WorkerType and NumberOfWorkers.
	//
	// The value that can be allocated for MaxCapacity depends on whether you are
	// running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming
	// ETL job:
	//
	//    * When you specify a Python shell job (JobCommand.Name="pythonshell"),
	//    you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.
	//
	//    * When you specify an Apache Spark ETL job (JobCommand.Name="glueetl")
	//    or Apache Spark streaming ETL job (JobCommand.Name="gluestreaming"), you
	//    can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type
	//    cannot have a fractional DPU allocation.
	MaxCapacity *float64 `type:"double"`

	// The maximum number of times to retry this job if it fails.
	MaxRetries *int64 `type:"integer"`

	// Arguments for this job that are not overridden when providing job arguments
	// in a job run, specified as name-value pairs.
	NonOverridableArguments map[string]*string `type:"map"`

	// Specifies the configuration properties of a job notification.
	NotificationProperty *NotificationProperty `type:"structure"`

	// The number of workers of a defined workerType that are allocated when a job
	// runs.
	NumberOfWorkers *int64 `type:"integer"`

	// The name or Amazon Resource Name (ARN) of the IAM role associated with this
	// job (required).
	Role *string `type:"string"`

	// The name of the SecurityConfiguration structure to be used with this job.
	SecurityConfiguration *string `min:"1" type:"string"`

	// The details for a source control configuration for a job, allowing synchronization
	// of job artifacts to or from a remote repository.
	SourceControlDetails *SourceControlDetails `type:"structure"`

	// The job timeout in minutes. This is the maximum time that a job run can consume
	// resources before it is terminated and enters TIMEOUT status. The default
	// is 2,880 minutes (48 hours) for batch jobs.
	//
	// Streaming jobs must have timeout values less than 7 days or 10080 minutes.
	// When the value is left blank, the job will be restarted after 7 days based
	// if you have not setup a maintenance window. If you have setup maintenance
	// window, it will be restarted during the maintenance window after 7 days.
	Timeout *int64 `min:"1" type:"integer"`

	// The type of predefined worker that is allocated when a job runs. Accepts
	// a value of G.1X, G.2X, G.4X, G.8X or G.025X for Spark jobs. Accepts the value
	// Z.2X for Ray jobs.
	//
	//    * For the G.1X worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB
	//    of memory) with 84GB disk (approximately 34GB free), and provides 1 executor
	//    per worker. We recommend this worker type for workloads such as data transforms,
	//    joins, and queries, to offers a scalable and cost effective way to run
	//    most jobs.
	//
	//    * For the G.2X worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB
	//    of memory) with 128GB disk (approximately 77GB free), and provides 1 executor
	//    per worker. We recommend this worker type for workloads such as data transforms,
	//    joins, and queries, to offers a scalable and cost effective way to run
	//    most jobs.
	//
	//    * For the G.4X worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB
	//    of memory) with 256GB disk (approximately 235GB free), and provides 1
	//    executor per worker. We recommend this worker type for jobs whose workloads
	//    contain your most demanding transforms, aggregations, joins, and queries.
	//    This worker type is available only for Glue version 3.0 or later Spark
	//    ETL jobs in the following Amazon Web Services Regions: US East (Ohio),
	//    US East (N. Virginia), US West (Oregon), Asia Pacific (Singapore), Asia
	//    Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt),
	//    Europe (Ireland), and Europe (Stockholm).
	//
	//    * For the G.8X worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB
	//    of memory) with 512GB disk (approximately 487GB free), and provides 1
	//    executor per worker. We recommend this worker type for jobs whose workloads
	//    contain your most demanding transforms, aggregations, joins, and queries.
	//    This worker type is available only for Glue version 3.0 or later Spark
	//    ETL jobs, in the same Amazon Web Services Regions as supported for the
	//    G.4X worker type.
	//
	//    * For the G.025X worker type, each worker maps to 0.25 DPU (2 vCPUs, 4
	//    GB of memory) with 84GB disk (approximately 34GB free), and provides 1
	//    executor per worker. We recommend this worker type for low volume streaming
	//    jobs. This worker type is only available for Glue version 3.0 streaming
	//    jobs.
	//
	//    * For the Z.2X worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB
	//    of memory) with 128 GB disk (approximately 120GB free), and provides up
	//    to 8 Ray workers based on the autoscaler.
	WorkerType *string `type:"string" enum:"WorkerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JobUpdate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JobUpdate) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *JobUpdate) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "JobUpdate"}
	if s.GlueVersion != nil && len(*s.GlueVersion) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GlueVersion", 1))
	}
	if s.SecurityConfiguration != nil && len(*s.SecurityConfiguration) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecurityConfiguration", 1))
	}
	if s.Timeout != nil && *s.Timeout < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Timeout", 1))
	}
	if s.CodeGenConfigurationNodes != nil {
		for i, v := range s.CodeGenConfigurationNodes {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CodeGenConfigurationNodes", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.NotificationProperty != nil {
		if err := s.NotificationProperty.Validate(); err != nil {
			invalidParams.AddNested("NotificationProperty", err.(request.ErrInvalidParams))
		}
	}
	if s.SourceControlDetails != nil {
		if err := s.SourceControlDetails.Validate(); err != nil {
			invalidParams.AddNested("SourceControlDetails", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllocatedCapacity sets the AllocatedCapacity field's value.
func (s *JobUpdate) SetAllocatedCapacity(v int64) *JobUpdate {
	s.AllocatedCapacity = &v
	return s
}

// SetCodeGenConfigurationNodes sets the CodeGenConfigurationNodes field's value.
func (s *JobUpdate) SetCodeGenConfigurationNodes(v map[string]*CodeGenConfigurationNode) *JobUpdate {
	s.CodeGenConfigurationNodes = v
	return s
}

// SetCommand sets the Command field's value.
func (s *JobUpdate) SetCommand(v *JobCommand) *JobUpdate {
	s.Command = v
	return s
}

// SetConnections sets the Connections field's value.
func (s *JobUpdate) SetConnections(v *ConnectionsList) *JobUpdate {
	s.Connections = v
	return s
}

// SetDefaultArguments sets the DefaultArguments field's value.
func (s *JobUpdate) SetDefaultArguments(v map[string]*string) *JobUpdate {
	s.DefaultArguments = v
	return s
}

// SetDescription sets the Description field's value.
func (s *JobUpdate) SetDescription(v string) *JobUpdate {
	s.Description = &v
	return s
}

// SetExecutionClass sets the ExecutionClass field's value.
func (s *JobUpdate) SetExecutionClass(v string) *JobUpdate {
	s.ExecutionClass = &v
	return s
}

// SetExecutionProperty sets the ExecutionProperty field's value.
func (s *JobUpdate) SetExecutionProperty(v *ExecutionProperty) *JobUpdate {
	s.ExecutionProperty = v
	return s
}

// SetGlueVersion sets the GlueVersion field's value.
func (s *JobUpdate) SetGlueVersion(v string) *JobUpdate {
	s.GlueVersion = &v
	return s
}

// SetJobMode sets the JobMode field's value.
func (s *JobUpdate) SetJobMode(v string) *JobUpdate {
	s.JobMode = &v
	return s
}

// SetLogUri sets the LogUri field's value.
func (s *JobUpdate) SetLogUri(v string) *JobUpdate {
	s.LogUri = &v
	return s
}

// SetMaintenanceWindow sets the MaintenanceWindow field's value.
func (s *JobUpdate) SetMaintenanceWindow(v string) *JobUpdate {
	s.MaintenanceWindow = &v
	return s
}

// SetMaxCapacity sets the MaxCapacity field's value.
func (s *JobUpdate) SetMaxCapacity(v float64) *JobUpdate {
	s.MaxCapacity = &v
	return s
}

// SetMaxRetries sets the MaxRetries field's value.
func (s *JobUpdate) SetMaxRetries(v int64) *JobUpdate {
	s.MaxRetries = &v
	return s
}

// SetNonOverridableArguments sets the NonOverridableArguments field's value.
func (s *JobUpdate) SetNonOverridableArguments(v map[string]*string) *JobUpdate {
	s.NonOverridableArguments = v
	return s
}

// SetNotificationProperty sets the NotificationProperty field's value.
func (s *JobUpdate) SetNotificationProperty(v *NotificationProperty) *JobUpdate {
	s.NotificationProperty = v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *JobUpdate) SetNumberOfWorkers(v int64) *JobUpdate {
	s.NumberOfWorkers = &v
	return s
}

// SetRole sets the Role field's value.
func (s *JobUpdate) SetRole(v string) *JobUpdate {
	s.Role = &v
	return s
}

// SetSecurityConfiguration sets the SecurityConfiguration field's value.
func (s *JobUpdate) SetSecurityConfiguration(v string) *JobUpdate {
	s.SecurityConfiguration = &v
	return s
}

// SetSourceControlDetails sets the SourceControlDetails field's value.
func (s *JobUpdate) SetSourceControlDetails(v *SourceControlDetails) *JobUpdate {
	s.SourceControlDetails = v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *JobUpdate) SetTimeout(v int64) *JobUpdate {
	s.Timeout = &v
	return s
}

// SetWorkerType sets the WorkerType field's value.
func (s *JobUpdate) SetWorkerType(v string) *JobUpdate {
	s.WorkerType = &v
	return s
}

// Specifies a transform that joins two datasets into one dataset using a comparison
// phrase on the specified data property keys. You can use inner, outer, left,
// right, left semi, and left anti joins.
type Join struct {
	_ struct{} `type:"structure"`

	// A list of the two columns to be joined.
	//
	// Columns is a required field
	Columns []*JoinColumn `min:"2" type:"list" required:"true"`

	// The data inputs identified by their node names.
	//
	// Inputs is a required field
	Inputs []*string `min:"2" type:"list" required:"true"`

	// Specifies the type of join to be performed on the datasets.
	//
	// JoinType is a required field
	JoinType *string `type:"string" required:"true" enum:"JoinType"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *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 Join) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Join) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Join) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Join"}
	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.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 2 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 2))
	}
	if s.JoinType == nil {
		invalidParams.Add(request.NewErrParamRequired("JoinType"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	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 *Join) SetColumns(v []*JoinColumn) *Join {
	s.Columns = v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *Join) SetInputs(v []*string) *Join {
	s.Inputs = v
	return s
}

// SetJoinType sets the JoinType field's value.
func (s *Join) SetJoinType(v string) *Join {
	s.JoinType = &v
	return s
}

// SetName sets the Name field's value.
func (s *Join) SetName(v string) *Join {
	s.Name = &v
	return s
}

// Specifies a column to be joined.
type JoinColumn struct {
	_ struct{} `type:"structure"`

	// The column to be joined.
	//
	// From is a required field
	From *string `type:"string" required:"true"`

	// The key of the column to be joined.
	//
	// Keys is a required field
	Keys [][]*string `type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JoinColumn) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JoinColumn) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *JoinColumn) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "JoinColumn"}
	if s.From == nil {
		invalidParams.Add(request.NewErrParamRequired("From"))
	}
	if s.Keys == nil {
		invalidParams.Add(request.NewErrParamRequired("Keys"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFrom sets the From field's value.
func (s *JoinColumn) SetFrom(v string) *JoinColumn {
	s.From = &v
	return s
}

// SetKeys sets the Keys field's value.
func (s *JoinColumn) SetKeys(v [][]*string) *JoinColumn {
	s.Keys = v
	return s
}

// A classifier for JSON content.
type JsonClassifier struct {
	_ struct{} `type:"structure"`

	// The time that this classifier was registered.
	CreationTime *time.Time `type:"timestamp"`

	// A JsonPath string defining the JSON data for the classifier to classify.
	// Glue supports a subset of JsonPath, as described in Writing JsonPath Custom
	// Classifiers (https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html#custom-classifier-json).
	//
	// JsonPath is a required field
	JsonPath *string `type:"string" required:"true"`

	// The time that this classifier was last updated.
	LastUpdated *time.Time `type:"timestamp"`

	// The name of the classifier.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The version of this classifier.
	Version *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 JsonClassifier) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s JsonClassifier) GoString() string {
	return s.String()
}

// SetCreationTime sets the CreationTime field's value.
func (s *JsonClassifier) SetCreationTime(v time.Time) *JsonClassifier {
	s.CreationTime = &v
	return s
}

// SetJsonPath sets the JsonPath field's value.
func (s *JsonClassifier) SetJsonPath(v string) *JsonClassifier {
	s.JsonPath = &v
	return s
}

// SetLastUpdated sets the LastUpdated field's value.
func (s *JsonClassifier) SetLastUpdated(v time.Time) *JsonClassifier {
	s.LastUpdated = &v
	return s
}

// SetName sets the Name field's value.
func (s *JsonClassifier) SetName(v string) *JsonClassifier {
	s.Name = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *JsonClassifier) SetVersion(v int64) *JsonClassifier {
	s.Version = &v
	return s
}

// Additional options for streaming.
type KafkaStreamingSourceOptions struct {
	_ struct{} `type:"structure"`

	// When this option is set to 'true', the data output will contain an additional
	// column named "__src_timestamp" that indicates the time when the corresponding
	// record received by the topic. The default value is 'false'. This option is
	// supported in Glue version 4.0 or later.
	AddRecordTimestamp *string `type:"string"`

	// The specific TopicPartitions to consume. You must specify at least one of
	// "topicName", "assign" or "subscribePattern".
	Assign *string `type:"string"`

	// A list of bootstrap server URLs, for example, as b-1.vpc-test-2.o4q88o.c6.kafka.us-east-1.amazonaws.com:9094.
	// This option must be specified in the API call or defined in the table metadata
	// in the Data Catalog.
	BootstrapServers *string `type:"string"`

	// An optional classification.
	Classification *string `type:"string"`

	// The name of the connection.
	ConnectionName *string `type:"string"`

	// Specifies the delimiter character.
	Delimiter *string `type:"string"`

	// When this option is set to 'true', for each batch, it will emit the metrics
	// for the duration between the oldest record received by the topic and the
	// time it arrives in Glue to CloudWatch. The metric's name is "glue.driver.streaming.maxConsumerLagInMs".
	// The default value is 'false'. This option is supported in Glue version 4.0
	// or later.
	EmitConsumerLagMetrics *string `type:"string"`

	// The end point when a batch query is ended. Possible values are either "latest"
	// or a JSON string that specifies an ending offset for each TopicPartition.
	EndingOffsets *string `type:"string"`

	// Whether to include the Kafka headers. When the option is set to "true", the
	// data output will contain an additional column named "glue_streaming_kafka_headers"
	// with type Array[Struct(key: String, value: String)]. The default value is
	// "false". This option is available in Glue version 3.0 or later only.
	IncludeHeaders *bool `type:"boolean"`

	// The rate limit on the maximum number of offsets that are processed per trigger
	// interval. The specified total number of offsets is proportionally split across
	// topicPartitions of different volumes. The default value is null, which means
	// that the consumer reads all offsets until the known latest offset.
	MaxOffsetsPerTrigger *int64 `type:"long"`

	// The desired minimum number of partitions to read from Kafka. The default
	// value is null, which means that the number of spark partitions is equal to
	// the number of Kafka partitions.
	MinPartitions *int64 `type:"integer"`

	// The number of times to retry before failing to fetch Kafka offsets. The default
	// value is 3.
	NumRetries *int64 `type:"integer"`

	// The timeout in milliseconds to poll data from Kafka in Spark job executors.
	// The default value is 512.
	PollTimeoutMs *int64 `type:"long"`

	// The time in milliseconds to wait before retrying to fetch Kafka offsets.
	// The default value is 10.
	RetryIntervalMs *int64 `type:"long"`

	// The protocol used to communicate with brokers. The possible values are "SSL"
	// or "PLAINTEXT".
	SecurityProtocol *string `type:"string"`

	// The starting position in the Kafka topic to read data from. The possible
	// values are "earliest" or "latest". The default value is "latest".
	StartingOffsets *string `type:"string"`

	// The timestamp of the record in the Kafka topic to start reading data from.
	// The possible values are a timestamp string in UTC format of the pattern yyyy-mm-ddTHH:MM:SSZ
	// (where Z represents a UTC timezone offset with a +/-. For example: "2023-04-04T08:00:00+08:00").
	//
	// Only one of StartingTimestamp or StartingOffsets must be set.
	StartingTimestamp *time.Time `type:"timestamp" timestampFormat:"iso8601"`

	// A Java regex string that identifies the topic list to subscribe to. You must
	// specify at least one of "topicName", "assign" or "subscribePattern".
	SubscribePattern *string `type:"string"`

	// The topic name as specified in Apache Kafka. You must specify at least one
	// of "topicName", "assign" or "subscribePattern".
	TopicName *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 KafkaStreamingSourceOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s KafkaStreamingSourceOptions) GoString() string {
	return s.String()
}

// SetAddRecordTimestamp sets the AddRecordTimestamp field's value.
func (s *KafkaStreamingSourceOptions) SetAddRecordTimestamp(v string) *KafkaStreamingSourceOptions {
	s.AddRecordTimestamp = &v
	return s
}

// SetAssign sets the Assign field's value.
func (s *KafkaStreamingSourceOptions) SetAssign(v string) *KafkaStreamingSourceOptions {
	s.Assign = &v
	return s
}

// SetBootstrapServers sets the BootstrapServers field's value.
func (s *KafkaStreamingSourceOptions) SetBootstrapServers(v string) *KafkaStreamingSourceOptions {
	s.BootstrapServers = &v
	return s
}

// SetClassification sets the Classification field's value.
func (s *KafkaStreamingSourceOptions) SetClassification(v string) *KafkaStreamingSourceOptions {
	s.Classification = &v
	return s
}

// SetConnectionName sets the ConnectionName field's value.
func (s *KafkaStreamingSourceOptions) SetConnectionName(v string) *KafkaStreamingSourceOptions {
	s.ConnectionName = &v
	return s
}

// SetDelimiter sets the Delimiter field's value.
func (s *KafkaStreamingSourceOptions) SetDelimiter(v string) *KafkaStreamingSourceOptions {
	s.Delimiter = &v
	return s
}

// SetEmitConsumerLagMetrics sets the EmitConsumerLagMetrics field's value.
func (s *KafkaStreamingSourceOptions) SetEmitConsumerLagMetrics(v string) *KafkaStreamingSourceOptions {
	s.EmitConsumerLagMetrics = &v
	return s
}

// SetEndingOffsets sets the EndingOffsets field's value.
func (s *KafkaStreamingSourceOptions) SetEndingOffsets(v string) *KafkaStreamingSourceOptions {
	s.EndingOffsets = &v
	return s
}

// SetIncludeHeaders sets the IncludeHeaders field's value.
func (s *KafkaStreamingSourceOptions) SetIncludeHeaders(v bool) *KafkaStreamingSourceOptions {
	s.IncludeHeaders = &v
	return s
}

// SetMaxOffsetsPerTrigger sets the MaxOffsetsPerTrigger field's value.
func (s *KafkaStreamingSourceOptions) SetMaxOffsetsPerTrigger(v int64) *KafkaStreamingSourceOptions {
	s.MaxOffsetsPerTrigger = &v
	return s
}

// SetMinPartitions sets the MinPartitions field's value.
func (s *KafkaStreamingSourceOptions) SetMinPartitions(v int64) *KafkaStreamingSourceOptions {
	s.MinPartitions = &v
	return s
}

// SetNumRetries sets the NumRetries field's value.
func (s *KafkaStreamingSourceOptions) SetNumRetries(v int64) *KafkaStreamingSourceOptions {
	s.NumRetries = &v
	return s
}

// SetPollTimeoutMs sets the PollTimeoutMs field's value.
func (s *KafkaStreamingSourceOptions) SetPollTimeoutMs(v int64) *KafkaStreamingSourceOptions {
	s.PollTimeoutMs = &v
	return s
}

// SetRetryIntervalMs sets the RetryIntervalMs field's value.
func (s *KafkaStreamingSourceOptions) SetRetryIntervalMs(v int64) *KafkaStreamingSourceOptions {
	s.RetryIntervalMs = &v
	return s
}

// SetSecurityProtocol sets the SecurityProtocol field's value.
func (s *KafkaStreamingSourceOptions) SetSecurityProtocol(v string) *KafkaStreamingSourceOptions {
	s.SecurityProtocol = &v
	return s
}

// SetStartingOffsets sets the StartingOffsets field's value.
func (s *KafkaStreamingSourceOptions) SetStartingOffsets(v string) *KafkaStreamingSourceOptions {
	s.StartingOffsets = &v
	return s
}

// SetStartingTimestamp sets the StartingTimestamp field's value.
func (s *KafkaStreamingSourceOptions) SetStartingTimestamp(v time.Time) *KafkaStreamingSourceOptions {
	s.StartingTimestamp = &v
	return s
}

// SetSubscribePattern sets the SubscribePattern field's value.
func (s *KafkaStreamingSourceOptions) SetSubscribePattern(v string) *KafkaStreamingSourceOptions {
	s.SubscribePattern = &v
	return s
}

// SetTopicName sets the TopicName field's value.
func (s *KafkaStreamingSourceOptions) SetTopicName(v string) *KafkaStreamingSourceOptions {
	s.TopicName = &v
	return s
}

// A partition key pair consisting of a name and a type.
type KeySchemaElement struct {
	_ struct{} `type:"structure"`

	// The name of a partition key.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The type of a partition key.
	//
	// Type is a required field
	Type *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s KeySchemaElement) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s KeySchemaElement) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *KeySchemaElement) SetName(v string) *KeySchemaElement {
	s.Name = &v
	return s
}

// SetType sets the Type field's value.
func (s *KeySchemaElement) SetType(v string) *KeySchemaElement {
	s.Type = &v
	return s
}

// Additional options for the Amazon Kinesis streaming data source.
type KinesisStreamingSourceOptions struct {
	_ struct{} `type:"structure"`

	// Adds a time delay between two consecutive getRecords operations. The default
	// value is "False". This option is only configurable for Glue version 2.0 and
	// above.
	AddIdleTimeBetweenReads *bool `type:"boolean"`

	// When this option is set to 'true', the data output will contain an additional
	// column named "__src_timestamp" that indicates the time when the corresponding
	// record received by the stream. The default value is 'false'. This option
	// is supported in Glue version 4.0 or later.
	AddRecordTimestamp *string `type:"string"`

	// Avoids creating an empty microbatch job by checking for unread data in the
	// Kinesis data stream before the batch is started. The default value is "False".
	AvoidEmptyBatches *bool `type:"boolean"`

	// An optional classification.
	Classification *string `type:"string"`

	// Specifies the delimiter character.
	Delimiter *string `type:"string"`

	// The minimum time interval between two ListShards API calls for your script
	// to consider resharding. The default value is 1s.
	DescribeShardInterval *int64 `type:"long"`

	// When this option is set to 'true', for each batch, it will emit the metrics
	// for the duration between the oldest record received by the stream and the
	// time it arrives in Glue to CloudWatch. The metric's name is "glue.driver.streaming.maxConsumerLagInMs".
	// The default value is 'false'. This option is supported in Glue version 4.0
	// or later.
	EmitConsumerLagMetrics *string `type:"string"`

	// The URL of the Kinesis endpoint.
	EndpointUrl *string `type:"string"`

	// The minimum time delay between two consecutive getRecords operations, specified
	// in ms. The default value is 1000. This option is only configurable for Glue
	// version 2.0 and above.
	IdleTimeBetweenReadsInMs *int64 `type:"long"`

	// The maximum number of records to fetch per shard in the Kinesis data stream
	// per microbatch. Note: The client can exceed this limit if the streaming job
	// has already read extra records from Kinesis (in the same get-records call).
	// If MaxFetchRecordsPerShard needs to be strict then it needs to be a multiple
	// of MaxRecordPerRead. The default value is 100000.
	MaxFetchRecordsPerShard *int64 `type:"long"`

	// The maximum time spent for the job executor to read records for the current
	// batch from the Kinesis data stream, specified in milliseconds (ms). Multiple
	// GetRecords API calls may be made within this time. The default value is 1000.
	MaxFetchTimeInMs *int64 `type:"long"`

	// The maximum number of records to fetch from the Kinesis data stream in each
	// getRecords operation. The default value is 10000.
	MaxRecordPerRead *int64 `type:"long"`

	// The maximum cool-off time period (specified in ms) between two retries of
	// a Kinesis Data Streams API call. The default value is 10000.
	MaxRetryIntervalMs *int64 `type:"long"`

	// The maximum number of retries for Kinesis Data Streams API requests. The
	// default value is 3.
	NumRetries *int64 `type:"integer"`

	// The cool-off time period (specified in ms) before retrying the Kinesis Data
	// Streams API call. The default value is 1000.
	RetryIntervalMs *int64 `type:"long"`

	// The Amazon Resource Name (ARN) of the role to assume using AWS Security Token
	// Service (AWS STS). This role must have permissions for describe or read record
	// operations for the Kinesis data stream. You must use this parameter when
	// accessing a data stream in a different account. Used in conjunction with
	// "awsSTSSessionName".
	RoleArn *string `type:"string"`

	// An identifier for the session assuming the role using AWS STS. You must use
	// this parameter when accessing a data stream in a different account. Used
	// in conjunction with "awsSTSRoleARN".
	RoleSessionName *string `type:"string"`

	// The starting position in the Kinesis data stream to read data from. The possible
	// values are "latest", "trim_horizon", "earliest", or a timestamp string in
	// UTC format in the pattern yyyy-mm-ddTHH:MM:SSZ (where Z represents a UTC
	// timezone offset with a +/-. For example: "2023-04-04T08:00:00-04:00"). The
	// default value is "latest".
	//
	// Note: Using a value that is a timestamp string in UTC format for "startingPosition"
	// is supported only for Glue version 4.0 or later.
	StartingPosition *string `type:"string" enum:"StartingPosition"`

	// The timestamp of the record in the Kinesis data stream to start reading data
	// from. The possible values are a timestamp string in UTC format of the pattern
	// yyyy-mm-ddTHH:MM:SSZ (where Z represents a UTC timezone offset with a +/-.
	// For example: "2023-04-04T08:00:00+08:00").
	StartingTimestamp *time.Time `type:"timestamp" timestampFormat:"iso8601"`

	// The Amazon Resource Name (ARN) of the Kinesis data stream.
	StreamArn *string `type:"string"`

	// The name of the Kinesis data stream.
	StreamName *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 KinesisStreamingSourceOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s KinesisStreamingSourceOptions) GoString() string {
	return s.String()
}

// SetAddIdleTimeBetweenReads sets the AddIdleTimeBetweenReads field's value.
func (s *KinesisStreamingSourceOptions) SetAddIdleTimeBetweenReads(v bool) *KinesisStreamingSourceOptions {
	s.AddIdleTimeBetweenReads = &v
	return s
}

// SetAddRecordTimestamp sets the AddRecordTimestamp field's value.
func (s *KinesisStreamingSourceOptions) SetAddRecordTimestamp(v string) *KinesisStreamingSourceOptions {
	s.AddRecordTimestamp = &v
	return s
}

// SetAvoidEmptyBatches sets the AvoidEmptyBatches field's value.
func (s *KinesisStreamingSourceOptions) SetAvoidEmptyBatches(v bool) *KinesisStreamingSourceOptions {
	s.AvoidEmptyBatches = &v
	return s
}

// SetClassification sets the Classification field's value.
func (s *KinesisStreamingSourceOptions) SetClassification(v string) *KinesisStreamingSourceOptions {
	s.Classification = &v
	return s
}

// SetDelimiter sets the Delimiter field's value.
func (s *KinesisStreamingSourceOptions) SetDelimiter(v string) *KinesisStreamingSourceOptions {
	s.Delimiter = &v
	return s
}

// SetDescribeShardInterval sets the DescribeShardInterval field's value.
func (s *KinesisStreamingSourceOptions) SetDescribeShardInterval(v int64) *KinesisStreamingSourceOptions {
	s.DescribeShardInterval = &v
	return s
}

// SetEmitConsumerLagMetrics sets the EmitConsumerLagMetrics field's value.
func (s *KinesisStreamingSourceOptions) SetEmitConsumerLagMetrics(v string) *KinesisStreamingSourceOptions {
	s.EmitConsumerLagMetrics = &v
	return s
}

// SetEndpointUrl sets the EndpointUrl field's value.
func (s *KinesisStreamingSourceOptions) SetEndpointUrl(v string) *KinesisStreamingSourceOptions {
	s.EndpointUrl = &v
	return s
}

// SetIdleTimeBetweenReadsInMs sets the IdleTimeBetweenReadsInMs field's value.
func (s *KinesisStreamingSourceOptions) SetIdleTimeBetweenReadsInMs(v int64) *KinesisStreamingSourceOptions {
	s.IdleTimeBetweenReadsInMs = &v
	return s
}

// SetMaxFetchRecordsPerShard sets the MaxFetchRecordsPerShard field's value.
func (s *KinesisStreamingSourceOptions) SetMaxFetchRecordsPerShard(v int64) *KinesisStreamingSourceOptions {
	s.MaxFetchRecordsPerShard = &v
	return s
}

// SetMaxFetchTimeInMs sets the MaxFetchTimeInMs field's value.
func (s *KinesisStreamingSourceOptions) SetMaxFetchTimeInMs(v int64) *KinesisStreamingSourceOptions {
	s.MaxFetchTimeInMs = &v
	return s
}

// SetMaxRecordPerRead sets the MaxRecordPerRead field's value.
func (s *KinesisStreamingSourceOptions) SetMaxRecordPerRead(v int64) *KinesisStreamingSourceOptions {
	s.MaxRecordPerRead = &v
	return s
}

// SetMaxRetryIntervalMs sets the MaxRetryIntervalMs field's value.
func (s *KinesisStreamingSourceOptions) SetMaxRetryIntervalMs(v int64) *KinesisStreamingSourceOptions {
	s.MaxRetryIntervalMs = &v
	return s
}

// SetNumRetries sets the NumRetries field's value.
func (s *KinesisStreamingSourceOptions) SetNumRetries(v int64) *KinesisStreamingSourceOptions {
	s.NumRetries = &v
	return s
}

// SetRetryIntervalMs sets the RetryIntervalMs field's value.
func (s *KinesisStreamingSourceOptions) SetRetryIntervalMs(v int64) *KinesisStreamingSourceOptions {
	s.RetryIntervalMs = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *KinesisStreamingSourceOptions) SetRoleArn(v string) *KinesisStreamingSourceOptions {
	s.RoleArn = &v
	return s
}

// SetRoleSessionName sets the RoleSessionName field's value.
func (s *KinesisStreamingSourceOptions) SetRoleSessionName(v string) *KinesisStreamingSourceOptions {
	s.RoleSessionName = &v
	return s
}

// SetStartingPosition sets the StartingPosition field's value.
func (s *KinesisStreamingSourceOptions) SetStartingPosition(v string) *KinesisStreamingSourceOptions {
	s.StartingPosition = &v
	return s
}

// SetStartingTimestamp sets the StartingTimestamp field's value.
func (s *KinesisStreamingSourceOptions) SetStartingTimestamp(v time.Time) *KinesisStreamingSourceOptions {
	s.StartingTimestamp = &v
	return s
}

// SetStreamArn sets the StreamArn field's value.
func (s *KinesisStreamingSourceOptions) SetStreamArn(v string) *KinesisStreamingSourceOptions {
	s.StreamArn = &v
	return s
}

// SetStreamName sets the StreamName field's value.
func (s *KinesisStreamingSourceOptions) SetStreamName(v string) *KinesisStreamingSourceOptions {
	s.StreamName = &v
	return s
}

// Specifies configuration properties for a labeling set generation task run.
type LabelingSetGenerationTaskRunProperties struct {
	_ struct{} `type:"structure"`

	// The Amazon Simple Storage Service (Amazon S3) path where you will generate
	// the labeling set.
	OutputS3Path *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 LabelingSetGenerationTaskRunProperties) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LabelingSetGenerationTaskRunProperties) GoString() string {
	return s.String()
}

// SetOutputS3Path sets the OutputS3Path field's value.
func (s *LabelingSetGenerationTaskRunProperties) SetOutputS3Path(v string) *LabelingSetGenerationTaskRunProperties {
	s.OutputS3Path = &v
	return s
}

// Specifies Lake Formation configuration settings for the crawler.
type LakeFormationConfiguration struct {
	_ struct{} `type:"structure"`

	// Required for cross account crawls. For same account crawls as the target
	// data, this can be left as null.
	AccountId *string `type:"string"`

	// Specifies whether to use Lake Formation credentials for the crawler instead
	// of the IAM role credentials.
	UseLakeFormationCredentials *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 LakeFormationConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LakeFormationConfiguration) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *LakeFormationConfiguration) SetAccountId(v string) *LakeFormationConfiguration {
	s.AccountId = &v
	return s
}

// SetUseLakeFormationCredentials sets the UseLakeFormationCredentials field's value.
func (s *LakeFormationConfiguration) SetUseLakeFormationCredentials(v bool) *LakeFormationConfiguration {
	s.UseLakeFormationCredentials = &v
	return s
}

// When there are multiple versions of a blueprint and the latest version has
// some errors, this attribute indicates the last successful blueprint definition
// that is available with the service.
type LastActiveDefinition struct {
	_ struct{} `type:"structure"`

	// Specifies a path in Amazon S3 where the blueprint is published by the Glue
	// developer.
	BlueprintLocation *string `type:"string"`

	// Specifies a path in Amazon S3 where the blueprint is copied when you create
	// or update the blueprint.
	BlueprintServiceLocation *string `type:"string"`

	// The description of the blueprint.
	Description *string `min:"1" type:"string"`

	// The date and time the blueprint was last modified.
	LastModifiedOn *time.Time `type:"timestamp"`

	// A JSON string specifying the parameters for the blueprint.
	ParameterSpec *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 LastActiveDefinition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LastActiveDefinition) GoString() string {
	return s.String()
}

// SetBlueprintLocation sets the BlueprintLocation field's value.
func (s *LastActiveDefinition) SetBlueprintLocation(v string) *LastActiveDefinition {
	s.BlueprintLocation = &v
	return s
}

// SetBlueprintServiceLocation sets the BlueprintServiceLocation field's value.
func (s *LastActiveDefinition) SetBlueprintServiceLocation(v string) *LastActiveDefinition {
	s.BlueprintServiceLocation = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *LastActiveDefinition) SetDescription(v string) *LastActiveDefinition {
	s.Description = &v
	return s
}

// SetLastModifiedOn sets the LastModifiedOn field's value.
func (s *LastActiveDefinition) SetLastModifiedOn(v time.Time) *LastActiveDefinition {
	s.LastModifiedOn = &v
	return s
}

// SetParameterSpec sets the ParameterSpec field's value.
func (s *LastActiveDefinition) SetParameterSpec(v string) *LastActiveDefinition {
	s.ParameterSpec = &v
	return s
}

// Status and error information about the most recent crawl.
type LastCrawlInfo struct {
	_ struct{} `type:"structure"`

	// If an error occurred, the error information about the last crawl.
	ErrorMessage *string `type:"string"`

	// The log group for the last crawl.
	LogGroup *string `min:"1" type:"string"`

	// The log stream for the last crawl.
	LogStream *string `min:"1" type:"string"`

	// The prefix for a message about this crawl.
	MessagePrefix *string `min:"1" type:"string"`

	// The time at which the crawl started.
	StartTime *time.Time `type:"timestamp"`

	// Status of the last crawl.
	Status *string `type:"string" enum:"LastCrawlStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LastCrawlInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LastCrawlInfo) GoString() string {
	return s.String()
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *LastCrawlInfo) SetErrorMessage(v string) *LastCrawlInfo {
	s.ErrorMessage = &v
	return s
}

// SetLogGroup sets the LogGroup field's value.
func (s *LastCrawlInfo) SetLogGroup(v string) *LastCrawlInfo {
	s.LogGroup = &v
	return s
}

// SetLogStream sets the LogStream field's value.
func (s *LastCrawlInfo) SetLogStream(v string) *LastCrawlInfo {
	s.LogStream = &v
	return s
}

// SetMessagePrefix sets the MessagePrefix field's value.
func (s *LastCrawlInfo) SetMessagePrefix(v string) *LastCrawlInfo {
	s.MessagePrefix = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *LastCrawlInfo) SetStartTime(v time.Time) *LastCrawlInfo {
	s.StartTime = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *LastCrawlInfo) SetStatus(v string) *LastCrawlInfo {
	s.Status = &v
	return s
}

// Specifies data lineage configuration settings for the crawler.
type LineageConfiguration struct {
	_ struct{} `type:"structure"`

	// Specifies whether data lineage is enabled for the crawler. Valid values are:
	//
	//    * ENABLE: enables data lineage for the crawler
	//
	//    * DISABLE: disables data lineage for the crawler
	CrawlerLineageSettings *string `type:"string" enum:"CrawlerLineageSettings"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LineageConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LineageConfiguration) GoString() string {
	return s.String()
}

// SetCrawlerLineageSettings sets the CrawlerLineageSettings field's value.
func (s *LineageConfiguration) SetCrawlerLineageSettings(v string) *LineageConfiguration {
	s.CrawlerLineageSettings = &v
	return s
}

type ListBlueprintsInput struct {
	_ struct{} `type:"structure"`

	// The maximum size of a list to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation request.
	NextToken *string `type:"string"`

	// Filters the list by an Amazon Web Services resource tag.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListBlueprintsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListBlueprintsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListBlueprintsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListBlueprintsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListBlueprintsInput) SetMaxResults(v int64) *ListBlueprintsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListBlueprintsInput) SetNextToken(v string) *ListBlueprintsInput {
	s.NextToken = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ListBlueprintsInput) SetTags(v map[string]*string) *ListBlueprintsInput {
	s.Tags = v
	return s
}

type ListBlueprintsOutput struct {
	_ struct{} `type:"structure"`

	// List of names of blueprints in the account.
	Blueprints []*string `type:"list"`

	// A continuation token, if not all blueprint names have been returned.
	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 ListBlueprintsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListBlueprintsOutput) GoString() string {
	return s.String()
}

// SetBlueprints sets the Blueprints field's value.
func (s *ListBlueprintsOutput) SetBlueprints(v []*string) *ListBlueprintsOutput {
	s.Blueprints = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListBlueprintsOutput) SetNextToken(v string) *ListBlueprintsOutput {
	s.NextToken = &v
	return s
}

type ListColumnStatisticsTaskRunsInput struct {
	_ struct{} `type:"structure"`

	// The maximum size of the response.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation call.
	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 ListColumnStatisticsTaskRunsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListColumnStatisticsTaskRunsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListColumnStatisticsTaskRunsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListColumnStatisticsTaskRunsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListColumnStatisticsTaskRunsInput) SetMaxResults(v int64) *ListColumnStatisticsTaskRunsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListColumnStatisticsTaskRunsInput) SetNextToken(v string) *ListColumnStatisticsTaskRunsInput {
	s.NextToken = &v
	return s
}

type ListColumnStatisticsTaskRunsOutput struct {
	_ struct{} `type:"structure"`

	// A list of column statistics task run IDs.
	ColumnStatisticsTaskRunIds []*string `type:"list"`

	// A continuation token, if not all task run IDs have yet been returned.
	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 ListColumnStatisticsTaskRunsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListColumnStatisticsTaskRunsOutput) GoString() string {
	return s.String()
}

// SetColumnStatisticsTaskRunIds sets the ColumnStatisticsTaskRunIds field's value.
func (s *ListColumnStatisticsTaskRunsOutput) SetColumnStatisticsTaskRunIds(v []*string) *ListColumnStatisticsTaskRunsOutput {
	s.ColumnStatisticsTaskRunIds = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListColumnStatisticsTaskRunsOutput) SetNextToken(v string) *ListColumnStatisticsTaskRunsOutput {
	s.NextToken = &v
	return s
}

type ListCrawlersInput struct {
	_ struct{} `type:"structure"`

	// The maximum size of a list to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation request.
	NextToken *string `type:"string"`

	// Specifies to return only these tagged resources.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListCrawlersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListCrawlersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListCrawlersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListCrawlersInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListCrawlersInput) SetMaxResults(v int64) *ListCrawlersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListCrawlersInput) SetNextToken(v string) *ListCrawlersInput {
	s.NextToken = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ListCrawlersInput) SetTags(v map[string]*string) *ListCrawlersInput {
	s.Tags = v
	return s
}

type ListCrawlersOutput struct {
	_ struct{} `type:"structure"`

	// The names of all crawlers in the account, or the crawlers with the specified
	// tags.
	CrawlerNames []*string `type:"list"`

	// A continuation token, if the returned list does not contain the last metric
	// available.
	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 ListCrawlersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListCrawlersOutput) GoString() string {
	return s.String()
}

// SetCrawlerNames sets the CrawlerNames field's value.
func (s *ListCrawlersOutput) SetCrawlerNames(v []*string) *ListCrawlersOutput {
	s.CrawlerNames = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListCrawlersOutput) SetNextToken(v string) *ListCrawlersOutput {
	s.NextToken = &v
	return s
}

type ListCrawlsInput struct {
	_ struct{} `type:"structure"`

	// The name of the crawler whose runs you want to retrieve.
	//
	// CrawlerName is a required field
	CrawlerName *string `min:"1" type:"string" required:"true"`

	// Filters the crawls by the criteria you specify in a list of CrawlsFilter
	// objects.
	Filters []*CrawlsFilter `type:"list"`

	// The maximum number of results to return. The default is 20, and maximum is
	// 100.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation call.
	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 ListCrawlsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListCrawlsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListCrawlsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListCrawlsInput"}
	if s.CrawlerName == nil {
		invalidParams.Add(request.NewErrParamRequired("CrawlerName"))
	}
	if s.CrawlerName != nil && len(*s.CrawlerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CrawlerName", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCrawlerName sets the CrawlerName field's value.
func (s *ListCrawlsInput) SetCrawlerName(v string) *ListCrawlsInput {
	s.CrawlerName = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *ListCrawlsInput) SetFilters(v []*CrawlsFilter) *ListCrawlsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListCrawlsInput) SetMaxResults(v int64) *ListCrawlsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListCrawlsInput) SetNextToken(v string) *ListCrawlsInput {
	s.NextToken = &v
	return s
}

type ListCrawlsOutput struct {
	_ struct{} `type:"structure"`

	// A list of CrawlerHistory objects representing the crawl runs that meet your
	// criteria.
	Crawls []*CrawlerHistory `type:"list"`

	// A continuation token for paginating the returned list of tokens, returned
	// if the current segment of the list is not the last.
	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 ListCrawlsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListCrawlsOutput) GoString() string {
	return s.String()
}

// SetCrawls sets the Crawls field's value.
func (s *ListCrawlsOutput) SetCrawls(v []*CrawlerHistory) *ListCrawlsOutput {
	s.Crawls = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListCrawlsOutput) SetNextToken(v string) *ListCrawlsOutput {
	s.NextToken = &v
	return s
}

type ListCustomEntityTypesInput struct {
	_ struct{} `type:"structure"`

	// The maximum number of results to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A paginated token to offset the results.
	NextToken *string `type:"string"`

	// A list of key-value pair tags.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListCustomEntityTypesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListCustomEntityTypesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListCustomEntityTypesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListCustomEntityTypesInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListCustomEntityTypesInput) SetMaxResults(v int64) *ListCustomEntityTypesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListCustomEntityTypesInput) SetNextToken(v string) *ListCustomEntityTypesInput {
	s.NextToken = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ListCustomEntityTypesInput) SetTags(v map[string]*string) *ListCustomEntityTypesInput {
	s.Tags = v
	return s
}

type ListCustomEntityTypesOutput struct {
	_ struct{} `type:"structure"`

	// A list of CustomEntityType objects representing custom patterns.
	CustomEntityTypes []*CustomEntityType `type:"list"`

	// A pagination token, if more results are available.
	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 ListCustomEntityTypesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListCustomEntityTypesOutput) GoString() string {
	return s.String()
}

// SetCustomEntityTypes sets the CustomEntityTypes field's value.
func (s *ListCustomEntityTypesOutput) SetCustomEntityTypes(v []*CustomEntityType) *ListCustomEntityTypesOutput {
	s.CustomEntityTypes = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListCustomEntityTypesOutput) SetNextToken(v string) *ListCustomEntityTypesOutput {
	s.NextToken = &v
	return s
}

type ListDataQualityResultsInput struct {
	_ struct{} `type:"structure"`

	// The filter criteria.
	Filter *DataQualityResultFilterCriteria `type:"structure"`

	// The maximum number of results to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A paginated token to offset the 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 ListDataQualityResultsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataQualityResultsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDataQualityResultsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDataQualityResultsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filter != nil {
		if err := s.Filter.Validate(); err != nil {
			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilter sets the Filter field's value.
func (s *ListDataQualityResultsInput) SetFilter(v *DataQualityResultFilterCriteria) *ListDataQualityResultsInput {
	s.Filter = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDataQualityResultsInput) SetMaxResults(v int64) *ListDataQualityResultsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataQualityResultsInput) SetNextToken(v string) *ListDataQualityResultsInput {
	s.NextToken = &v
	return s
}

type ListDataQualityResultsOutput struct {
	_ struct{} `type:"structure"`

	// A pagination token, if more results are available.
	NextToken *string `type:"string"`

	// A list of DataQualityResultDescription objects.
	//
	// Results is a required field
	Results []*DataQualityResultDescription `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 ListDataQualityResultsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataQualityResultsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataQualityResultsOutput) SetNextToken(v string) *ListDataQualityResultsOutput {
	s.NextToken = &v
	return s
}

// SetResults sets the Results field's value.
func (s *ListDataQualityResultsOutput) SetResults(v []*DataQualityResultDescription) *ListDataQualityResultsOutput {
	s.Results = v
	return s
}

type ListDataQualityRuleRecommendationRunsInput struct {
	_ struct{} `type:"structure"`

	// The filter criteria.
	Filter *DataQualityRuleRecommendationRunFilter `type:"structure"`

	// The maximum number of results to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A paginated token to offset the 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 ListDataQualityRuleRecommendationRunsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataQualityRuleRecommendationRunsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDataQualityRuleRecommendationRunsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDataQualityRuleRecommendationRunsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filter != nil {
		if err := s.Filter.Validate(); err != nil {
			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilter sets the Filter field's value.
func (s *ListDataQualityRuleRecommendationRunsInput) SetFilter(v *DataQualityRuleRecommendationRunFilter) *ListDataQualityRuleRecommendationRunsInput {
	s.Filter = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDataQualityRuleRecommendationRunsInput) SetMaxResults(v int64) *ListDataQualityRuleRecommendationRunsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataQualityRuleRecommendationRunsInput) SetNextToken(v string) *ListDataQualityRuleRecommendationRunsInput {
	s.NextToken = &v
	return s
}

type ListDataQualityRuleRecommendationRunsOutput struct {
	_ struct{} `type:"structure"`

	// A pagination token, if more results are available.
	NextToken *string `type:"string"`

	// A list of DataQualityRuleRecommendationRunDescription objects.
	Runs []*DataQualityRuleRecommendationRunDescription `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 ListDataQualityRuleRecommendationRunsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataQualityRuleRecommendationRunsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataQualityRuleRecommendationRunsOutput) SetNextToken(v string) *ListDataQualityRuleRecommendationRunsOutput {
	s.NextToken = &v
	return s
}

// SetRuns sets the Runs field's value.
func (s *ListDataQualityRuleRecommendationRunsOutput) SetRuns(v []*DataQualityRuleRecommendationRunDescription) *ListDataQualityRuleRecommendationRunsOutput {
	s.Runs = v
	return s
}

type ListDataQualityRulesetEvaluationRunsInput struct {
	_ struct{} `type:"structure"`

	// The filter criteria.
	Filter *DataQualityRulesetEvaluationRunFilter `type:"structure"`

	// The maximum number of results to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A paginated token to offset the 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 ListDataQualityRulesetEvaluationRunsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataQualityRulesetEvaluationRunsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDataQualityRulesetEvaluationRunsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDataQualityRulesetEvaluationRunsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filter != nil {
		if err := s.Filter.Validate(); err != nil {
			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilter sets the Filter field's value.
func (s *ListDataQualityRulesetEvaluationRunsInput) SetFilter(v *DataQualityRulesetEvaluationRunFilter) *ListDataQualityRulesetEvaluationRunsInput {
	s.Filter = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDataQualityRulesetEvaluationRunsInput) SetMaxResults(v int64) *ListDataQualityRulesetEvaluationRunsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataQualityRulesetEvaluationRunsInput) SetNextToken(v string) *ListDataQualityRulesetEvaluationRunsInput {
	s.NextToken = &v
	return s
}

type ListDataQualityRulesetEvaluationRunsOutput struct {
	_ struct{} `type:"structure"`

	// A pagination token, if more results are available.
	NextToken *string `type:"string"`

	// A list of DataQualityRulesetEvaluationRunDescription objects representing
	// data quality ruleset runs.
	Runs []*DataQualityRulesetEvaluationRunDescription `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 ListDataQualityRulesetEvaluationRunsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataQualityRulesetEvaluationRunsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataQualityRulesetEvaluationRunsOutput) SetNextToken(v string) *ListDataQualityRulesetEvaluationRunsOutput {
	s.NextToken = &v
	return s
}

// SetRuns sets the Runs field's value.
func (s *ListDataQualityRulesetEvaluationRunsOutput) SetRuns(v []*DataQualityRulesetEvaluationRunDescription) *ListDataQualityRulesetEvaluationRunsOutput {
	s.Runs = v
	return s
}

type ListDataQualityRulesetsInput struct {
	_ struct{} `type:"structure"`

	// The filter criteria.
	Filter *DataQualityRulesetFilterCriteria `type:"structure"`

	// The maximum number of results to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A paginated token to offset the results.
	NextToken *string `type:"string"`

	// A list of key-value pair tags.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataQualityRulesetsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataQualityRulesetsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDataQualityRulesetsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDataQualityRulesetsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filter != nil {
		if err := s.Filter.Validate(); err != nil {
			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilter sets the Filter field's value.
func (s *ListDataQualityRulesetsInput) SetFilter(v *DataQualityRulesetFilterCriteria) *ListDataQualityRulesetsInput {
	s.Filter = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDataQualityRulesetsInput) SetMaxResults(v int64) *ListDataQualityRulesetsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataQualityRulesetsInput) SetNextToken(v string) *ListDataQualityRulesetsInput {
	s.NextToken = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ListDataQualityRulesetsInput) SetTags(v map[string]*string) *ListDataQualityRulesetsInput {
	s.Tags = v
	return s
}

type ListDataQualityRulesetsOutput struct {
	_ struct{} `type:"structure"`

	// A pagination token, if more results are available.
	NextToken *string `type:"string"`

	// A paginated list of rulesets for the specified list of Glue tables.
	Rulesets []*DataQualityRulesetListDetails `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 ListDataQualityRulesetsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataQualityRulesetsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataQualityRulesetsOutput) SetNextToken(v string) *ListDataQualityRulesetsOutput {
	s.NextToken = &v
	return s
}

// SetRulesets sets the Rulesets field's value.
func (s *ListDataQualityRulesetsOutput) SetRulesets(v []*DataQualityRulesetListDetails) *ListDataQualityRulesetsOutput {
	s.Rulesets = v
	return s
}

type ListDevEndpointsInput struct {
	_ struct{} `type:"structure"`

	// The maximum size of a list to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation request.
	NextToken *string `type:"string"`

	// Specifies to return only these tagged resources.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDevEndpointsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDevEndpointsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDevEndpointsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDevEndpointsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDevEndpointsInput) SetMaxResults(v int64) *ListDevEndpointsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDevEndpointsInput) SetNextToken(v string) *ListDevEndpointsInput {
	s.NextToken = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ListDevEndpointsInput) SetTags(v map[string]*string) *ListDevEndpointsInput {
	s.Tags = v
	return s
}

type ListDevEndpointsOutput struct {
	_ struct{} `type:"structure"`

	// The names of all the DevEndpoints in the account, or the DevEndpoints with
	// the specified tags.
	DevEndpointNames []*string `type:"list"`

	// A continuation token, if the returned list does not contain the last metric
	// available.
	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 ListDevEndpointsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDevEndpointsOutput) GoString() string {
	return s.String()
}

// SetDevEndpointNames sets the DevEndpointNames field's value.
func (s *ListDevEndpointsOutput) SetDevEndpointNames(v []*string) *ListDevEndpointsOutput {
	s.DevEndpointNames = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDevEndpointsOutput) SetNextToken(v string) *ListDevEndpointsOutput {
	s.NextToken = &v
	return s
}

type ListJobsInput struct {
	_ struct{} `type:"structure"`

	// The maximum size of a list to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation request.
	NextToken *string `type:"string"`

	// Specifies to return only these tagged resources.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListJobsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListJobsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListJobsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListJobsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListJobsInput) SetMaxResults(v int64) *ListJobsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListJobsInput) SetNextToken(v string) *ListJobsInput {
	s.NextToken = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ListJobsInput) SetTags(v map[string]*string) *ListJobsInput {
	s.Tags = v
	return s
}

type ListJobsOutput struct {
	_ struct{} `type:"structure"`

	// The names of all jobs in the account, or the jobs with the specified tags.
	JobNames []*string `type:"list"`

	// A continuation token, if the returned list does not contain the last metric
	// available.
	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 ListJobsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListJobsOutput) GoString() string {
	return s.String()
}

// SetJobNames sets the JobNames field's value.
func (s *ListJobsOutput) SetJobNames(v []*string) *ListJobsOutput {
	s.JobNames = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListJobsOutput) SetNextToken(v string) *ListJobsOutput {
	s.NextToken = &v
	return s
}

type ListMLTransformsInput struct {
	_ struct{} `type:"structure"`

	// A TransformFilterCriteria used to filter the machine learning transforms.
	Filter *TransformFilterCriteria `type:"structure"`

	// The maximum size of a list to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation request.
	NextToken *string `type:"string"`

	// A TransformSortCriteria used to sort the machine learning transforms.
	Sort *TransformSortCriteria `type:"structure"`

	// Specifies to return only these tagged resources.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListMLTransformsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListMLTransformsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListMLTransformsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListMLTransformsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filter != nil {
		if err := s.Filter.Validate(); err != nil {
			invalidParams.AddNested("Filter", 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
}

// SetFilter sets the Filter field's value.
func (s *ListMLTransformsInput) SetFilter(v *TransformFilterCriteria) *ListMLTransformsInput {
	s.Filter = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListMLTransformsInput) SetMaxResults(v int64) *ListMLTransformsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListMLTransformsInput) SetNextToken(v string) *ListMLTransformsInput {
	s.NextToken = &v
	return s
}

// SetSort sets the Sort field's value.
func (s *ListMLTransformsInput) SetSort(v *TransformSortCriteria) *ListMLTransformsInput {
	s.Sort = v
	return s
}

// SetTags sets the Tags field's value.
func (s *ListMLTransformsInput) SetTags(v map[string]*string) *ListMLTransformsInput {
	s.Tags = v
	return s
}

type ListMLTransformsOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token, if the returned list does not contain the last metric
	// available.
	NextToken *string `type:"string"`

	// The identifiers of all the machine learning transforms in the account, or
	// the machine learning transforms with the specified tags.
	//
	// TransformIds is a required field
	TransformIds []*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 ListMLTransformsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListMLTransformsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListMLTransformsOutput) SetNextToken(v string) *ListMLTransformsOutput {
	s.NextToken = &v
	return s
}

// SetTransformIds sets the TransformIds field's value.
func (s *ListMLTransformsOutput) SetTransformIds(v []*string) *ListMLTransformsOutput {
	s.TransformIds = v
	return s
}

type ListRegistriesInput struct {
	_ struct{} `type:"structure"`

	// Maximum number of results required per page. If the value is not supplied,
	// this will be defaulted to 25 per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation call.
	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 ListRegistriesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListRegistriesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListRegistriesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListRegistriesInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListRegistriesInput) SetMaxResults(v int64) *ListRegistriesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListRegistriesInput) SetNextToken(v string) *ListRegistriesInput {
	s.NextToken = &v
	return s
}

type ListRegistriesOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token for paginating the returned list of tokens, returned
	// if the current segment of the list is not the last.
	NextToken *string `type:"string"`

	// An array of RegistryDetailedListItem objects containing minimal details of
	// each registry.
	Registries []*RegistryListItem `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 ListRegistriesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListRegistriesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListRegistriesOutput) SetNextToken(v string) *ListRegistriesOutput {
	s.NextToken = &v
	return s
}

// SetRegistries sets the Registries field's value.
func (s *ListRegistriesOutput) SetRegistries(v []*RegistryListItem) *ListRegistriesOutput {
	s.Registries = v
	return s
}

type ListSchemaVersionsInput struct {
	_ struct{} `type:"structure"`

	// Maximum number of results required per page. If the value is not supplied,
	// this will be defaulted to 25 per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation call.
	NextToken *string `type:"string"`

	// This is a wrapper structure to contain schema identity fields. The structure
	// contains:
	//
	//    * SchemaId$SchemaArn: The Amazon Resource Name (ARN) of the schema. Either
	//    SchemaArn or SchemaName and RegistryName has to be provided.
	//
	//    * SchemaId$SchemaName: The name of the schema. Either SchemaArn or SchemaName
	//    and RegistryName has to be provided.
	//
	// SchemaId is a required field
	SchemaId *SchemaId `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 ListSchemaVersionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSchemaVersionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListSchemaVersionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListSchemaVersionsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.SchemaId == nil {
		invalidParams.Add(request.NewErrParamRequired("SchemaId"))
	}
	if s.SchemaId != nil {
		if err := s.SchemaId.Validate(); err != nil {
			invalidParams.AddNested("SchemaId", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListSchemaVersionsInput) SetMaxResults(v int64) *ListSchemaVersionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSchemaVersionsInput) SetNextToken(v string) *ListSchemaVersionsInput {
	s.NextToken = &v
	return s
}

// SetSchemaId sets the SchemaId field's value.
func (s *ListSchemaVersionsInput) SetSchemaId(v *SchemaId) *ListSchemaVersionsInput {
	s.SchemaId = v
	return s
}

type ListSchemaVersionsOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token for paginating the returned list of tokens, returned
	// if the current segment of the list is not the last.
	NextToken *string `type:"string"`

	// An array of SchemaVersionList objects containing details of each schema version.
	Schemas []*SchemaVersionListItem `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 ListSchemaVersionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSchemaVersionsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListSchemaVersionsOutput) SetNextToken(v string) *ListSchemaVersionsOutput {
	s.NextToken = &v
	return s
}

// SetSchemas sets the Schemas field's value.
func (s *ListSchemaVersionsOutput) SetSchemas(v []*SchemaVersionListItem) *ListSchemaVersionsOutput {
	s.Schemas = v
	return s
}

type ListSchemasInput struct {
	_ struct{} `type:"structure"`

	// Maximum number of results required per page. If the value is not supplied,
	// this will be defaulted to 25 per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation call.
	NextToken *string `type:"string"`

	// A wrapper structure that may contain the registry name and Amazon Resource
	// Name (ARN).
	RegistryId *RegistryId `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSchemasInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSchemasInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListSchemasInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListSchemasInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.RegistryId != nil {
		if err := s.RegistryId.Validate(); err != nil {
			invalidParams.AddNested("RegistryId", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListSchemasInput) SetMaxResults(v int64) *ListSchemasInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSchemasInput) SetNextToken(v string) *ListSchemasInput {
	s.NextToken = &v
	return s
}

// SetRegistryId sets the RegistryId field's value.
func (s *ListSchemasInput) SetRegistryId(v *RegistryId) *ListSchemasInput {
	s.RegistryId = v
	return s
}

type ListSchemasOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token for paginating the returned list of tokens, returned
	// if the current segment of the list is not the last.
	NextToken *string `type:"string"`

	// An array of SchemaListItem objects containing details of each schema.
	Schemas []*SchemaListItem `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 ListSchemasOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSchemasOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListSchemasOutput) SetNextToken(v string) *ListSchemasOutput {
	s.NextToken = &v
	return s
}

// SetSchemas sets the Schemas field's value.
func (s *ListSchemasOutput) SetSchemas(v []*SchemaListItem) *ListSchemasOutput {
	s.Schemas = v
	return s
}

type ListSessionsInput struct {
	_ struct{} `type:"structure"`

	// The maximum number of results.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next set of results, or null if there are no more result.
	NextToken *string `type:"string"`

	// The origin of the request.
	RequestOrigin *string `min:"1" type:"string"`

	// Tags belonging to the session.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSessionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSessionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListSessionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListSessionsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.RequestOrigin != nil && len(*s.RequestOrigin) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RequestOrigin", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListSessionsInput) SetMaxResults(v int64) *ListSessionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSessionsInput) SetNextToken(v string) *ListSessionsInput {
	s.NextToken = &v
	return s
}

// SetRequestOrigin sets the RequestOrigin field's value.
func (s *ListSessionsInput) SetRequestOrigin(v string) *ListSessionsInput {
	s.RequestOrigin = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ListSessionsInput) SetTags(v map[string]*string) *ListSessionsInput {
	s.Tags = v
	return s
}

type ListSessionsOutput struct {
	_ struct{} `type:"structure"`

	// Returns the ID of the session.
	Ids []*string `type:"list"`

	// The token for the next set of results, or null if there are no more result.
	NextToken *string `type:"string"`

	// Returns the session object.
	Sessions []*Session `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 ListSessionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSessionsOutput) GoString() string {
	return s.String()
}

// SetIds sets the Ids field's value.
func (s *ListSessionsOutput) SetIds(v []*string) *ListSessionsOutput {
	s.Ids = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSessionsOutput) SetNextToken(v string) *ListSessionsOutput {
	s.NextToken = &v
	return s
}

// SetSessions sets the Sessions field's value.
func (s *ListSessionsOutput) SetSessions(v []*Session) *ListSessionsOutput {
	s.Sessions = v
	return s
}

type ListStatementsInput struct {
	_ struct{} `type:"structure"`

	// A continuation token, if this is a continuation call.
	NextToken *string `type:"string"`

	// The origin of the request to list statements.
	RequestOrigin *string `min:"1" type:"string"`

	// The Session ID of the statements.
	//
	// SessionId is a required field
	SessionId *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 ListStatementsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListStatementsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListStatementsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListStatementsInput"}
	if s.RequestOrigin != nil && len(*s.RequestOrigin) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RequestOrigin", 1))
	}
	if s.SessionId == nil {
		invalidParams.Add(request.NewErrParamRequired("SessionId"))
	}
	if s.SessionId != nil && len(*s.SessionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SessionId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetNextToken sets the NextToken field's value.
func (s *ListStatementsInput) SetNextToken(v string) *ListStatementsInput {
	s.NextToken = &v
	return s
}

// SetRequestOrigin sets the RequestOrigin field's value.
func (s *ListStatementsInput) SetRequestOrigin(v string) *ListStatementsInput {
	s.RequestOrigin = &v
	return s
}

// SetSessionId sets the SessionId field's value.
func (s *ListStatementsInput) SetSessionId(v string) *ListStatementsInput {
	s.SessionId = &v
	return s
}

type ListStatementsOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token, if not all statements have yet been returned.
	NextToken *string `type:"string"`

	// Returns the list of statements.
	Statements []*Statement `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 ListStatementsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListStatementsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListStatementsOutput) SetNextToken(v string) *ListStatementsOutput {
	s.NextToken = &v
	return s
}

// SetStatements sets the Statements field's value.
func (s *ListStatementsOutput) SetStatements(v []*Statement) *ListStatementsOutput {
	s.Statements = v
	return s
}

type ListTableOptimizerRunsInput struct {
	_ struct{} `type:"structure"`

	// The Catalog ID of the table.
	//
	// CatalogId is a required field
	CatalogId *string `min:"1" type:"string" required:"true"`

	// The name of the database in the catalog in which the table resides.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The maximum number of optimizer runs to return on each call.
	MaxResults *int64 `type:"integer"`

	// A continuation token, if this is a continuation call.
	NextToken *string `type:"string"`

	// The name of the table.
	//
	// TableName is a required field
	TableName *string `min:"1" type:"string" required:"true"`

	// The type of table optimizer. Currently, the only valid value is compaction.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"TableOptimizerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTableOptimizerRunsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTableOptimizerRunsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTableOptimizerRunsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListTableOptimizerRunsInput"}
	if s.CatalogId == nil {
		invalidParams.Add(request.NewErrParamRequired("CatalogId"))
	}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *ListTableOptimizerRunsInput) SetCatalogId(v string) *ListTableOptimizerRunsInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *ListTableOptimizerRunsInput) SetDatabaseName(v string) *ListTableOptimizerRunsInput {
	s.DatabaseName = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListTableOptimizerRunsInput) SetMaxResults(v int64) *ListTableOptimizerRunsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListTableOptimizerRunsInput) SetNextToken(v string) *ListTableOptimizerRunsInput {
	s.NextToken = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *ListTableOptimizerRunsInput) SetTableName(v string) *ListTableOptimizerRunsInput {
	s.TableName = &v
	return s
}

// SetType sets the Type field's value.
func (s *ListTableOptimizerRunsInput) SetType(v string) *ListTableOptimizerRunsInput {
	s.Type = &v
	return s
}

type ListTableOptimizerRunsOutput struct {
	_ struct{} `type:"structure"`

	// The Catalog ID of the table.
	CatalogId *string `min:"1" type:"string"`

	// The name of the database in the catalog in which the table resides.
	DatabaseName *string `min:"1" type:"string"`

	// A continuation token for paginating the returned list of optimizer runs,
	// returned if the current segment of the list is not the last.
	NextToken *string `type:"string"`

	// The name of the table.
	TableName *string `min:"1" type:"string"`

	// A list of the optimizer runs associated with a table.
	TableOptimizerRuns []*TableOptimizerRun `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 ListTableOptimizerRunsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTableOptimizerRunsOutput) GoString() string {
	return s.String()
}

// SetCatalogId sets the CatalogId field's value.
func (s *ListTableOptimizerRunsOutput) SetCatalogId(v string) *ListTableOptimizerRunsOutput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *ListTableOptimizerRunsOutput) SetDatabaseName(v string) *ListTableOptimizerRunsOutput {
	s.DatabaseName = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListTableOptimizerRunsOutput) SetNextToken(v string) *ListTableOptimizerRunsOutput {
	s.NextToken = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *ListTableOptimizerRunsOutput) SetTableName(v string) *ListTableOptimizerRunsOutput {
	s.TableName = &v
	return s
}

// SetTableOptimizerRuns sets the TableOptimizerRuns field's value.
func (s *ListTableOptimizerRunsOutput) SetTableOptimizerRuns(v []*TableOptimizerRun) *ListTableOptimizerRunsOutput {
	s.TableOptimizerRuns = v
	return s
}

type ListTriggersInput struct {
	_ struct{} `type:"structure"`

	// The name of the job for which to retrieve triggers. The trigger that can
	// start this job is returned. If there is no such trigger, all triggers are
	// returned.
	DependentJobName *string `min:"1" type:"string"`

	// The maximum size of a list to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation request.
	NextToken *string `type:"string"`

	// Specifies to return only these tagged resources.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTriggersInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTriggersInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTriggersInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListTriggersInput"}
	if s.DependentJobName != nil && len(*s.DependentJobName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DependentJobName", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDependentJobName sets the DependentJobName field's value.
func (s *ListTriggersInput) SetDependentJobName(v string) *ListTriggersInput {
	s.DependentJobName = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListTriggersInput) SetMaxResults(v int64) *ListTriggersInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListTriggersInput) SetNextToken(v string) *ListTriggersInput {
	s.NextToken = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ListTriggersInput) SetTags(v map[string]*string) *ListTriggersInput {
	s.Tags = v
	return s
}

type ListTriggersOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token, if the returned list does not contain the last metric
	// available.
	NextToken *string `type:"string"`

	// The names of all triggers in the account, or the triggers with the specified
	// tags.
	TriggerNames []*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 ListTriggersOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTriggersOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListTriggersOutput) SetNextToken(v string) *ListTriggersOutput {
	s.NextToken = &v
	return s
}

// SetTriggerNames sets the TriggerNames field's value.
func (s *ListTriggersOutput) SetTriggerNames(v []*string) *ListTriggersOutput {
	s.TriggerNames = v
	return s
}

type ListUsageProfilesInput struct {
	_ struct{} `type:"structure"`

	// The maximum number of usage profiles to return in a single response.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, included if this is a continuation call.
	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 ListUsageProfilesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListUsageProfilesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListUsageProfilesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListUsageProfilesInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListUsageProfilesInput) SetMaxResults(v int64) *ListUsageProfilesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListUsageProfilesInput) SetNextToken(v string) *ListUsageProfilesInput {
	s.NextToken = &v
	return s
}

type ListUsageProfilesOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token, present if the current list segment is not the last.
	NextToken *string `type:"string"`

	// A list of usage profile (UsageProfileDefinition) objects.
	Profiles []*UsageProfileDefinition `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 ListUsageProfilesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListUsageProfilesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListUsageProfilesOutput) SetNextToken(v string) *ListUsageProfilesOutput {
	s.NextToken = &v
	return s
}

// SetProfiles sets the Profiles field's value.
func (s *ListUsageProfilesOutput) SetProfiles(v []*UsageProfileDefinition) *ListUsageProfilesOutput {
	s.Profiles = v
	return s
}

type ListWorkflowsInput struct {
	_ struct{} `type:"structure"`

	// The maximum size of a list to return.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, if this is a continuation 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 ListWorkflowsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListWorkflowsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListWorkflowsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListWorkflowsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListWorkflowsInput) SetMaxResults(v int64) *ListWorkflowsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListWorkflowsInput) SetNextToken(v string) *ListWorkflowsInput {
	s.NextToken = &v
	return s
}

type ListWorkflowsOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token, if not all workflow names have been returned.
	NextToken *string `type:"string"`

	// List of names of workflows in the account.
	Workflows []*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 ListWorkflowsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListWorkflowsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListWorkflowsOutput) SetNextToken(v string) *ListWorkflowsOutput {
	s.NextToken = &v
	return s
}

// SetWorkflows sets the Workflows field's value.
func (s *ListWorkflowsOutput) SetWorkflows(v []*string) *ListWorkflowsOutput {
	s.Workflows = v
	return s
}

// The location of resources.
type Location struct {
	_ struct{} `type:"structure"`

	// An Amazon DynamoDB table location.
	DynamoDB []*CodeGenNodeArg `type:"list"`

	// A JDBC location.
	Jdbc []*CodeGenNodeArg `type:"list"`

	// An Amazon Simple Storage Service (Amazon S3) location.
	S3 []*CodeGenNodeArg `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 Location) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Location) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Location) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Location"}
	if s.DynamoDB != nil {
		for i, v := range s.DynamoDB {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DynamoDB", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Jdbc != nil {
		for i, v := range s.Jdbc {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Jdbc", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.S3 != nil {
		for i, v := range s.S3 {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "S3", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDynamoDB sets the DynamoDB field's value.
func (s *Location) SetDynamoDB(v []*CodeGenNodeArg) *Location {
	s.DynamoDB = v
	return s
}

// SetJdbc sets the Jdbc field's value.
func (s *Location) SetJdbc(v []*CodeGenNodeArg) *Location {
	s.Jdbc = v
	return s
}

// SetS3 sets the S3 field's value.
func (s *Location) SetS3(v []*CodeGenNodeArg) *Location {
	s.S3 = v
	return s
}

// Defines column statistics supported for integer data columns.
type LongColumnStatisticsData struct {
	_ struct{} `type:"structure"`

	// The highest value in the column.
	MaximumValue *int64 `type:"long"`

	// The lowest value in the column.
	MinimumValue *int64 `type:"long"`

	// The number of distinct values in a column.
	//
	// NumberOfDistinctValues is a required field
	NumberOfDistinctValues *int64 `type:"long" required:"true"`

	// The number of null values in the column.
	//
	// NumberOfNulls is a required field
	NumberOfNulls *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 LongColumnStatisticsData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s LongColumnStatisticsData) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *LongColumnStatisticsData) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "LongColumnStatisticsData"}
	if s.NumberOfDistinctValues == nil {
		invalidParams.Add(request.NewErrParamRequired("NumberOfDistinctValues"))
	}
	if s.NumberOfNulls == nil {
		invalidParams.Add(request.NewErrParamRequired("NumberOfNulls"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaximumValue sets the MaximumValue field's value.
func (s *LongColumnStatisticsData) SetMaximumValue(v int64) *LongColumnStatisticsData {
	s.MaximumValue = &v
	return s
}

// SetMinimumValue sets the MinimumValue field's value.
func (s *LongColumnStatisticsData) SetMinimumValue(v int64) *LongColumnStatisticsData {
	s.MinimumValue = &v
	return s
}

// SetNumberOfDistinctValues sets the NumberOfDistinctValues field's value.
func (s *LongColumnStatisticsData) SetNumberOfDistinctValues(v int64) *LongColumnStatisticsData {
	s.NumberOfDistinctValues = &v
	return s
}

// SetNumberOfNulls sets the NumberOfNulls field's value.
func (s *LongColumnStatisticsData) SetNumberOfNulls(v int64) *LongColumnStatisticsData {
	s.NumberOfNulls = &v
	return s
}

// A structure for a machine learning transform.
type MLTransform struct {
	_ struct{} `type:"structure"`

	// A timestamp. The time and date that this machine learning transform was created.
	CreatedOn *time.Time `type:"timestamp"`

	// A user-defined, long-form description text for the machine learning transform.
	// Descriptions are not guaranteed to be unique and can be changed at any time.
	Description *string `type:"string"`

	// An EvaluationMetrics object. Evaluation metrics provide an estimate of the
	// quality of your machine learning transform.
	EvaluationMetrics *EvaluationMetrics `type:"structure"`

	// This value determines which version of Glue this machine learning transform
	// is compatible with. Glue 1.0 is recommended for most customers. If the value
	// is not set, the Glue compatibility defaults to Glue 0.9. For more information,
	// see Glue Versions (https://docs.aws.amazon.com/glue/latest/dg/release-notes.html#release-notes-versions)
	// in the developer guide.
	GlueVersion *string `min:"1" type:"string"`

	// A list of Glue table definitions used by the transform.
	InputRecordTables []*Table `type:"list"`

	// A count identifier for the labeling files generated by Glue for this transform.
	// As you create a better transform, you can iteratively download, label, and
	// upload the labeling file.
	LabelCount *int64 `type:"integer"`

	// A timestamp. The last point in time when this machine learning transform
	// was modified.
	LastModifiedOn *time.Time `type:"timestamp"`

	// The number of Glue data processing units (DPUs) that are allocated to task
	// runs for this transform. You can allocate from 2 to 100 DPUs; the default
	// is 10. A DPU is a relative measure of processing power that consists of 4
	// vCPUs of compute capacity and 16 GB of memory. For more information, see
	// the Glue pricing page (http://aws.amazon.com/glue/pricing/).
	//
	// MaxCapacity is a mutually exclusive option with NumberOfWorkers and WorkerType.
	//
	//    * If either NumberOfWorkers or WorkerType is set, then MaxCapacity cannot
	//    be set.
	//
	//    * If MaxCapacity is set then neither NumberOfWorkers or WorkerType can
	//    be set.
	//
	//    * If WorkerType is set, then NumberOfWorkers is required (and vice versa).
	//
	//    * MaxCapacity and NumberOfWorkers must both be at least 1.
	//
	// When the WorkerType field is set to a value other than Standard, the MaxCapacity
	// field is set automatically and becomes read-only.
	MaxCapacity *float64 `type:"double"`

	// The maximum number of times to retry after an MLTaskRun of the machine learning
	// transform fails.
	MaxRetries *int64 `type:"integer"`

	// A user-defined name for the machine learning transform. Names are not guaranteed
	// unique and can be changed at any time.
	Name *string `min:"1" type:"string"`

	// The number of workers of a defined workerType that are allocated when a task
	// of the transform runs.
	//
	// If WorkerType is set, then NumberOfWorkers is required (and vice versa).
	NumberOfWorkers *int64 `type:"integer"`

	// A TransformParameters object. You can use parameters to tune (customize)
	// the behavior of the machine learning transform by specifying what data it
	// learns from and your preference on various tradeoffs (such as precious vs.
	// recall, or accuracy vs. cost).
	Parameters *TransformParameters `type:"structure"`

	// The name or Amazon Resource Name (ARN) of the IAM role with the required
	// permissions. The required permissions include both Glue service role permissions
	// to Glue resources, and Amazon S3 permissions required by the transform.
	//
	//    * This role needs Glue service role permissions to allow access to resources
	//    in Glue. See Attach a Policy to IAM Users That Access Glue (https://docs.aws.amazon.com/glue/latest/dg/attach-policy-iam-user.html).
	//
	//    * This role needs permission to your Amazon Simple Storage Service (Amazon
	//    S3) sources, targets, temporary directory, scripts, and any libraries
	//    used by the task run for this transform.
	Role *string `type:"string"`

	// A map of key-value pairs representing the columns and data types that this
	// transform can run against. Has an upper bound of 100 columns.
	Schema []*SchemaColumn `type:"list"`

	// The current status of the machine learning transform.
	Status *string `type:"string" enum:"TransformStatusType"`

	// The timeout in minutes of the machine learning transform.
	Timeout *int64 `min:"1" type:"integer"`

	// The encryption-at-rest settings of the transform that apply to accessing
	// user data. Machine learning transforms can access user data encrypted in
	// Amazon S3 using KMS.
	TransformEncryption *TransformEncryption `type:"structure"`

	// The unique transform ID that is generated for the machine learning transform.
	// The ID is guaranteed to be unique and does not change.
	TransformId *string `min:"1" type:"string"`

	// The type of predefined worker that is allocated when a task of this transform
	// runs. Accepts a value of Standard, G.1X, or G.2X.
	//
	//    * For the Standard worker type, each worker provides 4 vCPU, 16 GB of
	//    memory and a 50GB disk, and 2 executors per worker.
	//
	//    * For the G.1X worker type, each worker provides 4 vCPU, 16 GB of memory
	//    and a 64GB disk, and 1 executor per worker.
	//
	//    * For the G.2X worker type, each worker provides 8 vCPU, 32 GB of memory
	//    and a 128GB disk, and 1 executor per worker.
	//
	// MaxCapacity is a mutually exclusive option with NumberOfWorkers and WorkerType.
	//
	//    * If either NumberOfWorkers or WorkerType is set, then MaxCapacity cannot
	//    be set.
	//
	//    * If MaxCapacity is set then neither NumberOfWorkers or WorkerType can
	//    be set.
	//
	//    * If WorkerType is set, then NumberOfWorkers is required (and vice versa).
	//
	//    * MaxCapacity and NumberOfWorkers must both be at least 1.
	WorkerType *string `type:"string" enum:"WorkerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MLTransform) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MLTransform) GoString() string {
	return s.String()
}

// SetCreatedOn sets the CreatedOn field's value.
func (s *MLTransform) SetCreatedOn(v time.Time) *MLTransform {
	s.CreatedOn = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *MLTransform) SetDescription(v string) *MLTransform {
	s.Description = &v
	return s
}

// SetEvaluationMetrics sets the EvaluationMetrics field's value.
func (s *MLTransform) SetEvaluationMetrics(v *EvaluationMetrics) *MLTransform {
	s.EvaluationMetrics = v
	return s
}

// SetGlueVersion sets the GlueVersion field's value.
func (s *MLTransform) SetGlueVersion(v string) *MLTransform {
	s.GlueVersion = &v
	return s
}

// SetInputRecordTables sets the InputRecordTables field's value.
func (s *MLTransform) SetInputRecordTables(v []*Table) *MLTransform {
	s.InputRecordTables = v
	return s
}

// SetLabelCount sets the LabelCount field's value.
func (s *MLTransform) SetLabelCount(v int64) *MLTransform {
	s.LabelCount = &v
	return s
}

// SetLastModifiedOn sets the LastModifiedOn field's value.
func (s *MLTransform) SetLastModifiedOn(v time.Time) *MLTransform {
	s.LastModifiedOn = &v
	return s
}

// SetMaxCapacity sets the MaxCapacity field's value.
func (s *MLTransform) SetMaxCapacity(v float64) *MLTransform {
	s.MaxCapacity = &v
	return s
}

// SetMaxRetries sets the MaxRetries field's value.
func (s *MLTransform) SetMaxRetries(v int64) *MLTransform {
	s.MaxRetries = &v
	return s
}

// SetName sets the Name field's value.
func (s *MLTransform) SetName(v string) *MLTransform {
	s.Name = &v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *MLTransform) SetNumberOfWorkers(v int64) *MLTransform {
	s.NumberOfWorkers = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *MLTransform) SetParameters(v *TransformParameters) *MLTransform {
	s.Parameters = v
	return s
}

// SetRole sets the Role field's value.
func (s *MLTransform) SetRole(v string) *MLTransform {
	s.Role = &v
	return s
}

// SetSchema sets the Schema field's value.
func (s *MLTransform) SetSchema(v []*SchemaColumn) *MLTransform {
	s.Schema = v
	return s
}

// SetStatus sets the Status field's value.
func (s *MLTransform) SetStatus(v string) *MLTransform {
	s.Status = &v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *MLTransform) SetTimeout(v int64) *MLTransform {
	s.Timeout = &v
	return s
}

// SetTransformEncryption sets the TransformEncryption field's value.
func (s *MLTransform) SetTransformEncryption(v *TransformEncryption) *MLTransform {
	s.TransformEncryption = v
	return s
}

// SetTransformId sets the TransformId field's value.
func (s *MLTransform) SetTransformId(v string) *MLTransform {
	s.TransformId = &v
	return s
}

// SetWorkerType sets the WorkerType field's value.
func (s *MLTransform) SetWorkerType(v string) *MLTransform {
	s.WorkerType = &v
	return s
}

// The machine learning transform is not ready to run.
type MLTransformNotReadyException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MLTransformNotReadyException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MLTransformNotReadyException) GoString() string {
	return s.String()
}

func newErrorMLTransformNotReadyException(v protocol.ResponseMetadata) error {
	return &MLTransformNotReadyException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *MLTransformNotReadyException) Code() string {
	return "MLTransformNotReadyException"
}

// Message returns the exception's message.
func (s *MLTransformNotReadyException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *MLTransformNotReadyException) OrigErr() error {
	return nil
}

func (s *MLTransformNotReadyException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *MLTransformNotReadyException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *MLTransformNotReadyException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The encryption-at-rest settings of the transform that apply to accessing
// user data.
type MLUserDataEncryption struct {
	_ struct{} `type:"structure"`

	// The ID for the customer-provided KMS key.
	KmsKeyId *string `min:"1" type:"string"`

	// The encryption mode applied to user data. Valid values are:
	//
	//    * DISABLED: encryption is disabled
	//
	//    * SSEKMS: use of server-side encryption with Key Management Service (SSE-KMS)
	//    for user data stored in Amazon S3.
	//
	// MlUserDataEncryptionMode is a required field
	MlUserDataEncryptionMode *string `type:"string" required:"true" enum:"MLUserDataEncryptionModeString"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MLUserDataEncryption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MLUserDataEncryption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MLUserDataEncryption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MLUserDataEncryption"}
	if s.KmsKeyId != nil && len(*s.KmsKeyId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("KmsKeyId", 1))
	}
	if s.MlUserDataEncryptionMode == nil {
		invalidParams.Add(request.NewErrParamRequired("MlUserDataEncryptionMode"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetKmsKeyId sets the KmsKeyId field's value.
func (s *MLUserDataEncryption) SetKmsKeyId(v string) *MLUserDataEncryption {
	s.KmsKeyId = &v
	return s
}

// SetMlUserDataEncryptionMode sets the MlUserDataEncryptionMode field's value.
func (s *MLUserDataEncryption) SetMlUserDataEncryptionMode(v string) *MLUserDataEncryption {
	s.MlUserDataEncryptionMode = &v
	return s
}

// Specifies the mapping of data property keys.
type Mapping struct {
	_ struct{} `type:"structure"`

	// Only applicable to nested data structures. If you want to change the parent
	// structure, but also one of its children, you can fill out this data strucutre.
	// It is also Mapping, but its FromPath will be the parent's FromPath plus the
	// FromPath from this structure.
	//
	// For the children part, suppose you have the structure:
	//
	// { "FromPath": "OuterStructure", "ToKey": "OuterStructure", "ToType": "Struct",
	// "Dropped": false, "Chidlren": [{ "FromPath": "inner", "ToKey": "inner", "ToType":
	// "Double", "Dropped": false, }] }
	//
	// You can specify a Mapping that looks like:
	//
	// { "FromPath": "OuterStructure", "ToKey": "OuterStructure", "ToType": "Struct",
	// "Dropped": false, "Chidlren": [{ "FromPath": "inner", "ToKey": "inner", "ToType":
	// "Double", "Dropped": false, }] }
	Children []*Mapping `type:"list"`

	// If true, then the column is removed.
	Dropped *bool `type:"boolean"`

	// The table or column to be modified.
	FromPath []*string `type:"list"`

	// The type of the data to be modified.
	FromType *string `type:"string"`

	// After the apply mapping, what the name of the column should be. Can be the
	// same as FromPath.
	ToKey *string `type:"string"`

	// The data type that the data is to be modified to.
	ToType *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 Mapping) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Mapping) GoString() string {
	return s.String()
}

// SetChildren sets the Children field's value.
func (s *Mapping) SetChildren(v []*Mapping) *Mapping {
	s.Children = v
	return s
}

// SetDropped sets the Dropped field's value.
func (s *Mapping) SetDropped(v bool) *Mapping {
	s.Dropped = &v
	return s
}

// SetFromPath sets the FromPath field's value.
func (s *Mapping) SetFromPath(v []*string) *Mapping {
	s.FromPath = v
	return s
}

// SetFromType sets the FromType field's value.
func (s *Mapping) SetFromType(v string) *Mapping {
	s.FromType = &v
	return s
}

// SetToKey sets the ToKey field's value.
func (s *Mapping) SetToKey(v string) *Mapping {
	s.ToKey = &v
	return s
}

// SetToType sets the ToType field's value.
func (s *Mapping) SetToType(v string) *Mapping {
	s.ToType = &v
	return s
}

// Defines a mapping.
type MappingEntry struct {
	_ struct{} `type:"structure"`

	// The source path.
	SourcePath *string `type:"string"`

	// The name of the source table.
	SourceTable *string `type:"string"`

	// The source type.
	SourceType *string `type:"string"`

	// The target path.
	TargetPath *string `type:"string"`

	// The target table.
	TargetTable *string `type:"string"`

	// The target type.
	TargetType *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 MappingEntry) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MappingEntry) GoString() string {
	return s.String()
}

// SetSourcePath sets the SourcePath field's value.
func (s *MappingEntry) SetSourcePath(v string) *MappingEntry {
	s.SourcePath = &v
	return s
}

// SetSourceTable sets the SourceTable field's value.
func (s *MappingEntry) SetSourceTable(v string) *MappingEntry {
	s.SourceTable = &v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *MappingEntry) SetSourceType(v string) *MappingEntry {
	s.SourceType = &v
	return s
}

// SetTargetPath sets the TargetPath field's value.
func (s *MappingEntry) SetTargetPath(v string) *MappingEntry {
	s.TargetPath = &v
	return s
}

// SetTargetTable sets the TargetTable field's value.
func (s *MappingEntry) SetTargetTable(v string) *MappingEntry {
	s.TargetTable = &v
	return s
}

// SetTargetType sets the TargetType field's value.
func (s *MappingEntry) SetTargetType(v string) *MappingEntry {
	s.TargetType = &v
	return s
}

// Specifies a transform that merges a DynamicFrame with a staging DynamicFrame
// based on the specified primary keys to identify records. Duplicate records
// (records with the same primary keys) are not de-duplicated.
type Merge struct {
	_ struct{} `type:"structure"`

	// The data inputs identified by their node names.
	//
	// Inputs is a required field
	Inputs []*string `min:"2" type:"list" required:"true"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The list of primary key fields to match records from the source and staging
	// dynamic frames.
	//
	// PrimaryKeys is a required field
	PrimaryKeys [][]*string `type:"list" required:"true"`

	// The source DynamicFrame that will be merged with a staging DynamicFrame.
	//
	// Source is a required field
	Source *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 Merge) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Merge) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Merge) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Merge"}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 2 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 2))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.PrimaryKeys == nil {
		invalidParams.Add(request.NewErrParamRequired("PrimaryKeys"))
	}
	if s.Source == nil {
		invalidParams.Add(request.NewErrParamRequired("Source"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInputs sets the Inputs field's value.
func (s *Merge) SetInputs(v []*string) *Merge {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *Merge) SetName(v string) *Merge {
	s.Name = &v
	return s
}

// SetPrimaryKeys sets the PrimaryKeys field's value.
func (s *Merge) SetPrimaryKeys(v [][]*string) *Merge {
	s.PrimaryKeys = v
	return s
}

// SetSource sets the Source field's value.
func (s *Merge) SetSource(v string) *Merge {
	s.Source = &v
	return s
}

// A structure containing metadata information for a schema version.
type MetadataInfo struct {
	_ struct{} `type:"structure"`

	// The time at which the entry was created.
	CreatedTime *string `type:"string"`

	// The metadata key’s corresponding value.
	MetadataValue *string `min:"1" type:"string"`

	// Other metadata belonging to the same metadata key.
	OtherMetadataValueList []*OtherMetadataValueListItem `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 MetadataInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MetadataInfo) GoString() string {
	return s.String()
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *MetadataInfo) SetCreatedTime(v string) *MetadataInfo {
	s.CreatedTime = &v
	return s
}

// SetMetadataValue sets the MetadataValue field's value.
func (s *MetadataInfo) SetMetadataValue(v string) *MetadataInfo {
	s.MetadataValue = &v
	return s
}

// SetOtherMetadataValueList sets the OtherMetadataValueList field's value.
func (s *MetadataInfo) SetOtherMetadataValueList(v []*OtherMetadataValueListItem) *MetadataInfo {
	s.OtherMetadataValueList = v
	return s
}

// A structure containing a key value pair for metadata.
type MetadataKeyValuePair struct {
	_ struct{} `type:"structure"`

	// A metadata key.
	MetadataKey *string `min:"1" type:"string"`

	// A metadata key’s corresponding value.
	MetadataValue *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 MetadataKeyValuePair) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MetadataKeyValuePair) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MetadataKeyValuePair) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MetadataKeyValuePair"}
	if s.MetadataKey != nil && len(*s.MetadataKey) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("MetadataKey", 1))
	}
	if s.MetadataValue != nil && len(*s.MetadataValue) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("MetadataValue", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMetadataKey sets the MetadataKey field's value.
func (s *MetadataKeyValuePair) SetMetadataKey(v string) *MetadataKeyValuePair {
	s.MetadataKey = &v
	return s
}

// SetMetadataValue sets the MetadataValue field's value.
func (s *MetadataKeyValuePair) SetMetadataValue(v string) *MetadataKeyValuePair {
	s.MetadataValue = &v
	return s
}

// Describes the metric based observation generated based on evaluated data
// quality metrics.
type MetricBasedObservation struct {
	_ struct{} `type:"structure"`

	// The name of the data quality metric used for generating the observation.
	MetricName *string `min:"1" type:"string"`

	// An object of type DataQualityMetricValues representing the analysis of the
	// data quality metric value.
	MetricValues *DataQualityMetricValues `type:"structure"`

	// A list of new data quality rules generated as part of the observation based
	// on the data quality metric value.
	NewRules []*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 MetricBasedObservation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MetricBasedObservation) GoString() string {
	return s.String()
}

// SetMetricName sets the MetricName field's value.
func (s *MetricBasedObservation) SetMetricName(v string) *MetricBasedObservation {
	s.MetricName = &v
	return s
}

// SetMetricValues sets the MetricValues field's value.
func (s *MetricBasedObservation) SetMetricValues(v *DataQualityMetricValues) *MetricBasedObservation {
	s.MetricValues = v
	return s
}

// SetNewRules sets the NewRules field's value.
func (s *MetricBasedObservation) SetNewRules(v []*string) *MetricBasedObservation {
	s.NewRules = v
	return s
}

// Specifies a Microsoft SQL server data source in the Glue Data Catalog.
type MicrosoftSQLServerCatalogSource struct {
	_ struct{} `type:"structure"`

	// The name of the database to read from.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The name of the data source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The name of the table in the database to read from.
	//
	// Table is a required field
	Table *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 MicrosoftSQLServerCatalogSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MicrosoftSQLServerCatalogSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MicrosoftSQLServerCatalogSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MicrosoftSQLServerCatalogSource"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *MicrosoftSQLServerCatalogSource) SetDatabase(v string) *MicrosoftSQLServerCatalogSource {
	s.Database = &v
	return s
}

// SetName sets the Name field's value.
func (s *MicrosoftSQLServerCatalogSource) SetName(v string) *MicrosoftSQLServerCatalogSource {
	s.Name = &v
	return s
}

// SetTable sets the Table field's value.
func (s *MicrosoftSQLServerCatalogSource) SetTable(v string) *MicrosoftSQLServerCatalogSource {
	s.Table = &v
	return s
}

// Specifies a target that uses Microsoft SQL.
type MicrosoftSQLServerCatalogTarget struct {
	_ struct{} `type:"structure"`

	// The name of the database to write to.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The nodes that are inputs to the data target.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data target.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The name of the table in the database to write to.
	//
	// Table is a required field
	Table *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 MicrosoftSQLServerCatalogTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MicrosoftSQLServerCatalogTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MicrosoftSQLServerCatalogTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MicrosoftSQLServerCatalogTarget"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *MicrosoftSQLServerCatalogTarget) SetDatabase(v string) *MicrosoftSQLServerCatalogTarget {
	s.Database = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *MicrosoftSQLServerCatalogTarget) SetInputs(v []*string) *MicrosoftSQLServerCatalogTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *MicrosoftSQLServerCatalogTarget) SetName(v string) *MicrosoftSQLServerCatalogTarget {
	s.Name = &v
	return s
}

// SetTable sets the Table field's value.
func (s *MicrosoftSQLServerCatalogTarget) SetTable(v string) *MicrosoftSQLServerCatalogTarget {
	s.Table = &v
	return s
}

// Specifies an Amazon DocumentDB or MongoDB data store to crawl.
type MongoDBTarget struct {
	_ struct{} `type:"structure"`

	// The name of the connection to use to connect to the Amazon DocumentDB or
	// MongoDB target.
	ConnectionName *string `type:"string"`

	// The path of the Amazon DocumentDB or MongoDB target (database/collection).
	Path *string `type:"string"`

	// Indicates whether to scan all the records, or to sample rows from the table.
	// Scanning all the records can take a long time when the table is not a high
	// throughput table.
	//
	// A value of true means to scan all records, while a value of false means to
	// sample the records. If no value is specified, the value defaults to true.
	ScanAll *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 MongoDBTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MongoDBTarget) GoString() string {
	return s.String()
}

// SetConnectionName sets the ConnectionName field's value.
func (s *MongoDBTarget) SetConnectionName(v string) *MongoDBTarget {
	s.ConnectionName = &v
	return s
}

// SetPath sets the Path field's value.
func (s *MongoDBTarget) SetPath(v string) *MongoDBTarget {
	s.Path = &v
	return s
}

// SetScanAll sets the ScanAll field's value.
func (s *MongoDBTarget) SetScanAll(v bool) *MongoDBTarget {
	s.ScanAll = &v
	return s
}

// Specifies a MySQL data source in the Glue Data Catalog.
type MySQLCatalogSource struct {
	_ struct{} `type:"structure"`

	// The name of the database to read from.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The name of the data source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The name of the table in the database to read from.
	//
	// Table is a required field
	Table *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 MySQLCatalogSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MySQLCatalogSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MySQLCatalogSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MySQLCatalogSource"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *MySQLCatalogSource) SetDatabase(v string) *MySQLCatalogSource {
	s.Database = &v
	return s
}

// SetName sets the Name field's value.
func (s *MySQLCatalogSource) SetName(v string) *MySQLCatalogSource {
	s.Name = &v
	return s
}

// SetTable sets the Table field's value.
func (s *MySQLCatalogSource) SetTable(v string) *MySQLCatalogSource {
	s.Table = &v
	return s
}

// Specifies a target that uses MySQL.
type MySQLCatalogTarget struct {
	_ struct{} `type:"structure"`

	// The name of the database to write to.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The nodes that are inputs to the data target.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data target.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The name of the table in the database to write to.
	//
	// Table is a required field
	Table *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 MySQLCatalogTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MySQLCatalogTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *MySQLCatalogTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "MySQLCatalogTarget"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *MySQLCatalogTarget) SetDatabase(v string) *MySQLCatalogTarget {
	s.Database = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *MySQLCatalogTarget) SetInputs(v []*string) *MySQLCatalogTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *MySQLCatalogTarget) SetName(v string) *MySQLCatalogTarget {
	s.Name = &v
	return s
}

// SetTable sets the Table field's value.
func (s *MySQLCatalogTarget) SetTable(v string) *MySQLCatalogTarget {
	s.Table = &v
	return s
}

// There is no applicable schedule.
type NoScheduleException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NoScheduleException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NoScheduleException) GoString() string {
	return s.String()
}

func newErrorNoScheduleException(v protocol.ResponseMetadata) error {
	return &NoScheduleException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *NoScheduleException) Code() string {
	return "NoScheduleException"
}

// Message returns the exception's message.
func (s *NoScheduleException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *NoScheduleException) OrigErr() error {
	return nil
}

func (s *NoScheduleException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *NoScheduleException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *NoScheduleException) RequestID() string {
	return s.RespMetadata.RequestID
}

// A node represents an Glue component (trigger, crawler, or job) on a workflow
// graph.
type Node struct {
	_ struct{} `type:"structure"`

	// Details of the crawler when the node represents a crawler.
	CrawlerDetails *CrawlerNodeDetails `type:"structure"`

	// Details of the Job when the node represents a Job.
	JobDetails *JobNodeDetails `type:"structure"`

	// The name of the Glue component represented by the node.
	Name *string `min:"1" type:"string"`

	// Details of the Trigger when the node represents a Trigger.
	TriggerDetails *TriggerNodeDetails `type:"structure"`

	// The type of Glue component represented by the node.
	Type *string `type:"string" enum:"NodeType"`

	// The unique Id assigned to the node within the workflow.
	UniqueId *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 Node) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Node) GoString() string {
	return s.String()
}

// SetCrawlerDetails sets the CrawlerDetails field's value.
func (s *Node) SetCrawlerDetails(v *CrawlerNodeDetails) *Node {
	s.CrawlerDetails = v
	return s
}

// SetJobDetails sets the JobDetails field's value.
func (s *Node) SetJobDetails(v *JobNodeDetails) *Node {
	s.JobDetails = v
	return s
}

// SetName sets the Name field's value.
func (s *Node) SetName(v string) *Node {
	s.Name = &v
	return s
}

// SetTriggerDetails sets the TriggerDetails field's value.
func (s *Node) SetTriggerDetails(v *TriggerNodeDetails) *Node {
	s.TriggerDetails = v
	return s
}

// SetType sets the Type field's value.
func (s *Node) SetType(v string) *Node {
	s.Type = &v
	return s
}

// SetUniqueId sets the UniqueId field's value.
func (s *Node) SetUniqueId(v string) *Node {
	s.UniqueId = &v
	return s
}

// Specifies configuration properties of a notification.
type NotificationProperty struct {
	_ struct{} `type:"structure"`

	// After a job run starts, the number of minutes to wait before sending a job
	// run delay notification.
	NotifyDelayAfter *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 NotificationProperty) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NotificationProperty) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NotificationProperty) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NotificationProperty"}
	if s.NotifyDelayAfter != nil && *s.NotifyDelayAfter < 1 {
		invalidParams.Add(request.NewErrParamMinValue("NotifyDelayAfter", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetNotifyDelayAfter sets the NotifyDelayAfter field's value.
func (s *NotificationProperty) SetNotifyDelayAfter(v int64) *NotificationProperty {
	s.NotifyDelayAfter = &v
	return s
}

// Represents whether certain values are recognized as null values for removal.
type NullCheckBoxList struct {
	_ struct{} `type:"structure"`

	// Specifies that an empty string is considered as a null value.
	IsEmpty *bool `type:"boolean"`

	// Specifies that an integer value of -1 is considered as a null value.
	IsNegOne *bool `type:"boolean"`

	// Specifies that a value spelling out the word 'null' is considered as a null
	// value.
	IsNullString *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 NullCheckBoxList) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NullCheckBoxList) GoString() string {
	return s.String()
}

// SetIsEmpty sets the IsEmpty field's value.
func (s *NullCheckBoxList) SetIsEmpty(v bool) *NullCheckBoxList {
	s.IsEmpty = &v
	return s
}

// SetIsNegOne sets the IsNegOne field's value.
func (s *NullCheckBoxList) SetIsNegOne(v bool) *NullCheckBoxList {
	s.IsNegOne = &v
	return s
}

// SetIsNullString sets the IsNullString field's value.
func (s *NullCheckBoxList) SetIsNullString(v bool) *NullCheckBoxList {
	s.IsNullString = &v
	return s
}

// Represents a custom null value such as a zeros or other value being used
// as a null placeholder unique to the dataset.
type NullValueField struct {
	_ struct{} `type:"structure"`

	// The datatype of the value.
	//
	// Datatype is a required field
	Datatype *Datatype `type:"structure" required:"true"`

	// The value of the null placeholder.
	//
	// 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 NullValueField) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NullValueField) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *NullValueField) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "NullValueField"}
	if s.Datatype == nil {
		invalidParams.Add(request.NewErrParamRequired("Datatype"))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}
	if s.Datatype != nil {
		if err := s.Datatype.Validate(); err != nil {
			invalidParams.AddNested("Datatype", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatatype sets the Datatype field's value.
func (s *NullValueField) SetDatatype(v *Datatype) *NullValueField {
	s.Datatype = v
	return s
}

// SetValue sets the Value field's value.
func (s *NullValueField) SetValue(v string) *NullValueField {
	s.Value = &v
	return s
}

// The OAuth2 client app used for the connection.
type OAuth2ClientApplication struct {
	_ struct{} `type:"structure"`

	// The reference to the SaaS-side client app that is Amazon Web Services managed.
	AWSManagedClientApplicationReference *string `type:"string"`

	// The client application clientID if the ClientAppType is USER_MANAGED.
	UserManagedClientApplicationClientId *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 OAuth2ClientApplication) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OAuth2ClientApplication) GoString() string {
	return s.String()
}

// SetAWSManagedClientApplicationReference sets the AWSManagedClientApplicationReference field's value.
func (s *OAuth2ClientApplication) SetAWSManagedClientApplicationReference(v string) *OAuth2ClientApplication {
	s.AWSManagedClientApplicationReference = &v
	return s
}

// SetUserManagedClientApplicationClientId sets the UserManagedClientApplicationClientId field's value.
func (s *OAuth2ClientApplication) SetUserManagedClientApplicationClientId(v string) *OAuth2ClientApplication {
	s.UserManagedClientApplicationClientId = &v
	return s
}

// A structure containing properties for OAuth2 authentication.
type OAuth2Properties struct {
	_ struct{} `type:"structure"`

	// The client application type. For example, AWS_MANAGED or USER_MANAGED.
	OAuth2ClientApplication *OAuth2ClientApplication `type:"structure"`

	// The OAuth2 grant type. For example, AUTHORIZATION_CODE, JWT_BEARER, or CLIENT_CREDENTIALS.
	OAuth2GrantType *string `type:"string" enum:"OAuth2GrantType"`

	// The URL of the provider's authentication server, to exchange an authorization
	// code for an access token.
	TokenUrl *string `type:"string"`

	// A map of parameters that are added to the token GET request.
	TokenUrlParametersMap 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 OAuth2Properties) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OAuth2Properties) GoString() string {
	return s.String()
}

// SetOAuth2ClientApplication sets the OAuth2ClientApplication field's value.
func (s *OAuth2Properties) SetOAuth2ClientApplication(v *OAuth2ClientApplication) *OAuth2Properties {
	s.OAuth2ClientApplication = v
	return s
}

// SetOAuth2GrantType sets the OAuth2GrantType field's value.
func (s *OAuth2Properties) SetOAuth2GrantType(v string) *OAuth2Properties {
	s.OAuth2GrantType = &v
	return s
}

// SetTokenUrl sets the TokenUrl field's value.
func (s *OAuth2Properties) SetTokenUrl(v string) *OAuth2Properties {
	s.TokenUrl = &v
	return s
}

// SetTokenUrlParametersMap sets the TokenUrlParametersMap field's value.
func (s *OAuth2Properties) SetTokenUrlParametersMap(v map[string]*string) *OAuth2Properties {
	s.TokenUrlParametersMap = v
	return s
}

// A structure containing properties for OAuth2 in the CreateConnection request.
type OAuth2PropertiesInput_ struct {
	_ struct{} `type:"structure"`

	// The set of properties required for the the OAuth2 AUTHORIZATION_CODE grant
	// type.
	AuthorizationCodeProperties *AuthorizationCodeProperties `type:"structure"`

	// The client application type in the CreateConnection request. For example,
	// AWS_MANAGED or USER_MANAGED.
	OAuth2ClientApplication *OAuth2ClientApplication `type:"structure"`

	// The OAuth2 grant type in the CreateConnection request. For example, AUTHORIZATION_CODE,
	// JWT_BEARER, or CLIENT_CREDENTIALS.
	OAuth2GrantType *string `type:"string" enum:"OAuth2GrantType"`

	// The URL of the provider's authentication server, to exchange an authorization
	// code for an access token.
	TokenUrl *string `type:"string"`

	// A map of parameters that are added to the token GET request.
	TokenUrlParametersMap 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 OAuth2PropertiesInput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OAuth2PropertiesInput_) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *OAuth2PropertiesInput_) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "OAuth2PropertiesInput_"}
	if s.AuthorizationCodeProperties != nil {
		if err := s.AuthorizationCodeProperties.Validate(); err != nil {
			invalidParams.AddNested("AuthorizationCodeProperties", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAuthorizationCodeProperties sets the AuthorizationCodeProperties field's value.
func (s *OAuth2PropertiesInput_) SetAuthorizationCodeProperties(v *AuthorizationCodeProperties) *OAuth2PropertiesInput_ {
	s.AuthorizationCodeProperties = v
	return s
}

// SetOAuth2ClientApplication sets the OAuth2ClientApplication field's value.
func (s *OAuth2PropertiesInput_) SetOAuth2ClientApplication(v *OAuth2ClientApplication) *OAuth2PropertiesInput_ {
	s.OAuth2ClientApplication = v
	return s
}

// SetOAuth2GrantType sets the OAuth2GrantType field's value.
func (s *OAuth2PropertiesInput_) SetOAuth2GrantType(v string) *OAuth2PropertiesInput_ {
	s.OAuth2GrantType = &v
	return s
}

// SetTokenUrl sets the TokenUrl field's value.
func (s *OAuth2PropertiesInput_) SetTokenUrl(v string) *OAuth2PropertiesInput_ {
	s.TokenUrl = &v
	return s
}

// SetTokenUrlParametersMap sets the TokenUrlParametersMap field's value.
func (s *OAuth2PropertiesInput_) SetTokenUrlParametersMap(v map[string]*string) *OAuth2PropertiesInput_ {
	s.TokenUrlParametersMap = v
	return s
}

// A structure representing an open format table.
type OpenTableFormatInput_ struct {
	_ struct{} `type:"structure"`

	// Specifies an IcebergInput structure that defines an Apache Iceberg metadata
	// table.
	IcebergInput *IcebergInput_ `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OpenTableFormatInput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OpenTableFormatInput_) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *OpenTableFormatInput_) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "OpenTableFormatInput_"}
	if s.IcebergInput != nil {
		if err := s.IcebergInput.Validate(); err != nil {
			invalidParams.AddNested("IcebergInput", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIcebergInput sets the IcebergInput field's value.
func (s *OpenTableFormatInput_) SetIcebergInput(v *IcebergInput_) *OpenTableFormatInput_ {
	s.IcebergInput = v
	return s
}

// The operation is not available in the region.
type OperationNotSupportedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OperationNotSupportedException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OperationNotSupportedException) GoString() string {
	return s.String()
}

func newErrorOperationNotSupportedException(v protocol.ResponseMetadata) error {
	return &OperationNotSupportedException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *OperationNotSupportedException) Code() string {
	return "OperationNotSupportedException"
}

// Message returns the exception's message.
func (s *OperationNotSupportedException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *OperationNotSupportedException) OrigErr() error {
	return nil
}

func (s *OperationNotSupportedException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *OperationNotSupportedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *OperationNotSupportedException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The operation timed out.
type OperationTimeoutException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OperationTimeoutException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OperationTimeoutException) GoString() string {
	return s.String()
}

func newErrorOperationTimeoutException(v protocol.ResponseMetadata) error {
	return &OperationTimeoutException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *OperationTimeoutException) Code() string {
	return "OperationTimeoutException"
}

// Message returns the exception's message.
func (s *OperationTimeoutException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *OperationTimeoutException) OrigErr() error {
	return nil
}

func (s *OperationTimeoutException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *OperationTimeoutException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *OperationTimeoutException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Specifies an option value.
type Option struct {
	_ struct{} `type:"structure"`

	// Specifies the description of the option.
	Description *string `type:"string"`

	// Specifies the label of the option.
	Label *string `type:"string"`

	// Specifies the value of the option.
	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 Option) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Option) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *Option) SetDescription(v string) *Option {
	s.Description = &v
	return s
}

// SetLabel sets the Label field's value.
func (s *Option) SetLabel(v string) *Option {
	s.Label = &v
	return s
}

// SetValue sets the Value field's value.
func (s *Option) SetValue(v string) *Option {
	s.Value = &v
	return s
}

// Specifies an Oracle data source in the Glue Data Catalog.
type OracleSQLCatalogSource struct {
	_ struct{} `type:"structure"`

	// The name of the database to read from.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The name of the data source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The name of the table in the database to read from.
	//
	// Table is a required field
	Table *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 OracleSQLCatalogSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OracleSQLCatalogSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *OracleSQLCatalogSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "OracleSQLCatalogSource"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *OracleSQLCatalogSource) SetDatabase(v string) *OracleSQLCatalogSource {
	s.Database = &v
	return s
}

// SetName sets the Name field's value.
func (s *OracleSQLCatalogSource) SetName(v string) *OracleSQLCatalogSource {
	s.Name = &v
	return s
}

// SetTable sets the Table field's value.
func (s *OracleSQLCatalogSource) SetTable(v string) *OracleSQLCatalogSource {
	s.Table = &v
	return s
}

// Specifies a target that uses Oracle SQL.
type OracleSQLCatalogTarget struct {
	_ struct{} `type:"structure"`

	// The name of the database to write to.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The nodes that are inputs to the data target.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data target.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The name of the table in the database to write to.
	//
	// Table is a required field
	Table *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 OracleSQLCatalogTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OracleSQLCatalogTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *OracleSQLCatalogTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "OracleSQLCatalogTarget"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *OracleSQLCatalogTarget) SetDatabase(v string) *OracleSQLCatalogTarget {
	s.Database = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *OracleSQLCatalogTarget) SetInputs(v []*string) *OracleSQLCatalogTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *OracleSQLCatalogTarget) SetName(v string) *OracleSQLCatalogTarget {
	s.Name = &v
	return s
}

// SetTable sets the Table field's value.
func (s *OracleSQLCatalogTarget) SetTable(v string) *OracleSQLCatalogTarget {
	s.Table = &v
	return s
}

// Specifies the sort order of a sorted column.
type Order struct {
	_ struct{} `type:"structure"`

	// The name of the column.
	//
	// Column is a required field
	Column *string `min:"1" type:"string" required:"true"`

	// Indicates that the column is sorted in ascending order (== 1), or in descending
	// order (==0).
	//
	// SortOrder is a required field
	SortOrder *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 Order) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Order) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Order) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Order"}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.Column != nil && len(*s.Column) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Column", 1))
	}
	if s.SortOrder == nil {
		invalidParams.Add(request.NewErrParamRequired("SortOrder"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumn sets the Column field's value.
func (s *Order) SetColumn(v string) *Order {
	s.Column = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *Order) SetSortOrder(v int64) *Order {
	s.SortOrder = &v
	return s
}

// A structure containing other metadata for a schema version belonging to the
// same metadata key.
type OtherMetadataValueListItem struct {
	_ struct{} `type:"structure"`

	// The time at which the entry was created.
	CreatedTime *string `type:"string"`

	// The metadata key’s corresponding value for the other metadata belonging
	// to the same metadata key.
	MetadataValue *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 OtherMetadataValueListItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s OtherMetadataValueListItem) GoString() string {
	return s.String()
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *OtherMetadataValueListItem) SetCreatedTime(v string) *OtherMetadataValueListItem {
	s.CreatedTime = &v
	return s
}

// SetMetadataValue sets the MetadataValue field's value.
func (s *OtherMetadataValueListItem) SetMetadataValue(v string) *OtherMetadataValueListItem {
	s.MetadataValue = &v
	return s
}

// Specifies a transform that identifies, removes or masks PII data.
type PIIDetection struct {
	_ struct{} `type:"structure"`

	// Indicates the types of entities the PIIDetection transform will identify
	// as PII data.
	//
	// PII type entities include: PERSON_NAME, DATE, USA_SNN, EMAIL, USA_ITIN, USA_PASSPORT_NUMBER,
	// PHONE_NUMBER, BANK_ACCOUNT, IP_ADDRESS, MAC_ADDRESS, USA_CPT_CODE, USA_HCPCS_CODE,
	// USA_NATIONAL_DRUG_CODE, USA_MEDICARE_BENEFICIARY_IDENTIFIER, USA_HEALTH_INSURANCE_CLAIM_NUMBER,CREDIT_CARD,USA_NATIONAL_PROVIDER_IDENTIFIER,USA_DEA_NUMBER,USA_DRIVING_LICENSE
	//
	// EntityTypesToDetect is a required field
	EntityTypesToDetect []*string `type:"list" required:"true"`

	// The node ID inputs to the transform.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// Indicates the value that will replace the detected entity.
	MaskValue *string `type:"string"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Indicates the output column name that will contain any entity type detected
	// in that row.
	OutputColumnName *string `type:"string"`

	// Indicates the type of PIIDetection transform.
	//
	// PiiType is a required field
	PiiType *string `type:"string" required:"true" enum:"PiiType"`

	// Indicates the fraction of the data to sample when scanning for PII entities.
	SampleFraction *float64 `type:"double"`

	// Indicates the fraction of the data that must be met in order for a column
	// to be identified as PII data.
	ThresholdFraction *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 PIIDetection) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PIIDetection) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PIIDetection) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PIIDetection"}
	if s.EntityTypesToDetect == nil {
		invalidParams.Add(request.NewErrParamRequired("EntityTypesToDetect"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.PiiType == nil {
		invalidParams.Add(request.NewErrParamRequired("PiiType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEntityTypesToDetect sets the EntityTypesToDetect field's value.
func (s *PIIDetection) SetEntityTypesToDetect(v []*string) *PIIDetection {
	s.EntityTypesToDetect = v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *PIIDetection) SetInputs(v []*string) *PIIDetection {
	s.Inputs = v
	return s
}

// SetMaskValue sets the MaskValue field's value.
func (s *PIIDetection) SetMaskValue(v string) *PIIDetection {
	s.MaskValue = &v
	return s
}

// SetName sets the Name field's value.
func (s *PIIDetection) SetName(v string) *PIIDetection {
	s.Name = &v
	return s
}

// SetOutputColumnName sets the OutputColumnName field's value.
func (s *PIIDetection) SetOutputColumnName(v string) *PIIDetection {
	s.OutputColumnName = &v
	return s
}

// SetPiiType sets the PiiType field's value.
func (s *PIIDetection) SetPiiType(v string) *PIIDetection {
	s.PiiType = &v
	return s
}

// SetSampleFraction sets the SampleFraction field's value.
func (s *PIIDetection) SetSampleFraction(v float64) *PIIDetection {
	s.SampleFraction = &v
	return s
}

// SetThresholdFraction sets the ThresholdFraction field's value.
func (s *PIIDetection) SetThresholdFraction(v float64) *PIIDetection {
	s.ThresholdFraction = &v
	return s
}

// Represents a slice of table data.
type Partition struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which the partition resides.
	CatalogId *string `min:"1" type:"string"`

	// The time at which the partition was created.
	CreationTime *time.Time `type:"timestamp"`

	// The name of the catalog database in which to create the partition.
	DatabaseName *string `min:"1" type:"string"`

	// The last time at which the partition was accessed.
	LastAccessTime *time.Time `type:"timestamp"`

	// The last time at which column statistics were computed for this partition.
	LastAnalyzedTime *time.Time `type:"timestamp"`

	// These key-value pairs define partition parameters.
	Parameters map[string]*string `type:"map"`

	// Provides information about the physical location where the partition is stored.
	StorageDescriptor *StorageDescriptor `type:"structure"`

	// The name of the database table in which to create the partition.
	TableName *string `min:"1" type:"string"`

	// The values of the partition.
	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 Partition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Partition) GoString() string {
	return s.String()
}

// SetCatalogId sets the CatalogId field's value.
func (s *Partition) SetCatalogId(v string) *Partition {
	s.CatalogId = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *Partition) SetCreationTime(v time.Time) *Partition {
	s.CreationTime = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *Partition) SetDatabaseName(v string) *Partition {
	s.DatabaseName = &v
	return s
}

// SetLastAccessTime sets the LastAccessTime field's value.
func (s *Partition) SetLastAccessTime(v time.Time) *Partition {
	s.LastAccessTime = &v
	return s
}

// SetLastAnalyzedTime sets the LastAnalyzedTime field's value.
func (s *Partition) SetLastAnalyzedTime(v time.Time) *Partition {
	s.LastAnalyzedTime = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *Partition) SetParameters(v map[string]*string) *Partition {
	s.Parameters = v
	return s
}

// SetStorageDescriptor sets the StorageDescriptor field's value.
func (s *Partition) SetStorageDescriptor(v *StorageDescriptor) *Partition {
	s.StorageDescriptor = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *Partition) SetTableName(v string) *Partition {
	s.TableName = &v
	return s
}

// SetValues sets the Values field's value.
func (s *Partition) SetValues(v []*string) *Partition {
	s.Values = v
	return s
}

// Contains information about a partition error.
type PartitionError struct {
	_ struct{} `type:"structure"`

	// The details about the partition error.
	ErrorDetail *ErrorDetail `type:"structure"`

	// The values that define the partition.
	PartitionValues []*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 PartitionError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PartitionError) GoString() string {
	return s.String()
}

// SetErrorDetail sets the ErrorDetail field's value.
func (s *PartitionError) SetErrorDetail(v *ErrorDetail) *PartitionError {
	s.ErrorDetail = v
	return s
}

// SetPartitionValues sets the PartitionValues field's value.
func (s *PartitionError) SetPartitionValues(v []*string) *PartitionError {
	s.PartitionValues = v
	return s
}

// A structure for a partition index.
type PartitionIndex struct {
	_ struct{} `type:"structure"`

	// The name of the partition index.
	//
	// IndexName is a required field
	IndexName *string `min:"1" type:"string" required:"true"`

	// The keys for the partition index.
	//
	// Keys is a required field
	Keys []*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 PartitionIndex) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PartitionIndex) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PartitionIndex) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PartitionIndex"}
	if s.IndexName == nil {
		invalidParams.Add(request.NewErrParamRequired("IndexName"))
	}
	if s.IndexName != nil && len(*s.IndexName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("IndexName", 1))
	}
	if s.Keys == nil {
		invalidParams.Add(request.NewErrParamRequired("Keys"))
	}
	if s.Keys != nil && len(s.Keys) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Keys", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIndexName sets the IndexName field's value.
func (s *PartitionIndex) SetIndexName(v string) *PartitionIndex {
	s.IndexName = &v
	return s
}

// SetKeys sets the Keys field's value.
func (s *PartitionIndex) SetKeys(v []*string) *PartitionIndex {
	s.Keys = v
	return s
}

// A descriptor for a partition index in a table.
type PartitionIndexDescriptor struct {
	_ struct{} `type:"structure"`

	// A list of errors that can occur when registering partition indexes for an
	// existing table.
	BackfillErrors []*BackfillError `type:"list"`

	// The name of the partition index.
	//
	// IndexName is a required field
	IndexName *string `min:"1" type:"string" required:"true"`

	// The status of the partition index.
	//
	// The possible statuses are:
	//
	//    * CREATING: The index is being created. When an index is in a CREATING
	//    state, the index or its table cannot be deleted.
	//
	//    * ACTIVE: The index creation succeeds.
	//
	//    * FAILED: The index creation fails.
	//
	//    * DELETING: The index is deleted from the list of indexes.
	//
	// IndexStatus is a required field
	IndexStatus *string `type:"string" required:"true" enum:"PartitionIndexStatus"`

	// A list of one or more keys, as KeySchemaElement structures, for the partition
	// index.
	//
	// Keys is a required field
	Keys []*KeySchemaElement `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 PartitionIndexDescriptor) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PartitionIndexDescriptor) GoString() string {
	return s.String()
}

// SetBackfillErrors sets the BackfillErrors field's value.
func (s *PartitionIndexDescriptor) SetBackfillErrors(v []*BackfillError) *PartitionIndexDescriptor {
	s.BackfillErrors = v
	return s
}

// SetIndexName sets the IndexName field's value.
func (s *PartitionIndexDescriptor) SetIndexName(v string) *PartitionIndexDescriptor {
	s.IndexName = &v
	return s
}

// SetIndexStatus sets the IndexStatus field's value.
func (s *PartitionIndexDescriptor) SetIndexStatus(v string) *PartitionIndexDescriptor {
	s.IndexStatus = &v
	return s
}

// SetKeys sets the Keys field's value.
func (s *PartitionIndexDescriptor) SetKeys(v []*KeySchemaElement) *PartitionIndexDescriptor {
	s.Keys = v
	return s
}

// The structure used to create and update a partition.
type PartitionInput struct {
	_ struct{} `type:"structure"`

	// The last time at which the partition was accessed.
	LastAccessTime *time.Time `type:"timestamp"`

	// The last time at which column statistics were computed for this partition.
	LastAnalyzedTime *time.Time `type:"timestamp"`

	// These key-value pairs define partition parameters.
	Parameters map[string]*string `type:"map"`

	// Provides information about the physical location where the partition is stored.
	StorageDescriptor *StorageDescriptor `type:"structure"`

	// The values of the partition. Although this parameter is not required by the
	// SDK, you must specify this parameter for a valid input.
	//
	// The values for the keys for the new partition must be passed as an array
	// of String objects that must be ordered in the same order as the partition
	// keys appearing in the Amazon S3 prefix. Otherwise Glue will add the values
	// to the wrong keys.
	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 PartitionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PartitionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PartitionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PartitionInput"}
	if s.StorageDescriptor != nil {
		if err := s.StorageDescriptor.Validate(); err != nil {
			invalidParams.AddNested("StorageDescriptor", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetLastAccessTime sets the LastAccessTime field's value.
func (s *PartitionInput) SetLastAccessTime(v time.Time) *PartitionInput {
	s.LastAccessTime = &v
	return s
}

// SetLastAnalyzedTime sets the LastAnalyzedTime field's value.
func (s *PartitionInput) SetLastAnalyzedTime(v time.Time) *PartitionInput {
	s.LastAnalyzedTime = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *PartitionInput) SetParameters(v map[string]*string) *PartitionInput {
	s.Parameters = v
	return s
}

// SetStorageDescriptor sets the StorageDescriptor field's value.
func (s *PartitionInput) SetStorageDescriptor(v *StorageDescriptor) *PartitionInput {
	s.StorageDescriptor = v
	return s
}

// SetValues sets the Values field's value.
func (s *PartitionInput) SetValues(v []*string) *PartitionInput {
	s.Values = v
	return s
}

// Contains a list of values defining partitions.
type PartitionValueList struct {
	_ struct{} `type:"structure"`

	// The list of values.
	//
	// Values is a required field
	Values []*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 PartitionValueList) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PartitionValueList) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PartitionValueList) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PartitionValueList"}
	if s.Values == nil {
		invalidParams.Add(request.NewErrParamRequired("Values"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetValues sets the Values field's value.
func (s *PartitionValueList) SetValues(v []*string) *PartitionValueList {
	s.Values = v
	return s
}

// The operation timed out.
type PermissionTypeMismatchException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// There is a mismatch between the SupportedPermissionType used in the query
	// request and the permissions defined on the target table.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PermissionTypeMismatchException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PermissionTypeMismatchException) GoString() string {
	return s.String()
}

func newErrorPermissionTypeMismatchException(v protocol.ResponseMetadata) error {
	return &PermissionTypeMismatchException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *PermissionTypeMismatchException) Code() string {
	return "PermissionTypeMismatchException"
}

// Message returns the exception's message.
func (s *PermissionTypeMismatchException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *PermissionTypeMismatchException) OrigErr() error {
	return nil
}

func (s *PermissionTypeMismatchException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *PermissionTypeMismatchException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *PermissionTypeMismatchException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The OAuth client app in GetConnection response.
type PhysicalConnectionRequirements struct {
	_ struct{} `type:"structure"`

	// The connection's Availability Zone.
	AvailabilityZone *string `min:"1" type:"string"`

	// The security group ID list used by the connection.
	SecurityGroupIdList []*string `type:"list"`

	// The subnet ID used by the connection.
	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 PhysicalConnectionRequirements) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PhysicalConnectionRequirements) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PhysicalConnectionRequirements) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PhysicalConnectionRequirements"}
	if s.AvailabilityZone != nil && len(*s.AvailabilityZone) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AvailabilityZone", 1))
	}
	if s.SubnetId != nil && len(*s.SubnetId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SubnetId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAvailabilityZone sets the AvailabilityZone field's value.
func (s *PhysicalConnectionRequirements) SetAvailabilityZone(v string) *PhysicalConnectionRequirements {
	s.AvailabilityZone = &v
	return s
}

// SetSecurityGroupIdList sets the SecurityGroupIdList field's value.
func (s *PhysicalConnectionRequirements) SetSecurityGroupIdList(v []*string) *PhysicalConnectionRequirements {
	s.SecurityGroupIdList = v
	return s
}

// SetSubnetId sets the SubnetId field's value.
func (s *PhysicalConnectionRequirements) SetSubnetId(v string) *PhysicalConnectionRequirements {
	s.SubnetId = &v
	return s
}

// Specifies a PostgresSQL data source in the Glue Data Catalog.
type PostgreSQLCatalogSource struct {
	_ struct{} `type:"structure"`

	// The name of the database to read from.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The name of the data source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The name of the table in the database to read from.
	//
	// Table is a required field
	Table *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 PostgreSQLCatalogSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PostgreSQLCatalogSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PostgreSQLCatalogSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PostgreSQLCatalogSource"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *PostgreSQLCatalogSource) SetDatabase(v string) *PostgreSQLCatalogSource {
	s.Database = &v
	return s
}

// SetName sets the Name field's value.
func (s *PostgreSQLCatalogSource) SetName(v string) *PostgreSQLCatalogSource {
	s.Name = &v
	return s
}

// SetTable sets the Table field's value.
func (s *PostgreSQLCatalogSource) SetTable(v string) *PostgreSQLCatalogSource {
	s.Table = &v
	return s
}

// Specifies a target that uses Postgres SQL.
type PostgreSQLCatalogTarget struct {
	_ struct{} `type:"structure"`

	// The name of the database to write to.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The nodes that are inputs to the data target.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data target.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The name of the table in the database to write to.
	//
	// Table is a required field
	Table *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 PostgreSQLCatalogTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PostgreSQLCatalogTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PostgreSQLCatalogTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PostgreSQLCatalogTarget"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *PostgreSQLCatalogTarget) SetDatabase(v string) *PostgreSQLCatalogTarget {
	s.Database = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *PostgreSQLCatalogTarget) SetInputs(v []*string) *PostgreSQLCatalogTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *PostgreSQLCatalogTarget) SetName(v string) *PostgreSQLCatalogTarget {
	s.Name = &v
	return s
}

// SetTable sets the Table field's value.
func (s *PostgreSQLCatalogTarget) SetTable(v string) *PostgreSQLCatalogTarget {
	s.Table = &v
	return s
}

// A job run that was used in the predicate of a conditional trigger that triggered
// this job run.
type Predecessor struct {
	_ struct{} `type:"structure"`

	// The name of the job definition used by the predecessor job run.
	JobName *string `min:"1" type:"string"`

	// The job-run ID of the predecessor job run.
	RunId *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 Predecessor) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Predecessor) GoString() string {
	return s.String()
}

// SetJobName sets the JobName field's value.
func (s *Predecessor) SetJobName(v string) *Predecessor {
	s.JobName = &v
	return s
}

// SetRunId sets the RunId field's value.
func (s *Predecessor) SetRunId(v string) *Predecessor {
	s.RunId = &v
	return s
}

// Defines the predicate of the trigger, which determines when it fires.
type Predicate struct {
	_ struct{} `type:"structure"`

	// A list of the conditions that determine when the trigger will fire.
	Conditions []*Condition `type:"list"`

	// An optional field if only one condition is listed. If multiple conditions
	// are listed, then this field is required.
	Logical *string `type:"string" enum:"Logical"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Predicate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Predicate) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Predicate) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Predicate"}
	if s.Conditions != nil {
		for i, v := range s.Conditions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Conditions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetConditions sets the Conditions field's value.
func (s *Predicate) SetConditions(v []*Condition) *Predicate {
	s.Conditions = v
	return s
}

// SetLogical sets the Logical field's value.
func (s *Predicate) SetLogical(v string) *Predicate {
	s.Logical = &v
	return s
}

// Permissions granted to a principal.
type PrincipalPermissions struct {
	_ struct{} `type:"structure"`

	// The permissions that are granted to the principal.
	Permissions []*string `type:"list" enum:"Permission"`

	// The principal who is granted permissions.
	Principal *DataLakePrincipal `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PrincipalPermissions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PrincipalPermissions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PrincipalPermissions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PrincipalPermissions"}
	if s.Principal != nil {
		if err := s.Principal.Validate(); err != nil {
			invalidParams.AddNested("Principal", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPermissions sets the Permissions field's value.
func (s *PrincipalPermissions) SetPermissions(v []*string) *PrincipalPermissions {
	s.Permissions = v
	return s
}

// SetPrincipal sets the Principal field's value.
func (s *PrincipalPermissions) SetPrincipal(v *DataLakePrincipal) *PrincipalPermissions {
	s.Principal = v
	return s
}

// Specifies the job and session values that an admin configures in an Glue
// usage profile.
type ProfileConfiguration struct {
	_ struct{} `type:"structure"`

	// A key-value map of configuration parameters for Glue jobs.
	JobConfiguration map[string]*ConfigurationObject `type:"map"`

	// A key-value map of configuration parameters for Glue sessions.
	SessionConfiguration map[string]*ConfigurationObject `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 ProfileConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProfileConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ProfileConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ProfileConfiguration"}
	if s.JobConfiguration != nil {
		for i, v := range s.JobConfiguration {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "JobConfiguration", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.SessionConfiguration != nil {
		for i, v := range s.SessionConfiguration {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SessionConfiguration", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetJobConfiguration sets the JobConfiguration field's value.
func (s *ProfileConfiguration) SetJobConfiguration(v map[string]*ConfigurationObject) *ProfileConfiguration {
	s.JobConfiguration = v
	return s
}

// SetSessionConfiguration sets the SessionConfiguration field's value.
func (s *ProfileConfiguration) SetSessionConfiguration(v map[string]*ConfigurationObject) *ProfileConfiguration {
	s.SessionConfiguration = v
	return s
}

// Defines a property predicate.
type PropertyPredicate struct {
	_ struct{} `type:"structure"`

	// The comparator used to compare this property to others.
	Comparator *string `type:"string" enum:"Comparator"`

	// The key of the property.
	Key *string `type:"string"`

	// The value of the property.
	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 PropertyPredicate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PropertyPredicate) GoString() string {
	return s.String()
}

// SetComparator sets the Comparator field's value.
func (s *PropertyPredicate) SetComparator(v string) *PropertyPredicate {
	s.Comparator = &v
	return s
}

// SetKey sets the Key field's value.
func (s *PropertyPredicate) SetKey(v string) *PropertyPredicate {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *PropertyPredicate) SetValue(v string) *PropertyPredicate {
	s.Value = &v
	return s
}

type PutDataCatalogEncryptionSettingsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog to set the security configuration for. If none
	// is provided, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The security configuration to set.
	//
	// DataCatalogEncryptionSettings is a required field
	DataCatalogEncryptionSettings *DataCatalogEncryptionSettings `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 PutDataCatalogEncryptionSettingsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutDataCatalogEncryptionSettingsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutDataCatalogEncryptionSettingsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutDataCatalogEncryptionSettingsInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DataCatalogEncryptionSettings == nil {
		invalidParams.Add(request.NewErrParamRequired("DataCatalogEncryptionSettings"))
	}
	if s.DataCatalogEncryptionSettings != nil {
		if err := s.DataCatalogEncryptionSettings.Validate(); err != nil {
			invalidParams.AddNested("DataCatalogEncryptionSettings", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *PutDataCatalogEncryptionSettingsInput) SetCatalogId(v string) *PutDataCatalogEncryptionSettingsInput {
	s.CatalogId = &v
	return s
}

// SetDataCatalogEncryptionSettings sets the DataCatalogEncryptionSettings field's value.
func (s *PutDataCatalogEncryptionSettingsInput) SetDataCatalogEncryptionSettings(v *DataCatalogEncryptionSettings) *PutDataCatalogEncryptionSettingsInput {
	s.DataCatalogEncryptionSettings = v
	return s
}

type PutDataCatalogEncryptionSettingsOutput 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 PutDataCatalogEncryptionSettingsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutDataCatalogEncryptionSettingsOutput) GoString() string {
	return s.String()
}

type PutResourcePolicyInput struct {
	_ struct{} `type:"structure"`

	// If 'TRUE', indicates that you are using both methods to grant cross-account
	// access to Data Catalog resources:
	//
	//    * By directly updating the resource policy with PutResourePolicy
	//
	//    * By using the Grant permissions command on the Amazon Web Services Management
	//    Console.
	//
	// Must be set to 'TRUE' if you have already used the Management Console to
	// grant cross-account access, otherwise the call fails. Default is 'FALSE'.
	EnableHybrid *string `type:"string" enum:"EnableHybridValues"`

	// A value of MUST_EXIST is used to update a policy. A value of NOT_EXIST is
	// used to create a new policy. If a value of NONE or a null value is used,
	// the call does not depend on the existence of a policy.
	PolicyExistsCondition *string `type:"string" enum:"ExistCondition"`

	// The hash value returned when the previous policy was set using PutResourcePolicy.
	// Its purpose is to prevent concurrent modifications of a policy. Do not use
	// this parameter if no previous policy has been set.
	PolicyHashCondition *string `min:"1" type:"string"`

	// Contains the policy document to set, in JSON format.
	//
	// PolicyInJson is a required field
	PolicyInJson *string `min:"2" type:"string" required:"true"`

	// Do not use. For internal use only.
	ResourceArn *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 PutResourcePolicyInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutResourcePolicyInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutResourcePolicyInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutResourcePolicyInput"}
	if s.PolicyHashCondition != nil && len(*s.PolicyHashCondition) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("PolicyHashCondition", 1))
	}
	if s.PolicyInJson == nil {
		invalidParams.Add(request.NewErrParamRequired("PolicyInJson"))
	}
	if s.PolicyInJson != nil && len(*s.PolicyInJson) < 2 {
		invalidParams.Add(request.NewErrParamMinLen("PolicyInJson", 2))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEnableHybrid sets the EnableHybrid field's value.
func (s *PutResourcePolicyInput) SetEnableHybrid(v string) *PutResourcePolicyInput {
	s.EnableHybrid = &v
	return s
}

// SetPolicyExistsCondition sets the PolicyExistsCondition field's value.
func (s *PutResourcePolicyInput) SetPolicyExistsCondition(v string) *PutResourcePolicyInput {
	s.PolicyExistsCondition = &v
	return s
}

// SetPolicyHashCondition sets the PolicyHashCondition field's value.
func (s *PutResourcePolicyInput) SetPolicyHashCondition(v string) *PutResourcePolicyInput {
	s.PolicyHashCondition = &v
	return s
}

// SetPolicyInJson sets the PolicyInJson field's value.
func (s *PutResourcePolicyInput) SetPolicyInJson(v string) *PutResourcePolicyInput {
	s.PolicyInJson = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *PutResourcePolicyInput) SetResourceArn(v string) *PutResourcePolicyInput {
	s.ResourceArn = &v
	return s
}

type PutResourcePolicyOutput struct {
	_ struct{} `type:"structure"`

	// A hash of the policy that has just been set. This must be included in a subsequent
	// call that overwrites or updates this policy.
	PolicyHash *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 PutResourcePolicyOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutResourcePolicyOutput) GoString() string {
	return s.String()
}

// SetPolicyHash sets the PolicyHash field's value.
func (s *PutResourcePolicyOutput) SetPolicyHash(v string) *PutResourcePolicyOutput {
	s.PolicyHash = &v
	return s
}

type PutSchemaVersionMetadataInput struct {
	_ struct{} `type:"structure"`

	// The metadata key's corresponding value.
	//
	// MetadataKeyValue is a required field
	MetadataKeyValue *MetadataKeyValuePair `type:"structure" required:"true"`

	// The unique ID for the schema.
	SchemaId *SchemaId `type:"structure"`

	// The unique version ID of the schema version.
	SchemaVersionId *string `min:"36" type:"string"`

	// The version number of the schema.
	SchemaVersionNumber *SchemaVersionNumber `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutSchemaVersionMetadataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutSchemaVersionMetadataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutSchemaVersionMetadataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutSchemaVersionMetadataInput"}
	if s.MetadataKeyValue == nil {
		invalidParams.Add(request.NewErrParamRequired("MetadataKeyValue"))
	}
	if s.SchemaVersionId != nil && len(*s.SchemaVersionId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("SchemaVersionId", 36))
	}
	if s.MetadataKeyValue != nil {
		if err := s.MetadataKeyValue.Validate(); err != nil {
			invalidParams.AddNested("MetadataKeyValue", err.(request.ErrInvalidParams))
		}
	}
	if s.SchemaId != nil {
		if err := s.SchemaId.Validate(); err != nil {
			invalidParams.AddNested("SchemaId", err.(request.ErrInvalidParams))
		}
	}
	if s.SchemaVersionNumber != nil {
		if err := s.SchemaVersionNumber.Validate(); err != nil {
			invalidParams.AddNested("SchemaVersionNumber", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMetadataKeyValue sets the MetadataKeyValue field's value.
func (s *PutSchemaVersionMetadataInput) SetMetadataKeyValue(v *MetadataKeyValuePair) *PutSchemaVersionMetadataInput {
	s.MetadataKeyValue = v
	return s
}

// SetSchemaId sets the SchemaId field's value.
func (s *PutSchemaVersionMetadataInput) SetSchemaId(v *SchemaId) *PutSchemaVersionMetadataInput {
	s.SchemaId = v
	return s
}

// SetSchemaVersionId sets the SchemaVersionId field's value.
func (s *PutSchemaVersionMetadataInput) SetSchemaVersionId(v string) *PutSchemaVersionMetadataInput {
	s.SchemaVersionId = &v
	return s
}

// SetSchemaVersionNumber sets the SchemaVersionNumber field's value.
func (s *PutSchemaVersionMetadataInput) SetSchemaVersionNumber(v *SchemaVersionNumber) *PutSchemaVersionMetadataInput {
	s.SchemaVersionNumber = v
	return s
}

type PutSchemaVersionMetadataOutput struct {
	_ struct{} `type:"structure"`

	// The latest version of the schema.
	LatestVersion *bool `type:"boolean"`

	// The metadata key.
	MetadataKey *string `min:"1" type:"string"`

	// The value of the metadata key.
	MetadataValue *string `min:"1" type:"string"`

	// The name for the registry.
	RegistryName *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) for the schema.
	SchemaArn *string `min:"1" type:"string"`

	// The name for the schema.
	SchemaName *string `min:"1" type:"string"`

	// The unique version ID of the schema version.
	SchemaVersionId *string `min:"36" type:"string"`

	// The version number of the schema.
	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 PutSchemaVersionMetadataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutSchemaVersionMetadataOutput) GoString() string {
	return s.String()
}

// SetLatestVersion sets the LatestVersion field's value.
func (s *PutSchemaVersionMetadataOutput) SetLatestVersion(v bool) *PutSchemaVersionMetadataOutput {
	s.LatestVersion = &v
	return s
}

// SetMetadataKey sets the MetadataKey field's value.
func (s *PutSchemaVersionMetadataOutput) SetMetadataKey(v string) *PutSchemaVersionMetadataOutput {
	s.MetadataKey = &v
	return s
}

// SetMetadataValue sets the MetadataValue field's value.
func (s *PutSchemaVersionMetadataOutput) SetMetadataValue(v string) *PutSchemaVersionMetadataOutput {
	s.MetadataValue = &v
	return s
}

// SetRegistryName sets the RegistryName field's value.
func (s *PutSchemaVersionMetadataOutput) SetRegistryName(v string) *PutSchemaVersionMetadataOutput {
	s.RegistryName = &v
	return s
}

// SetSchemaArn sets the SchemaArn field's value.
func (s *PutSchemaVersionMetadataOutput) SetSchemaArn(v string) *PutSchemaVersionMetadataOutput {
	s.SchemaArn = &v
	return s
}

// SetSchemaName sets the SchemaName field's value.
func (s *PutSchemaVersionMetadataOutput) SetSchemaName(v string) *PutSchemaVersionMetadataOutput {
	s.SchemaName = &v
	return s
}

// SetSchemaVersionId sets the SchemaVersionId field's value.
func (s *PutSchemaVersionMetadataOutput) SetSchemaVersionId(v string) *PutSchemaVersionMetadataOutput {
	s.SchemaVersionId = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *PutSchemaVersionMetadataOutput) SetVersionNumber(v int64) *PutSchemaVersionMetadataOutput {
	s.VersionNumber = &v
	return s
}

type PutWorkflowRunPropertiesInput struct {
	_ struct{} `type:"structure"`

	// Name of the workflow which was run.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The ID of the workflow run for which the run properties should be updated.
	//
	// RunId is a required field
	RunId *string `min:"1" type:"string" required:"true"`

	// The properties to put for the specified run.
	//
	// RunProperties is a required field
	RunProperties map[string]*string `type:"map" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutWorkflowRunPropertiesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutWorkflowRunPropertiesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutWorkflowRunPropertiesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutWorkflowRunPropertiesInput"}
	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.RunId == nil {
		invalidParams.Add(request.NewErrParamRequired("RunId"))
	}
	if s.RunId != nil && len(*s.RunId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RunId", 1))
	}
	if s.RunProperties == nil {
		invalidParams.Add(request.NewErrParamRequired("RunProperties"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *PutWorkflowRunPropertiesInput) SetName(v string) *PutWorkflowRunPropertiesInput {
	s.Name = &v
	return s
}

// SetRunId sets the RunId field's value.
func (s *PutWorkflowRunPropertiesInput) SetRunId(v string) *PutWorkflowRunPropertiesInput {
	s.RunId = &v
	return s
}

// SetRunProperties sets the RunProperties field's value.
func (s *PutWorkflowRunPropertiesInput) SetRunProperties(v map[string]*string) *PutWorkflowRunPropertiesInput {
	s.RunProperties = v
	return s
}

type PutWorkflowRunPropertiesOutput 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 PutWorkflowRunPropertiesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutWorkflowRunPropertiesOutput) GoString() string {
	return s.String()
}

type QuerySchemaVersionMetadataInput struct {
	_ struct{} `type:"structure"`

	// Maximum number of results required per page. If the value is not supplied,
	// this will be defaulted to 25 per page.
	MaxResults *int64 `min:"1" type:"integer"`

	// Search key-value pairs for metadata, if they are not provided all the metadata
	// information will be fetched.
	MetadataList []*MetadataKeyValuePair `type:"list"`

	// A continuation token, if this is a continuation call.
	NextToken *string `type:"string"`

	// A wrapper structure that may contain the schema name and Amazon Resource
	// Name (ARN).
	SchemaId *SchemaId `type:"structure"`

	// The unique version ID of the schema version.
	SchemaVersionId *string `min:"36" type:"string"`

	// The version number of the schema.
	SchemaVersionNumber *SchemaVersionNumber `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QuerySchemaVersionMetadataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QuerySchemaVersionMetadataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *QuerySchemaVersionMetadataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "QuerySchemaVersionMetadataInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.SchemaVersionId != nil && len(*s.SchemaVersionId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("SchemaVersionId", 36))
	}
	if s.MetadataList != nil {
		for i, v := range s.MetadataList {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "MetadataList", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.SchemaId != nil {
		if err := s.SchemaId.Validate(); err != nil {
			invalidParams.AddNested("SchemaId", err.(request.ErrInvalidParams))
		}
	}
	if s.SchemaVersionNumber != nil {
		if err := s.SchemaVersionNumber.Validate(); err != nil {
			invalidParams.AddNested("SchemaVersionNumber", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *QuerySchemaVersionMetadataInput) SetMaxResults(v int64) *QuerySchemaVersionMetadataInput {
	s.MaxResults = &v
	return s
}

// SetMetadataList sets the MetadataList field's value.
func (s *QuerySchemaVersionMetadataInput) SetMetadataList(v []*MetadataKeyValuePair) *QuerySchemaVersionMetadataInput {
	s.MetadataList = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *QuerySchemaVersionMetadataInput) SetNextToken(v string) *QuerySchemaVersionMetadataInput {
	s.NextToken = &v
	return s
}

// SetSchemaId sets the SchemaId field's value.
func (s *QuerySchemaVersionMetadataInput) SetSchemaId(v *SchemaId) *QuerySchemaVersionMetadataInput {
	s.SchemaId = v
	return s
}

// SetSchemaVersionId sets the SchemaVersionId field's value.
func (s *QuerySchemaVersionMetadataInput) SetSchemaVersionId(v string) *QuerySchemaVersionMetadataInput {
	s.SchemaVersionId = &v
	return s
}

// SetSchemaVersionNumber sets the SchemaVersionNumber field's value.
func (s *QuerySchemaVersionMetadataInput) SetSchemaVersionNumber(v *SchemaVersionNumber) *QuerySchemaVersionMetadataInput {
	s.SchemaVersionNumber = v
	return s
}

type QuerySchemaVersionMetadataOutput struct {
	_ struct{} `type:"structure"`

	// A map of a metadata key and associated values.
	MetadataInfoMap map[string]*MetadataInfo `type:"map"`

	// A continuation token for paginating the returned list of tokens, returned
	// if the current segment of the list is not the last.
	NextToken *string `type:"string"`

	// The unique version ID of the schema version.
	SchemaVersionId *string `min:"36" 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 QuerySchemaVersionMetadataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QuerySchemaVersionMetadataOutput) GoString() string {
	return s.String()
}

// SetMetadataInfoMap sets the MetadataInfoMap field's value.
func (s *QuerySchemaVersionMetadataOutput) SetMetadataInfoMap(v map[string]*MetadataInfo) *QuerySchemaVersionMetadataOutput {
	s.MetadataInfoMap = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *QuerySchemaVersionMetadataOutput) SetNextToken(v string) *QuerySchemaVersionMetadataOutput {
	s.NextToken = &v
	return s
}

// SetSchemaVersionId sets the SchemaVersionId field's value.
func (s *QuerySchemaVersionMetadataOutput) SetSchemaVersionId(v string) *QuerySchemaVersionMetadataOutput {
	s.SchemaVersionId = &v
	return s
}

// A structure used as a protocol between query engines and Lake Formation or
// Glue. Contains both a Lake Formation generated authorization identifier and
// information from the request's authorization context.
type QuerySessionContext struct {
	_ struct{} `type:"structure"`

	// An opaque string-string map passed by the query engine.
	AdditionalContext map[string]*string `type:"map"`

	// An identifier string for the consumer cluster.
	ClusterId *string `type:"string"`

	// A cryptographically generated query identifier generated by Glue or Lake
	// Formation.
	QueryAuthorizationId *string `min:"1" type:"string"`

	// A unique identifier generated by the query engine for the query.
	QueryId *string `min:"1" type:"string"`

	// A timestamp provided by the query engine for when the query started.
	QueryStartTime *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 QuerySessionContext) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s QuerySessionContext) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *QuerySessionContext) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "QuerySessionContext"}
	if s.QueryAuthorizationId != nil && len(*s.QueryAuthorizationId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QueryAuthorizationId", 1))
	}
	if s.QueryId != nil && len(*s.QueryId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QueryId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalContext sets the AdditionalContext field's value.
func (s *QuerySessionContext) SetAdditionalContext(v map[string]*string) *QuerySessionContext {
	s.AdditionalContext = v
	return s
}

// SetClusterId sets the ClusterId field's value.
func (s *QuerySessionContext) SetClusterId(v string) *QuerySessionContext {
	s.ClusterId = &v
	return s
}

// SetQueryAuthorizationId sets the QueryAuthorizationId field's value.
func (s *QuerySessionContext) SetQueryAuthorizationId(v string) *QuerySessionContext {
	s.QueryAuthorizationId = &v
	return s
}

// SetQueryId sets the QueryId field's value.
func (s *QuerySessionContext) SetQueryId(v string) *QuerySessionContext {
	s.QueryId = &v
	return s
}

// SetQueryStartTime sets the QueryStartTime field's value.
func (s *QuerySessionContext) SetQueryStartTime(v time.Time) *QuerySessionContext {
	s.QueryStartTime = &v
	return s
}

// A Glue Studio node that uses a Glue DataBrew recipe in Glue jobs.
type Recipe struct {
	_ struct{} `type:"structure"`

	// The nodes that are inputs to the recipe node, identified by id.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the Glue Studio node.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// A reference to the DataBrew recipe used by the node.
	//
	// RecipeReference is a required field
	RecipeReference *RecipeReference `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 Recipe) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Recipe) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Recipe) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Recipe"}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.RecipeReference == nil {
		invalidParams.Add(request.NewErrParamRequired("RecipeReference"))
	}
	if s.RecipeReference != nil {
		if err := s.RecipeReference.Validate(); err != nil {
			invalidParams.AddNested("RecipeReference", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInputs sets the Inputs field's value.
func (s *Recipe) SetInputs(v []*string) *Recipe {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *Recipe) SetName(v string) *Recipe {
	s.Name = &v
	return s
}

// SetRecipeReference sets the RecipeReference field's value.
func (s *Recipe) SetRecipeReference(v *RecipeReference) *Recipe {
	s.RecipeReference = v
	return s
}

// A reference to a Glue DataBrew recipe.
type RecipeReference struct {
	_ struct{} `type:"structure"`

	// The ARN of the DataBrew recipe.
	//
	// RecipeArn is a required field
	RecipeArn *string `type:"string" required:"true"`

	// The RecipeVersion of the DataBrew recipe.
	//
	// RecipeVersion is a required field
	RecipeVersion *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 RecipeReference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RecipeReference) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RecipeReference) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RecipeReference"}
	if s.RecipeArn == nil {
		invalidParams.Add(request.NewErrParamRequired("RecipeArn"))
	}
	if s.RecipeVersion == nil {
		invalidParams.Add(request.NewErrParamRequired("RecipeVersion"))
	}
	if s.RecipeVersion != nil && len(*s.RecipeVersion) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RecipeVersion", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRecipeArn sets the RecipeArn field's value.
func (s *RecipeReference) SetRecipeArn(v string) *RecipeReference {
	s.RecipeArn = &v
	return s
}

// SetRecipeVersion sets the RecipeVersion field's value.
func (s *RecipeReference) SetRecipeVersion(v string) *RecipeReference {
	s.RecipeVersion = &v
	return s
}

// When crawling an Amazon S3 data source after the first crawl is complete,
// specifies whether to crawl the entire dataset again or to crawl only folders
// that were added since the last crawler run. For more information, see Incremental
// Crawls in Glue (https://docs.aws.amazon.com/glue/latest/dg/incremental-crawls.html)
// in the developer guide.
type RecrawlPolicy struct {
	_ struct{} `type:"structure"`

	// Specifies whether to crawl the entire dataset again or to crawl only folders
	// that were added since the last crawler run.
	//
	// A value of CRAWL_EVERYTHING specifies crawling the entire dataset again.
	//
	// A value of CRAWL_NEW_FOLDERS_ONLY specifies crawling only folders that were
	// added since the last crawler run.
	//
	// A value of CRAWL_EVENT_MODE specifies crawling only the changes identified
	// by Amazon S3 events.
	RecrawlBehavior *string `type:"string" enum:"RecrawlBehavior"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RecrawlPolicy) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RecrawlPolicy) GoString() string {
	return s.String()
}

// SetRecrawlBehavior sets the RecrawlBehavior field's value.
func (s *RecrawlPolicy) SetRecrawlBehavior(v string) *RecrawlPolicy {
	s.RecrawlBehavior = &v
	return s
}

// Specifies an Amazon Redshift data store.
type RedshiftSource struct {
	_ struct{} `type:"structure"`

	// The database to read from.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The name of the Amazon Redshift data store.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The Amazon S3 path where temporary data can be staged when copying out of
	// the database.
	RedshiftTmpDir *string `type:"string"`

	// The database table to read from.
	//
	// Table is a required field
	Table *string `type:"string" required:"true"`

	// The IAM role with permissions.
	TmpDirIAMRole *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 RedshiftSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RedshiftSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RedshiftSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RedshiftSource"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *RedshiftSource) SetDatabase(v string) *RedshiftSource {
	s.Database = &v
	return s
}

// SetName sets the Name field's value.
func (s *RedshiftSource) SetName(v string) *RedshiftSource {
	s.Name = &v
	return s
}

// SetRedshiftTmpDir sets the RedshiftTmpDir field's value.
func (s *RedshiftSource) SetRedshiftTmpDir(v string) *RedshiftSource {
	s.RedshiftTmpDir = &v
	return s
}

// SetTable sets the Table field's value.
func (s *RedshiftSource) SetTable(v string) *RedshiftSource {
	s.Table = &v
	return s
}

// SetTmpDirIAMRole sets the TmpDirIAMRole field's value.
func (s *RedshiftSource) SetTmpDirIAMRole(v string) *RedshiftSource {
	s.TmpDirIAMRole = &v
	return s
}

// Specifies a target that uses Amazon Redshift.
type RedshiftTarget struct {
	_ struct{} `type:"structure"`

	// The name of the database to write to.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The nodes that are inputs to the data target.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data target.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The Amazon S3 path where temporary data can be staged when copying out of
	// the database.
	RedshiftTmpDir *string `type:"string"`

	// The name of the table in the database to write to.
	//
	// Table is a required field
	Table *string `type:"string" required:"true"`

	// The IAM role with permissions.
	TmpDirIAMRole *string `type:"string"`

	// The set of options to configure an upsert operation when writing to a Redshift
	// target.
	UpsertRedshiftOptions *UpsertRedshiftTargetOptions `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RedshiftTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RedshiftTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RedshiftTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RedshiftTarget"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *RedshiftTarget) SetDatabase(v string) *RedshiftTarget {
	s.Database = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *RedshiftTarget) SetInputs(v []*string) *RedshiftTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *RedshiftTarget) SetName(v string) *RedshiftTarget {
	s.Name = &v
	return s
}

// SetRedshiftTmpDir sets the RedshiftTmpDir field's value.
func (s *RedshiftTarget) SetRedshiftTmpDir(v string) *RedshiftTarget {
	s.RedshiftTmpDir = &v
	return s
}

// SetTable sets the Table field's value.
func (s *RedshiftTarget) SetTable(v string) *RedshiftTarget {
	s.Table = &v
	return s
}

// SetTmpDirIAMRole sets the TmpDirIAMRole field's value.
func (s *RedshiftTarget) SetTmpDirIAMRole(v string) *RedshiftTarget {
	s.TmpDirIAMRole = &v
	return s
}

// SetUpsertRedshiftOptions sets the UpsertRedshiftOptions field's value.
func (s *RedshiftTarget) SetUpsertRedshiftOptions(v *UpsertRedshiftTargetOptions) *RedshiftTarget {
	s.UpsertRedshiftOptions = v
	return s
}

type RegisterSchemaVersionInput struct {
	_ struct{} `type:"structure"`

	// The schema definition using the DataFormat setting for the SchemaName.
	//
	// SchemaDefinition is a required field
	SchemaDefinition *string `min:"1" type:"string" required:"true"`

	// This is a wrapper structure to contain schema identity fields. The structure
	// contains:
	//
	//    * SchemaId$SchemaArn: The Amazon Resource Name (ARN) of the schema. Either
	//    SchemaArn or SchemaName and RegistryName has to be provided.
	//
	//    * SchemaId$SchemaName: The name of the schema. Either SchemaArn or SchemaName
	//    and RegistryName has to be provided.
	//
	// SchemaId is a required field
	SchemaId *SchemaId `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 RegisterSchemaVersionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisterSchemaVersionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisterSchemaVersionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisterSchemaVersionInput"}
	if s.SchemaDefinition == nil {
		invalidParams.Add(request.NewErrParamRequired("SchemaDefinition"))
	}
	if s.SchemaDefinition != nil && len(*s.SchemaDefinition) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SchemaDefinition", 1))
	}
	if s.SchemaId == nil {
		invalidParams.Add(request.NewErrParamRequired("SchemaId"))
	}
	if s.SchemaId != nil {
		if err := s.SchemaId.Validate(); err != nil {
			invalidParams.AddNested("SchemaId", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSchemaDefinition sets the SchemaDefinition field's value.
func (s *RegisterSchemaVersionInput) SetSchemaDefinition(v string) *RegisterSchemaVersionInput {
	s.SchemaDefinition = &v
	return s
}

// SetSchemaId sets the SchemaId field's value.
func (s *RegisterSchemaVersionInput) SetSchemaId(v *SchemaId) *RegisterSchemaVersionInput {
	s.SchemaId = v
	return s
}

type RegisterSchemaVersionOutput struct {
	_ struct{} `type:"structure"`

	// The unique ID that represents the version of this schema.
	SchemaVersionId *string `min:"36" type:"string"`

	// The status of the schema version.
	Status *string `type:"string" enum:"SchemaVersionStatus"`

	// The version of this schema (for sync flow only, in case this is the first
	// 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 RegisterSchemaVersionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisterSchemaVersionOutput) GoString() string {
	return s.String()
}

// SetSchemaVersionId sets the SchemaVersionId field's value.
func (s *RegisterSchemaVersionOutput) SetSchemaVersionId(v string) *RegisterSchemaVersionOutput {
	s.SchemaVersionId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *RegisterSchemaVersionOutput) SetStatus(v string) *RegisterSchemaVersionOutput {
	s.Status = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *RegisterSchemaVersionOutput) SetVersionNumber(v int64) *RegisterSchemaVersionOutput {
	s.VersionNumber = &v
	return s
}

// A wrapper structure that may contain the registry name and Amazon Resource
// Name (ARN).
type RegistryId struct {
	_ struct{} `type:"structure"`

	// Arn of the registry to be updated. One of RegistryArn or RegistryName has
	// to be provided.
	RegistryArn *string `min:"1" type:"string"`

	// Name of the registry. Used only for lookup. One of RegistryArn or RegistryName
	// has to be provided.
	RegistryName *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 RegistryId) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegistryId) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegistryId) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegistryId"}
	if s.RegistryArn != nil && len(*s.RegistryArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RegistryArn", 1))
	}
	if s.RegistryName != nil && len(*s.RegistryName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RegistryName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRegistryArn sets the RegistryArn field's value.
func (s *RegistryId) SetRegistryArn(v string) *RegistryId {
	s.RegistryArn = &v
	return s
}

// SetRegistryName sets the RegistryName field's value.
func (s *RegistryId) SetRegistryName(v string) *RegistryId {
	s.RegistryName = &v
	return s
}

// A structure containing the details for a registry.
type RegistryListItem struct {
	_ struct{} `type:"structure"`

	// The data the registry was created.
	CreatedTime *string `type:"string"`

	// A description of the registry.
	Description *string `type:"string"`

	// The Amazon Resource Name (ARN) of the registry.
	RegistryArn *string `min:"1" type:"string"`

	// The name of the registry.
	RegistryName *string `min:"1" type:"string"`

	// The status of the registry.
	Status *string `type:"string" enum:"RegistryStatus"`

	// The date the registry was updated.
	UpdatedTime *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 RegistryListItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegistryListItem) GoString() string {
	return s.String()
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *RegistryListItem) SetCreatedTime(v string) *RegistryListItem {
	s.CreatedTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *RegistryListItem) SetDescription(v string) *RegistryListItem {
	s.Description = &v
	return s
}

// SetRegistryArn sets the RegistryArn field's value.
func (s *RegistryListItem) SetRegistryArn(v string) *RegistryListItem {
	s.RegistryArn = &v
	return s
}

// SetRegistryName sets the RegistryName field's value.
func (s *RegistryListItem) SetRegistryName(v string) *RegistryListItem {
	s.RegistryName = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *RegistryListItem) SetStatus(v string) *RegistryListItem {
	s.Status = &v
	return s
}

// SetUpdatedTime sets the UpdatedTime field's value.
func (s *RegistryListItem) SetUpdatedTime(v string) *RegistryListItem {
	s.UpdatedTime = &v
	return s
}

// Specifies a Relational database data source in the Glue Data Catalog.
type RelationalCatalogSource struct {
	_ struct{} `type:"structure"`

	// The name of the database to read from.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The name of the data source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// The name of the table in the database to read from.
	//
	// Table is a required field
	Table *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 RelationalCatalogSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RelationalCatalogSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RelationalCatalogSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RelationalCatalogSource"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *RelationalCatalogSource) SetDatabase(v string) *RelationalCatalogSource {
	s.Database = &v
	return s
}

// SetName sets the Name field's value.
func (s *RelationalCatalogSource) SetName(v string) *RelationalCatalogSource {
	s.Name = &v
	return s
}

// SetTable sets the Table field's value.
func (s *RelationalCatalogSource) SetTable(v string) *RelationalCatalogSource {
	s.Table = &v
	return s
}

type RemoveSchemaVersionMetadataInput struct {
	_ struct{} `type:"structure"`

	// The value of the metadata key.
	//
	// MetadataKeyValue is a required field
	MetadataKeyValue *MetadataKeyValuePair `type:"structure" required:"true"`

	// A wrapper structure that may contain the schema name and Amazon Resource
	// Name (ARN).
	SchemaId *SchemaId `type:"structure"`

	// The unique version ID of the schema version.
	SchemaVersionId *string `min:"36" type:"string"`

	// The version number of the schema.
	SchemaVersionNumber *SchemaVersionNumber `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RemoveSchemaVersionMetadataInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RemoveSchemaVersionMetadataInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RemoveSchemaVersionMetadataInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RemoveSchemaVersionMetadataInput"}
	if s.MetadataKeyValue == nil {
		invalidParams.Add(request.NewErrParamRequired("MetadataKeyValue"))
	}
	if s.SchemaVersionId != nil && len(*s.SchemaVersionId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("SchemaVersionId", 36))
	}
	if s.MetadataKeyValue != nil {
		if err := s.MetadataKeyValue.Validate(); err != nil {
			invalidParams.AddNested("MetadataKeyValue", err.(request.ErrInvalidParams))
		}
	}
	if s.SchemaId != nil {
		if err := s.SchemaId.Validate(); err != nil {
			invalidParams.AddNested("SchemaId", err.(request.ErrInvalidParams))
		}
	}
	if s.SchemaVersionNumber != nil {
		if err := s.SchemaVersionNumber.Validate(); err != nil {
			invalidParams.AddNested("SchemaVersionNumber", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMetadataKeyValue sets the MetadataKeyValue field's value.
func (s *RemoveSchemaVersionMetadataInput) SetMetadataKeyValue(v *MetadataKeyValuePair) *RemoveSchemaVersionMetadataInput {
	s.MetadataKeyValue = v
	return s
}

// SetSchemaId sets the SchemaId field's value.
func (s *RemoveSchemaVersionMetadataInput) SetSchemaId(v *SchemaId) *RemoveSchemaVersionMetadataInput {
	s.SchemaId = v
	return s
}

// SetSchemaVersionId sets the SchemaVersionId field's value.
func (s *RemoveSchemaVersionMetadataInput) SetSchemaVersionId(v string) *RemoveSchemaVersionMetadataInput {
	s.SchemaVersionId = &v
	return s
}

// SetSchemaVersionNumber sets the SchemaVersionNumber field's value.
func (s *RemoveSchemaVersionMetadataInput) SetSchemaVersionNumber(v *SchemaVersionNumber) *RemoveSchemaVersionMetadataInput {
	s.SchemaVersionNumber = v
	return s
}

type RemoveSchemaVersionMetadataOutput struct {
	_ struct{} `type:"structure"`

	// The latest version of the schema.
	LatestVersion *bool `type:"boolean"`

	// The metadata key.
	MetadataKey *string `min:"1" type:"string"`

	// The value of the metadata key.
	MetadataValue *string `min:"1" type:"string"`

	// The name of the registry.
	RegistryName *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the schema.
	SchemaArn *string `min:"1" type:"string"`

	// The name of the schema.
	SchemaName *string `min:"1" type:"string"`

	// The version ID for the schema version.
	SchemaVersionId *string `min:"36" type:"string"`

	// The version number of the schema.
	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 RemoveSchemaVersionMetadataOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RemoveSchemaVersionMetadataOutput) GoString() string {
	return s.String()
}

// SetLatestVersion sets the LatestVersion field's value.
func (s *RemoveSchemaVersionMetadataOutput) SetLatestVersion(v bool) *RemoveSchemaVersionMetadataOutput {
	s.LatestVersion = &v
	return s
}

// SetMetadataKey sets the MetadataKey field's value.
func (s *RemoveSchemaVersionMetadataOutput) SetMetadataKey(v string) *RemoveSchemaVersionMetadataOutput {
	s.MetadataKey = &v
	return s
}

// SetMetadataValue sets the MetadataValue field's value.
func (s *RemoveSchemaVersionMetadataOutput) SetMetadataValue(v string) *RemoveSchemaVersionMetadataOutput {
	s.MetadataValue = &v
	return s
}

// SetRegistryName sets the RegistryName field's value.
func (s *RemoveSchemaVersionMetadataOutput) SetRegistryName(v string) *RemoveSchemaVersionMetadataOutput {
	s.RegistryName = &v
	return s
}

// SetSchemaArn sets the SchemaArn field's value.
func (s *RemoveSchemaVersionMetadataOutput) SetSchemaArn(v string) *RemoveSchemaVersionMetadataOutput {
	s.SchemaArn = &v
	return s
}

// SetSchemaName sets the SchemaName field's value.
func (s *RemoveSchemaVersionMetadataOutput) SetSchemaName(v string) *RemoveSchemaVersionMetadataOutput {
	s.SchemaName = &v
	return s
}

// SetSchemaVersionId sets the SchemaVersionId field's value.
func (s *RemoveSchemaVersionMetadataOutput) SetSchemaVersionId(v string) *RemoveSchemaVersionMetadataOutput {
	s.SchemaVersionId = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *RemoveSchemaVersionMetadataOutput) SetVersionNumber(v int64) *RemoveSchemaVersionMetadataOutput {
	s.VersionNumber = &v
	return s
}

// Specifies a transform that renames a single data property key.
type RenameField struct {
	_ struct{} `type:"structure"`

	// The data inputs identified by their node names.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// A JSON path to a variable in the data structure for the source data.
	//
	// SourcePath is a required field
	SourcePath []*string `type:"list" required:"true"`

	// A JSON path to a variable in the data structure for the target data.
	//
	// TargetPath is a required field
	TargetPath []*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 RenameField) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RenameField) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RenameField) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RenameField"}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.SourcePath == nil {
		invalidParams.Add(request.NewErrParamRequired("SourcePath"))
	}
	if s.TargetPath == nil {
		invalidParams.Add(request.NewErrParamRequired("TargetPath"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInputs sets the Inputs field's value.
func (s *RenameField) SetInputs(v []*string) *RenameField {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *RenameField) SetName(v string) *RenameField {
	s.Name = &v
	return s
}

// SetSourcePath sets the SourcePath field's value.
func (s *RenameField) SetSourcePath(v []*string) *RenameField {
	s.SourcePath = v
	return s
}

// SetTargetPath sets the TargetPath field's value.
func (s *RenameField) SetTargetPath(v []*string) *RenameField {
	s.TargetPath = v
	return s
}

type ResetJobBookmarkInput struct {
	_ struct{} `type:"structure"`

	// The name of the job in question.
	//
	// JobName is a required field
	JobName *string `type:"string" required:"true"`

	// The unique run identifier associated with this job run.
	RunId *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 ResetJobBookmarkInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResetJobBookmarkInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ResetJobBookmarkInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ResetJobBookmarkInput"}
	if s.JobName == nil {
		invalidParams.Add(request.NewErrParamRequired("JobName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetJobName sets the JobName field's value.
func (s *ResetJobBookmarkInput) SetJobName(v string) *ResetJobBookmarkInput {
	s.JobName = &v
	return s
}

// SetRunId sets the RunId field's value.
func (s *ResetJobBookmarkInput) SetRunId(v string) *ResetJobBookmarkInput {
	s.RunId = &v
	return s
}

type ResetJobBookmarkOutput struct {
	_ struct{} `type:"structure"`

	// The reset bookmark entry.
	JobBookmarkEntry *JobBookmarkEntry `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResetJobBookmarkOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResetJobBookmarkOutput) GoString() string {
	return s.String()
}

// SetJobBookmarkEntry sets the JobBookmarkEntry field's value.
func (s *ResetJobBookmarkOutput) SetJobBookmarkEntry(v *JobBookmarkEntry) *ResetJobBookmarkOutput {
	s.JobBookmarkEntry = v
	return s
}

// A resource was not ready for a transaction.
type ResourceNotReadyException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotReadyException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotReadyException) GoString() string {
	return s.String()
}

func newErrorResourceNotReadyException(v protocol.ResponseMetadata) error {
	return &ResourceNotReadyException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceNotReadyException) Code() string {
	return "ResourceNotReadyException"
}

// Message returns the exception's message.
func (s *ResourceNotReadyException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceNotReadyException) OrigErr() error {
	return nil
}

func (s *ResourceNotReadyException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ResourceNotReadyException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceNotReadyException) RequestID() string {
	return s.RespMetadata.RequestID
}

// A resource numerical limit was exceeded.
type ResourceNumberLimitExceededException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNumberLimitExceededException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNumberLimitExceededException) GoString() string {
	return s.String()
}

func newErrorResourceNumberLimitExceededException(v protocol.ResponseMetadata) error {
	return &ResourceNumberLimitExceededException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceNumberLimitExceededException) Code() string {
	return "ResourceNumberLimitExceededException"
}

// Message returns the exception's message.
func (s *ResourceNumberLimitExceededException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceNumberLimitExceededException) OrigErr() error {
	return nil
}

func (s *ResourceNumberLimitExceededException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ResourceNumberLimitExceededException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceNumberLimitExceededException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The URIs for function resources.
type ResourceUri struct {
	_ struct{} `type:"structure"`

	// The type of the resource.
	ResourceType *string `type:"string" enum:"ResourceType"`

	// The URI for accessing the resource.
	Uri *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 ResourceUri) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceUri) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ResourceUri) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ResourceUri"}
	if s.Uri != nil && len(*s.Uri) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Uri", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceType sets the ResourceType field's value.
func (s *ResourceUri) SetResourceType(v string) *ResourceUri {
	s.ResourceType = &v
	return s
}

// SetUri sets the Uri field's value.
func (s *ResourceUri) SetUri(v string) *ResourceUri {
	s.Uri = &v
	return s
}

type ResumeWorkflowRunInput struct {
	_ struct{} `type:"structure"`

	// The name of the workflow to resume.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A list of the node IDs for the nodes you want to restart. The nodes that
	// are to be restarted must have a run attempt in the original run.
	//
	// NodeIds is a required field
	NodeIds []*string `type:"list" required:"true"`

	// The ID of the workflow run to resume.
	//
	// RunId is a required field
	RunId *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 ResumeWorkflowRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResumeWorkflowRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ResumeWorkflowRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ResumeWorkflowRunInput"}
	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.NodeIds == nil {
		invalidParams.Add(request.NewErrParamRequired("NodeIds"))
	}
	if s.RunId == nil {
		invalidParams.Add(request.NewErrParamRequired("RunId"))
	}
	if s.RunId != nil && len(*s.RunId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RunId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *ResumeWorkflowRunInput) SetName(v string) *ResumeWorkflowRunInput {
	s.Name = &v
	return s
}

// SetNodeIds sets the NodeIds field's value.
func (s *ResumeWorkflowRunInput) SetNodeIds(v []*string) *ResumeWorkflowRunInput {
	s.NodeIds = v
	return s
}

// SetRunId sets the RunId field's value.
func (s *ResumeWorkflowRunInput) SetRunId(v string) *ResumeWorkflowRunInput {
	s.RunId = &v
	return s
}

type ResumeWorkflowRunOutput struct {
	_ struct{} `type:"structure"`

	// A list of the node IDs for the nodes that were actually restarted.
	NodeIds []*string `type:"list"`

	// The new ID assigned to the resumed workflow run. Each resume of a workflow
	// run will have a new run ID.
	RunId *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 ResumeWorkflowRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResumeWorkflowRunOutput) GoString() string {
	return s.String()
}

// SetNodeIds sets the NodeIds field's value.
func (s *ResumeWorkflowRunOutput) SetNodeIds(v []*string) *ResumeWorkflowRunOutput {
	s.NodeIds = v
	return s
}

// SetRunId sets the RunId field's value.
func (s *ResumeWorkflowRunOutput) SetRunId(v string) *ResumeWorkflowRunOutput {
	s.RunId = &v
	return s
}

// Metrics for the optimizer run.
type RunMetrics struct {
	_ struct{} `type:"structure"`

	// The duration of the job in hours.
	JobDurationInHour *string `type:"string"`

	// The number of bytes removed by the compaction job run.
	NumberOfBytesCompacted *string `type:"string"`

	// The number of DPU hours consumed by the job.
	NumberOfDpus *string `type:"string"`

	// The number of files removed by the compaction job run.
	NumberOfFilesCompacted *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 RunMetrics) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RunMetrics) GoString() string {
	return s.String()
}

// SetJobDurationInHour sets the JobDurationInHour field's value.
func (s *RunMetrics) SetJobDurationInHour(v string) *RunMetrics {
	s.JobDurationInHour = &v
	return s
}

// SetNumberOfBytesCompacted sets the NumberOfBytesCompacted field's value.
func (s *RunMetrics) SetNumberOfBytesCompacted(v string) *RunMetrics {
	s.NumberOfBytesCompacted = &v
	return s
}

// SetNumberOfDpus sets the NumberOfDpus field's value.
func (s *RunMetrics) SetNumberOfDpus(v string) *RunMetrics {
	s.NumberOfDpus = &v
	return s
}

// SetNumberOfFilesCompacted sets the NumberOfFilesCompacted field's value.
func (s *RunMetrics) SetNumberOfFilesCompacted(v string) *RunMetrics {
	s.NumberOfFilesCompacted = &v
	return s
}

type RunStatementInput struct {
	_ struct{} `type:"structure"`

	// The statement code to be run.
	//
	// Code is a required field
	Code *string `type:"string" required:"true"`

	// The origin of the request.
	RequestOrigin *string `min:"1" type:"string"`

	// The Session Id of the statement to be run.
	//
	// SessionId is a required field
	SessionId *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 RunStatementInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RunStatementInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RunStatementInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RunStatementInput"}
	if s.Code == nil {
		invalidParams.Add(request.NewErrParamRequired("Code"))
	}
	if s.RequestOrigin != nil && len(*s.RequestOrigin) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RequestOrigin", 1))
	}
	if s.SessionId == nil {
		invalidParams.Add(request.NewErrParamRequired("SessionId"))
	}
	if s.SessionId != nil && len(*s.SessionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SessionId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCode sets the Code field's value.
func (s *RunStatementInput) SetCode(v string) *RunStatementInput {
	s.Code = &v
	return s
}

// SetRequestOrigin sets the RequestOrigin field's value.
func (s *RunStatementInput) SetRequestOrigin(v string) *RunStatementInput {
	s.RequestOrigin = &v
	return s
}

// SetSessionId sets the SessionId field's value.
func (s *RunStatementInput) SetSessionId(v string) *RunStatementInput {
	s.SessionId = &v
	return s
}

type RunStatementOutput struct {
	_ struct{} `type:"structure"`

	// Returns the Id of the statement that was run.
	Id *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 RunStatementOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RunStatementOutput) GoString() string {
	return s.String()
}

// SetId sets the Id field's value.
func (s *RunStatementOutput) SetId(v int64) *RunStatementOutput {
	s.Id = &v
	return s
}

// Specifies a Delta Lake data source that is registered in the Glue Data Catalog.
// The data source must be stored in Amazon S3.
type S3CatalogDeltaSource struct {
	_ struct{} `type:"structure"`

	// Specifies additional connection options.
	AdditionalDeltaOptions map[string]*string `type:"map"`

	// The name of the database to read from.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The name of the Delta Lake data source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the data schema for the Delta Lake source.
	OutputSchemas []*GlueSchema `type:"list"`

	// The name of the table in the database to read from.
	//
	// Table is a required field
	Table *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 S3CatalogDeltaSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3CatalogDeltaSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3CatalogDeltaSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3CatalogDeltaSource"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}
	if s.OutputSchemas != nil {
		for i, v := range s.OutputSchemas {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputSchemas", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalDeltaOptions sets the AdditionalDeltaOptions field's value.
func (s *S3CatalogDeltaSource) SetAdditionalDeltaOptions(v map[string]*string) *S3CatalogDeltaSource {
	s.AdditionalDeltaOptions = v
	return s
}

// SetDatabase sets the Database field's value.
func (s *S3CatalogDeltaSource) SetDatabase(v string) *S3CatalogDeltaSource {
	s.Database = &v
	return s
}

// SetName sets the Name field's value.
func (s *S3CatalogDeltaSource) SetName(v string) *S3CatalogDeltaSource {
	s.Name = &v
	return s
}

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *S3CatalogDeltaSource) SetOutputSchemas(v []*GlueSchema) *S3CatalogDeltaSource {
	s.OutputSchemas = v
	return s
}

// SetTable sets the Table field's value.
func (s *S3CatalogDeltaSource) SetTable(v string) *S3CatalogDeltaSource {
	s.Table = &v
	return s
}

// Specifies a Hudi data source that is registered in the Glue Data Catalog.
// The Hudi data source must be stored in Amazon S3.
type S3CatalogHudiSource struct {
	_ struct{} `type:"structure"`

	// Specifies additional connection options.
	AdditionalHudiOptions map[string]*string `type:"map"`

	// The name of the database to read from.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The name of the Hudi data source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the data schema for the Hudi source.
	OutputSchemas []*GlueSchema `type:"list"`

	// The name of the table in the database to read from.
	//
	// Table is a required field
	Table *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 S3CatalogHudiSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3CatalogHudiSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3CatalogHudiSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3CatalogHudiSource"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}
	if s.OutputSchemas != nil {
		for i, v := range s.OutputSchemas {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputSchemas", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalHudiOptions sets the AdditionalHudiOptions field's value.
func (s *S3CatalogHudiSource) SetAdditionalHudiOptions(v map[string]*string) *S3CatalogHudiSource {
	s.AdditionalHudiOptions = v
	return s
}

// SetDatabase sets the Database field's value.
func (s *S3CatalogHudiSource) SetDatabase(v string) *S3CatalogHudiSource {
	s.Database = &v
	return s
}

// SetName sets the Name field's value.
func (s *S3CatalogHudiSource) SetName(v string) *S3CatalogHudiSource {
	s.Name = &v
	return s
}

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *S3CatalogHudiSource) SetOutputSchemas(v []*GlueSchema) *S3CatalogHudiSource {
	s.OutputSchemas = v
	return s
}

// SetTable sets the Table field's value.
func (s *S3CatalogHudiSource) SetTable(v string) *S3CatalogHudiSource {
	s.Table = &v
	return s
}

// Specifies an Amazon S3 data store in the Glue Data Catalog.
type S3CatalogSource struct {
	_ struct{} `type:"structure"`

	// Specifies additional connection options.
	AdditionalOptions *S3SourceAdditionalOptions `type:"structure"`

	// The database to read from.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The name of the data store.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Partitions satisfying this predicate are deleted. Files within the retention
	// period in these partitions are not deleted. Set to "" – empty by default.
	PartitionPredicate *string `type:"string"`

	// The database table to read from.
	//
	// Table is a required field
	Table *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 S3CatalogSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3CatalogSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3CatalogSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3CatalogSource"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *S3CatalogSource) SetAdditionalOptions(v *S3SourceAdditionalOptions) *S3CatalogSource {
	s.AdditionalOptions = v
	return s
}

// SetDatabase sets the Database field's value.
func (s *S3CatalogSource) SetDatabase(v string) *S3CatalogSource {
	s.Database = &v
	return s
}

// SetName sets the Name field's value.
func (s *S3CatalogSource) SetName(v string) *S3CatalogSource {
	s.Name = &v
	return s
}

// SetPartitionPredicate sets the PartitionPredicate field's value.
func (s *S3CatalogSource) SetPartitionPredicate(v string) *S3CatalogSource {
	s.PartitionPredicate = &v
	return s
}

// SetTable sets the Table field's value.
func (s *S3CatalogSource) SetTable(v string) *S3CatalogSource {
	s.Table = &v
	return s
}

// Specifies a data target that writes to Amazon S3 using the Glue Data Catalog.
type S3CatalogTarget struct {
	_ struct{} `type:"structure"`

	// The name of the database to write to.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The nodes that are inputs to the data target.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data target.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies native partitioning using a sequence of keys.
	PartitionKeys [][]*string `type:"list"`

	// A policy that specifies update behavior for the crawler.
	SchemaChangePolicy *CatalogSchemaChangePolicy `type:"structure"`

	// The name of the table in the database to write to.
	//
	// Table is a required field
	Table *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 S3CatalogTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3CatalogTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3CatalogTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3CatalogTarget"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabase sets the Database field's value.
func (s *S3CatalogTarget) SetDatabase(v string) *S3CatalogTarget {
	s.Database = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *S3CatalogTarget) SetInputs(v []*string) *S3CatalogTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *S3CatalogTarget) SetName(v string) *S3CatalogTarget {
	s.Name = &v
	return s
}

// SetPartitionKeys sets the PartitionKeys field's value.
func (s *S3CatalogTarget) SetPartitionKeys(v [][]*string) *S3CatalogTarget {
	s.PartitionKeys = v
	return s
}

// SetSchemaChangePolicy sets the SchemaChangePolicy field's value.
func (s *S3CatalogTarget) SetSchemaChangePolicy(v *CatalogSchemaChangePolicy) *S3CatalogTarget {
	s.SchemaChangePolicy = v
	return s
}

// SetTable sets the Table field's value.
func (s *S3CatalogTarget) SetTable(v string) *S3CatalogTarget {
	s.Table = &v
	return s
}

// Specifies a command-separated value (CSV) data store stored in Amazon S3.
type S3CsvSource struct {
	_ struct{} `type:"structure"`

	// Specifies additional connection options.
	AdditionalOptions *S3DirectSourceAdditionalOptions `type:"structure"`

	// Specifies how the data is compressed. This is generally not necessary if
	// the data has a standard file extension. Possible values are "gzip" and "bzip").
	CompressionType *string `type:"string" enum:"CompressionType"`

	// Specifies a character to use for escaping. This option is used only when
	// reading CSV files. The default value is none. If enabled, the character which
	// immediately follows is used as-is, except for a small set of well-known escapes
	// (\n, \r, \t, and \0).
	Escaper *string `type:"string"`

	// A string containing a JSON list of Unix-style glob patterns to exclude. For
	// example, "[\"**.pdf\"]" excludes all PDF files.
	Exclusions []*string `type:"list"`

	// Grouping files is turned on by default when the input contains more than
	// 50,000 files. To turn on grouping with fewer than 50,000 files, set this
	// parameter to "inPartition". To disable grouping when there are more than
	// 50,000 files, set this parameter to "none".
	GroupFiles *string `type:"string"`

	// The target group size in bytes. The default is computed based on the input
	// data size and the size of your cluster. When there are fewer than 50,000
	// input files, "groupFiles" must be set to "inPartition" for this to take effect.
	GroupSize *string `type:"string"`

	// This option controls the duration in milliseconds after which the s3 listing
	// is likely to be consistent. Files with modification timestamps falling within
	// the last maxBand milliseconds are tracked specially when using JobBookmarks
	// to account for Amazon S3 eventual consistency. Most users don't need to set
	// this option. The default is 900000 milliseconds, or 15 minutes.
	MaxBand *int64 `type:"integer"`

	// This option specifies the maximum number of files to save from the last maxBand
	// seconds. If this number is exceeded, extra files are skipped and only processed
	// in the next job run.
	MaxFilesInBand *int64 `type:"integer"`

	// A Boolean value that specifies whether a single record can span multiple
	// lines. This can occur when a field contains a quoted new-line character.
	// You must set this option to True if any record spans multiple lines. The
	// default value is False, which allows for more aggressive file-splitting during
	// parsing.
	Multiline *bool `type:"boolean"`

	// The name of the data store.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// A Boolean value that specifies whether to use the advanced SIMD CSV reader
	// along with Apache Arrow based columnar memory formats. Only available in
	// Glue version 3.0.
	OptimizePerformance *bool `type:"boolean"`

	// Specifies the data schema for the S3 CSV source.
	OutputSchemas []*GlueSchema `type:"list"`

	// A list of the Amazon S3 paths to read from.
	//
	// Paths is a required field
	Paths []*string `type:"list" required:"true"`

	// Specifies the character to use for quoting. The default is a double quote:
	// '"'. Set this to -1 to turn off quoting entirely.
	//
	// QuoteChar is a required field
	QuoteChar *string `type:"string" required:"true" enum:"QuoteChar"`

	// If set to true, recursively reads files in all subdirectories under the specified
	// paths.
	Recurse *bool `type:"boolean"`

	// Specifies the delimiter character. The default is a comma: ",", but any other
	// character can be specified.
	//
	// Separator is a required field
	Separator *string `type:"string" required:"true" enum:"Separator"`

	// A Boolean value that specifies whether to skip the first data line. The default
	// value is False.
	SkipFirst *bool `type:"boolean"`

	// A Boolean value that specifies whether to treat the first line as a header.
	// The default value is False.
	WithHeader *bool `type:"boolean"`

	// A Boolean value that specifies whether to write the header to output. The
	// default value is True.
	WriteHeader *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 S3CsvSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3CsvSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3CsvSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3CsvSource"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Paths == nil {
		invalidParams.Add(request.NewErrParamRequired("Paths"))
	}
	if s.QuoteChar == nil {
		invalidParams.Add(request.NewErrParamRequired("QuoteChar"))
	}
	if s.Separator == nil {
		invalidParams.Add(request.NewErrParamRequired("Separator"))
	}
	if s.OutputSchemas != nil {
		for i, v := range s.OutputSchemas {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputSchemas", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *S3CsvSource) SetAdditionalOptions(v *S3DirectSourceAdditionalOptions) *S3CsvSource {
	s.AdditionalOptions = v
	return s
}

// SetCompressionType sets the CompressionType field's value.
func (s *S3CsvSource) SetCompressionType(v string) *S3CsvSource {
	s.CompressionType = &v
	return s
}

// SetEscaper sets the Escaper field's value.
func (s *S3CsvSource) SetEscaper(v string) *S3CsvSource {
	s.Escaper = &v
	return s
}

// SetExclusions sets the Exclusions field's value.
func (s *S3CsvSource) SetExclusions(v []*string) *S3CsvSource {
	s.Exclusions = v
	return s
}

// SetGroupFiles sets the GroupFiles field's value.
func (s *S3CsvSource) SetGroupFiles(v string) *S3CsvSource {
	s.GroupFiles = &v
	return s
}

// SetGroupSize sets the GroupSize field's value.
func (s *S3CsvSource) SetGroupSize(v string) *S3CsvSource {
	s.GroupSize = &v
	return s
}

// SetMaxBand sets the MaxBand field's value.
func (s *S3CsvSource) SetMaxBand(v int64) *S3CsvSource {
	s.MaxBand = &v
	return s
}

// SetMaxFilesInBand sets the MaxFilesInBand field's value.
func (s *S3CsvSource) SetMaxFilesInBand(v int64) *S3CsvSource {
	s.MaxFilesInBand = &v
	return s
}

// SetMultiline sets the Multiline field's value.
func (s *S3CsvSource) SetMultiline(v bool) *S3CsvSource {
	s.Multiline = &v
	return s
}

// SetName sets the Name field's value.
func (s *S3CsvSource) SetName(v string) *S3CsvSource {
	s.Name = &v
	return s
}

// SetOptimizePerformance sets the OptimizePerformance field's value.
func (s *S3CsvSource) SetOptimizePerformance(v bool) *S3CsvSource {
	s.OptimizePerformance = &v
	return s
}

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *S3CsvSource) SetOutputSchemas(v []*GlueSchema) *S3CsvSource {
	s.OutputSchemas = v
	return s
}

// SetPaths sets the Paths field's value.
func (s *S3CsvSource) SetPaths(v []*string) *S3CsvSource {
	s.Paths = v
	return s
}

// SetQuoteChar sets the QuoteChar field's value.
func (s *S3CsvSource) SetQuoteChar(v string) *S3CsvSource {
	s.QuoteChar = &v
	return s
}

// SetRecurse sets the Recurse field's value.
func (s *S3CsvSource) SetRecurse(v bool) *S3CsvSource {
	s.Recurse = &v
	return s
}

// SetSeparator sets the Separator field's value.
func (s *S3CsvSource) SetSeparator(v string) *S3CsvSource {
	s.Separator = &v
	return s
}

// SetSkipFirst sets the SkipFirst field's value.
func (s *S3CsvSource) SetSkipFirst(v bool) *S3CsvSource {
	s.SkipFirst = &v
	return s
}

// SetWithHeader sets the WithHeader field's value.
func (s *S3CsvSource) SetWithHeader(v bool) *S3CsvSource {
	s.WithHeader = &v
	return s
}

// SetWriteHeader sets the WriteHeader field's value.
func (s *S3CsvSource) SetWriteHeader(v bool) *S3CsvSource {
	s.WriteHeader = &v
	return s
}

// Specifies a target that writes to a Delta Lake data source in the Glue Data
// Catalog.
type S3DeltaCatalogTarget struct {
	_ struct{} `type:"structure"`

	// Specifies additional connection options for the connector.
	AdditionalOptions map[string]*string `type:"map"`

	// The name of the database to write to.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The nodes that are inputs to the data target.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data target.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies native partitioning using a sequence of keys.
	PartitionKeys [][]*string `type:"list"`

	// A policy that specifies update behavior for the crawler.
	SchemaChangePolicy *CatalogSchemaChangePolicy `type:"structure"`

	// The name of the table in the database to write to.
	//
	// Table is a required field
	Table *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 S3DeltaCatalogTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3DeltaCatalogTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3DeltaCatalogTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3DeltaCatalogTarget"}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *S3DeltaCatalogTarget) SetAdditionalOptions(v map[string]*string) *S3DeltaCatalogTarget {
	s.AdditionalOptions = v
	return s
}

// SetDatabase sets the Database field's value.
func (s *S3DeltaCatalogTarget) SetDatabase(v string) *S3DeltaCatalogTarget {
	s.Database = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *S3DeltaCatalogTarget) SetInputs(v []*string) *S3DeltaCatalogTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *S3DeltaCatalogTarget) SetName(v string) *S3DeltaCatalogTarget {
	s.Name = &v
	return s
}

// SetPartitionKeys sets the PartitionKeys field's value.
func (s *S3DeltaCatalogTarget) SetPartitionKeys(v [][]*string) *S3DeltaCatalogTarget {
	s.PartitionKeys = v
	return s
}

// SetSchemaChangePolicy sets the SchemaChangePolicy field's value.
func (s *S3DeltaCatalogTarget) SetSchemaChangePolicy(v *CatalogSchemaChangePolicy) *S3DeltaCatalogTarget {
	s.SchemaChangePolicy = v
	return s
}

// SetTable sets the Table field's value.
func (s *S3DeltaCatalogTarget) SetTable(v string) *S3DeltaCatalogTarget {
	s.Table = &v
	return s
}

// Specifies a target that writes to a Delta Lake data source in Amazon S3.
type S3DeltaDirectTarget struct {
	_ struct{} `type:"structure"`

	// Specifies additional connection options for the connector.
	AdditionalOptions map[string]*string `type:"map"`

	// Specifies how the data is compressed. This is generally not necessary if
	// the data has a standard file extension. Possible values are "gzip" and "bzip").
	//
	// Compression is a required field
	Compression *string `type:"string" required:"true" enum:"DeltaTargetCompressionType"`

	// Specifies the data output format for the target.
	//
	// Format is a required field
	Format *string `type:"string" required:"true" enum:"TargetFormat"`

	// The nodes that are inputs to the data target.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data target.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies native partitioning using a sequence of keys.
	PartitionKeys [][]*string `type:"list"`

	// The Amazon S3 path of your Delta Lake data source to write to.
	//
	// Path is a required field
	Path *string `type:"string" required:"true"`

	// A policy that specifies update behavior for the crawler.
	SchemaChangePolicy *DirectSchemaChangePolicy `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3DeltaDirectTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3DeltaDirectTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3DeltaDirectTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3DeltaDirectTarget"}
	if s.Compression == nil {
		invalidParams.Add(request.NewErrParamRequired("Compression"))
	}
	if s.Format == nil {
		invalidParams.Add(request.NewErrParamRequired("Format"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Path == nil {
		invalidParams.Add(request.NewErrParamRequired("Path"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *S3DeltaDirectTarget) SetAdditionalOptions(v map[string]*string) *S3DeltaDirectTarget {
	s.AdditionalOptions = v
	return s
}

// SetCompression sets the Compression field's value.
func (s *S3DeltaDirectTarget) SetCompression(v string) *S3DeltaDirectTarget {
	s.Compression = &v
	return s
}

// SetFormat sets the Format field's value.
func (s *S3DeltaDirectTarget) SetFormat(v string) *S3DeltaDirectTarget {
	s.Format = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *S3DeltaDirectTarget) SetInputs(v []*string) *S3DeltaDirectTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *S3DeltaDirectTarget) SetName(v string) *S3DeltaDirectTarget {
	s.Name = &v
	return s
}

// SetPartitionKeys sets the PartitionKeys field's value.
func (s *S3DeltaDirectTarget) SetPartitionKeys(v [][]*string) *S3DeltaDirectTarget {
	s.PartitionKeys = v
	return s
}

// SetPath sets the Path field's value.
func (s *S3DeltaDirectTarget) SetPath(v string) *S3DeltaDirectTarget {
	s.Path = &v
	return s
}

// SetSchemaChangePolicy sets the SchemaChangePolicy field's value.
func (s *S3DeltaDirectTarget) SetSchemaChangePolicy(v *DirectSchemaChangePolicy) *S3DeltaDirectTarget {
	s.SchemaChangePolicy = v
	return s
}

// Specifies a Delta Lake data source stored in Amazon S3.
type S3DeltaSource struct {
	_ struct{} `type:"structure"`

	// Specifies additional connection options.
	AdditionalDeltaOptions map[string]*string `type:"map"`

	// Specifies additional options for the connector.
	AdditionalOptions *S3DirectSourceAdditionalOptions `type:"structure"`

	// The name of the Delta Lake source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the data schema for the Delta Lake source.
	OutputSchemas []*GlueSchema `type:"list"`

	// A list of the Amazon S3 paths to read from.
	//
	// Paths is a required field
	Paths []*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 S3DeltaSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3DeltaSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3DeltaSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3DeltaSource"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Paths == nil {
		invalidParams.Add(request.NewErrParamRequired("Paths"))
	}
	if s.OutputSchemas != nil {
		for i, v := range s.OutputSchemas {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputSchemas", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalDeltaOptions sets the AdditionalDeltaOptions field's value.
func (s *S3DeltaSource) SetAdditionalDeltaOptions(v map[string]*string) *S3DeltaSource {
	s.AdditionalDeltaOptions = v
	return s
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *S3DeltaSource) SetAdditionalOptions(v *S3DirectSourceAdditionalOptions) *S3DeltaSource {
	s.AdditionalOptions = v
	return s
}

// SetName sets the Name field's value.
func (s *S3DeltaSource) SetName(v string) *S3DeltaSource {
	s.Name = &v
	return s
}

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *S3DeltaSource) SetOutputSchemas(v []*GlueSchema) *S3DeltaSource {
	s.OutputSchemas = v
	return s
}

// SetPaths sets the Paths field's value.
func (s *S3DeltaSource) SetPaths(v []*string) *S3DeltaSource {
	s.Paths = v
	return s
}

// Specifies additional connection options for the Amazon S3 data store.
type S3DirectSourceAdditionalOptions struct {
	_ struct{} `type:"structure"`

	// Sets the upper limit for the target number of files that will be processed.
	BoundedFiles *int64 `type:"long"`

	// Sets the upper limit for the target size of the dataset in bytes that will
	// be processed.
	BoundedSize *int64 `type:"long"`

	// Sets option to enable a sample path.
	EnableSamplePath *bool `type:"boolean"`

	// If enabled, specifies the sample path.
	SamplePath *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 S3DirectSourceAdditionalOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3DirectSourceAdditionalOptions) GoString() string {
	return s.String()
}

// SetBoundedFiles sets the BoundedFiles field's value.
func (s *S3DirectSourceAdditionalOptions) SetBoundedFiles(v int64) *S3DirectSourceAdditionalOptions {
	s.BoundedFiles = &v
	return s
}

// SetBoundedSize sets the BoundedSize field's value.
func (s *S3DirectSourceAdditionalOptions) SetBoundedSize(v int64) *S3DirectSourceAdditionalOptions {
	s.BoundedSize = &v
	return s
}

// SetEnableSamplePath sets the EnableSamplePath field's value.
func (s *S3DirectSourceAdditionalOptions) SetEnableSamplePath(v bool) *S3DirectSourceAdditionalOptions {
	s.EnableSamplePath = &v
	return s
}

// SetSamplePath sets the SamplePath field's value.
func (s *S3DirectSourceAdditionalOptions) SetSamplePath(v string) *S3DirectSourceAdditionalOptions {
	s.SamplePath = &v
	return s
}

// Specifies a data target that writes to Amazon S3.
type S3DirectTarget struct {
	_ struct{} `type:"structure"`

	// Specifies how the data is compressed. This is generally not necessary if
	// the data has a standard file extension. Possible values are "gzip" and "bzip").
	Compression *string `type:"string"`

	// Specifies the data output format for the target.
	//
	// Format is a required field
	Format *string `type:"string" required:"true" enum:"TargetFormat"`

	// The nodes that are inputs to the data target.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data target.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies native partitioning using a sequence of keys.
	PartitionKeys [][]*string `type:"list"`

	// A single Amazon S3 path to write to.
	//
	// Path is a required field
	Path *string `type:"string" required:"true"`

	// A policy that specifies update behavior for the crawler.
	SchemaChangePolicy *DirectSchemaChangePolicy `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3DirectTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3DirectTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3DirectTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3DirectTarget"}
	if s.Format == nil {
		invalidParams.Add(request.NewErrParamRequired("Format"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Path == nil {
		invalidParams.Add(request.NewErrParamRequired("Path"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCompression sets the Compression field's value.
func (s *S3DirectTarget) SetCompression(v string) *S3DirectTarget {
	s.Compression = &v
	return s
}

// SetFormat sets the Format field's value.
func (s *S3DirectTarget) SetFormat(v string) *S3DirectTarget {
	s.Format = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *S3DirectTarget) SetInputs(v []*string) *S3DirectTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *S3DirectTarget) SetName(v string) *S3DirectTarget {
	s.Name = &v
	return s
}

// SetPartitionKeys sets the PartitionKeys field's value.
func (s *S3DirectTarget) SetPartitionKeys(v [][]*string) *S3DirectTarget {
	s.PartitionKeys = v
	return s
}

// SetPath sets the Path field's value.
func (s *S3DirectTarget) SetPath(v string) *S3DirectTarget {
	s.Path = &v
	return s
}

// SetSchemaChangePolicy sets the SchemaChangePolicy field's value.
func (s *S3DirectTarget) SetSchemaChangePolicy(v *DirectSchemaChangePolicy) *S3DirectTarget {
	s.SchemaChangePolicy = v
	return s
}

// Specifies how Amazon Simple Storage Service (Amazon S3) data should be encrypted.
type S3Encryption struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the KMS key to be used to encrypt the data.
	KmsKeyArn *string `type:"string"`

	// The encryption mode to use for Amazon S3 data.
	S3EncryptionMode *string `type:"string" enum:"S3EncryptionMode"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3Encryption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3Encryption) GoString() string {
	return s.String()
}

// SetKmsKeyArn sets the KmsKeyArn field's value.
func (s *S3Encryption) SetKmsKeyArn(v string) *S3Encryption {
	s.KmsKeyArn = &v
	return s
}

// SetS3EncryptionMode sets the S3EncryptionMode field's value.
func (s *S3Encryption) SetS3EncryptionMode(v string) *S3Encryption {
	s.S3EncryptionMode = &v
	return s
}

// Specifies a data target that writes to Amazon S3 in Apache Parquet columnar
// storage.
type S3GlueParquetTarget struct {
	_ struct{} `type:"structure"`

	// Specifies how the data is compressed. This is generally not necessary if
	// the data has a standard file extension. Possible values are "gzip" and "bzip").
	Compression *string `type:"string" enum:"ParquetCompressionType"`

	// The nodes that are inputs to the data target.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data target.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies native partitioning using a sequence of keys.
	PartitionKeys [][]*string `type:"list"`

	// A single Amazon S3 path to write to.
	//
	// Path is a required field
	Path *string `type:"string" required:"true"`

	// A policy that specifies update behavior for the crawler.
	SchemaChangePolicy *DirectSchemaChangePolicy `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3GlueParquetTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3GlueParquetTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3GlueParquetTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3GlueParquetTarget"}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Path == nil {
		invalidParams.Add(request.NewErrParamRequired("Path"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCompression sets the Compression field's value.
func (s *S3GlueParquetTarget) SetCompression(v string) *S3GlueParquetTarget {
	s.Compression = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *S3GlueParquetTarget) SetInputs(v []*string) *S3GlueParquetTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *S3GlueParquetTarget) SetName(v string) *S3GlueParquetTarget {
	s.Name = &v
	return s
}

// SetPartitionKeys sets the PartitionKeys field's value.
func (s *S3GlueParquetTarget) SetPartitionKeys(v [][]*string) *S3GlueParquetTarget {
	s.PartitionKeys = v
	return s
}

// SetPath sets the Path field's value.
func (s *S3GlueParquetTarget) SetPath(v string) *S3GlueParquetTarget {
	s.Path = &v
	return s
}

// SetSchemaChangePolicy sets the SchemaChangePolicy field's value.
func (s *S3GlueParquetTarget) SetSchemaChangePolicy(v *DirectSchemaChangePolicy) *S3GlueParquetTarget {
	s.SchemaChangePolicy = v
	return s
}

// Specifies a target that writes to a Hudi data source in the Glue Data Catalog.
type S3HudiCatalogTarget struct {
	_ struct{} `type:"structure"`

	// Specifies additional connection options for the connector.
	//
	// AdditionalOptions is a required field
	AdditionalOptions map[string]*string `type:"map" required:"true"`

	// The name of the database to write to.
	//
	// Database is a required field
	Database *string `type:"string" required:"true"`

	// The nodes that are inputs to the data target.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data target.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies native partitioning using a sequence of keys.
	PartitionKeys [][]*string `type:"list"`

	// A policy that specifies update behavior for the crawler.
	SchemaChangePolicy *CatalogSchemaChangePolicy `type:"structure"`

	// The name of the table in the database to write to.
	//
	// Table is a required field
	Table *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 S3HudiCatalogTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3HudiCatalogTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3HudiCatalogTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3HudiCatalogTarget"}
	if s.AdditionalOptions == nil {
		invalidParams.Add(request.NewErrParamRequired("AdditionalOptions"))
	}
	if s.Database == nil {
		invalidParams.Add(request.NewErrParamRequired("Database"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Table == nil {
		invalidParams.Add(request.NewErrParamRequired("Table"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *S3HudiCatalogTarget) SetAdditionalOptions(v map[string]*string) *S3HudiCatalogTarget {
	s.AdditionalOptions = v
	return s
}

// SetDatabase sets the Database field's value.
func (s *S3HudiCatalogTarget) SetDatabase(v string) *S3HudiCatalogTarget {
	s.Database = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *S3HudiCatalogTarget) SetInputs(v []*string) *S3HudiCatalogTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *S3HudiCatalogTarget) SetName(v string) *S3HudiCatalogTarget {
	s.Name = &v
	return s
}

// SetPartitionKeys sets the PartitionKeys field's value.
func (s *S3HudiCatalogTarget) SetPartitionKeys(v [][]*string) *S3HudiCatalogTarget {
	s.PartitionKeys = v
	return s
}

// SetSchemaChangePolicy sets the SchemaChangePolicy field's value.
func (s *S3HudiCatalogTarget) SetSchemaChangePolicy(v *CatalogSchemaChangePolicy) *S3HudiCatalogTarget {
	s.SchemaChangePolicy = v
	return s
}

// SetTable sets the Table field's value.
func (s *S3HudiCatalogTarget) SetTable(v string) *S3HudiCatalogTarget {
	s.Table = &v
	return s
}

// Specifies a target that writes to a Hudi data source in Amazon S3.
type S3HudiDirectTarget struct {
	_ struct{} `type:"structure"`

	// Specifies additional connection options for the connector.
	//
	// AdditionalOptions is a required field
	AdditionalOptions map[string]*string `type:"map" required:"true"`

	// Specifies how the data is compressed. This is generally not necessary if
	// the data has a standard file extension. Possible values are "gzip" and "bzip").
	//
	// Compression is a required field
	Compression *string `type:"string" required:"true" enum:"HudiTargetCompressionType"`

	// Specifies the data output format for the target.
	//
	// Format is a required field
	Format *string `type:"string" required:"true" enum:"TargetFormat"`

	// The nodes that are inputs to the data target.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data target.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies native partitioning using a sequence of keys.
	PartitionKeys [][]*string `type:"list"`

	// The Amazon S3 path of your Hudi data source to write to.
	//
	// Path is a required field
	Path *string `type:"string" required:"true"`

	// A policy that specifies update behavior for the crawler.
	SchemaChangePolicy *DirectSchemaChangePolicy `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3HudiDirectTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3HudiDirectTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3HudiDirectTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3HudiDirectTarget"}
	if s.AdditionalOptions == nil {
		invalidParams.Add(request.NewErrParamRequired("AdditionalOptions"))
	}
	if s.Compression == nil {
		invalidParams.Add(request.NewErrParamRequired("Compression"))
	}
	if s.Format == nil {
		invalidParams.Add(request.NewErrParamRequired("Format"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Path == nil {
		invalidParams.Add(request.NewErrParamRequired("Path"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *S3HudiDirectTarget) SetAdditionalOptions(v map[string]*string) *S3HudiDirectTarget {
	s.AdditionalOptions = v
	return s
}

// SetCompression sets the Compression field's value.
func (s *S3HudiDirectTarget) SetCompression(v string) *S3HudiDirectTarget {
	s.Compression = &v
	return s
}

// SetFormat sets the Format field's value.
func (s *S3HudiDirectTarget) SetFormat(v string) *S3HudiDirectTarget {
	s.Format = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *S3HudiDirectTarget) SetInputs(v []*string) *S3HudiDirectTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *S3HudiDirectTarget) SetName(v string) *S3HudiDirectTarget {
	s.Name = &v
	return s
}

// SetPartitionKeys sets the PartitionKeys field's value.
func (s *S3HudiDirectTarget) SetPartitionKeys(v [][]*string) *S3HudiDirectTarget {
	s.PartitionKeys = v
	return s
}

// SetPath sets the Path field's value.
func (s *S3HudiDirectTarget) SetPath(v string) *S3HudiDirectTarget {
	s.Path = &v
	return s
}

// SetSchemaChangePolicy sets the SchemaChangePolicy field's value.
func (s *S3HudiDirectTarget) SetSchemaChangePolicy(v *DirectSchemaChangePolicy) *S3HudiDirectTarget {
	s.SchemaChangePolicy = v
	return s
}

// Specifies a Hudi data source stored in Amazon S3.
type S3HudiSource struct {
	_ struct{} `type:"structure"`

	// Specifies additional connection options.
	AdditionalHudiOptions map[string]*string `type:"map"`

	// Specifies additional options for the connector.
	AdditionalOptions *S3DirectSourceAdditionalOptions `type:"structure"`

	// The name of the Hudi source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the data schema for the Hudi source.
	OutputSchemas []*GlueSchema `type:"list"`

	// A list of the Amazon S3 paths to read from.
	//
	// Paths is a required field
	Paths []*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 S3HudiSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3HudiSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3HudiSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3HudiSource"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Paths == nil {
		invalidParams.Add(request.NewErrParamRequired("Paths"))
	}
	if s.OutputSchemas != nil {
		for i, v := range s.OutputSchemas {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputSchemas", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalHudiOptions sets the AdditionalHudiOptions field's value.
func (s *S3HudiSource) SetAdditionalHudiOptions(v map[string]*string) *S3HudiSource {
	s.AdditionalHudiOptions = v
	return s
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *S3HudiSource) SetAdditionalOptions(v *S3DirectSourceAdditionalOptions) *S3HudiSource {
	s.AdditionalOptions = v
	return s
}

// SetName sets the Name field's value.
func (s *S3HudiSource) SetName(v string) *S3HudiSource {
	s.Name = &v
	return s
}

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *S3HudiSource) SetOutputSchemas(v []*GlueSchema) *S3HudiSource {
	s.OutputSchemas = v
	return s
}

// SetPaths sets the Paths field's value.
func (s *S3HudiSource) SetPaths(v []*string) *S3HudiSource {
	s.Paths = v
	return s
}

// Specifies a JSON data store stored in Amazon S3.
type S3JsonSource struct {
	_ struct{} `type:"structure"`

	// Specifies additional connection options.
	AdditionalOptions *S3DirectSourceAdditionalOptions `type:"structure"`

	// Specifies how the data is compressed. This is generally not necessary if
	// the data has a standard file extension. Possible values are "gzip" and "bzip").
	CompressionType *string `type:"string" enum:"CompressionType"`

	// A string containing a JSON list of Unix-style glob patterns to exclude. For
	// example, "[\"**.pdf\"]" excludes all PDF files.
	Exclusions []*string `type:"list"`

	// Grouping files is turned on by default when the input contains more than
	// 50,000 files. To turn on grouping with fewer than 50,000 files, set this
	// parameter to "inPartition". To disable grouping when there are more than
	// 50,000 files, set this parameter to "none".
	GroupFiles *string `type:"string"`

	// The target group size in bytes. The default is computed based on the input
	// data size and the size of your cluster. When there are fewer than 50,000
	// input files, "groupFiles" must be set to "inPartition" for this to take effect.
	GroupSize *string `type:"string"`

	// A JsonPath string defining the JSON data.
	JsonPath *string `type:"string"`

	// This option controls the duration in milliseconds after which the s3 listing
	// is likely to be consistent. Files with modification timestamps falling within
	// the last maxBand milliseconds are tracked specially when using JobBookmarks
	// to account for Amazon S3 eventual consistency. Most users don't need to set
	// this option. The default is 900000 milliseconds, or 15 minutes.
	MaxBand *int64 `type:"integer"`

	// This option specifies the maximum number of files to save from the last maxBand
	// seconds. If this number is exceeded, extra files are skipped and only processed
	// in the next job run.
	MaxFilesInBand *int64 `type:"integer"`

	// A Boolean value that specifies whether a single record can span multiple
	// lines. This can occur when a field contains a quoted new-line character.
	// You must set this option to True if any record spans multiple lines. The
	// default value is False, which allows for more aggressive file-splitting during
	// parsing.
	Multiline *bool `type:"boolean"`

	// The name of the data store.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the data schema for the S3 JSON source.
	OutputSchemas []*GlueSchema `type:"list"`

	// A list of the Amazon S3 paths to read from.
	//
	// Paths is a required field
	Paths []*string `type:"list" required:"true"`

	// If set to true, recursively reads files in all subdirectories under the specified
	// paths.
	Recurse *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 S3JsonSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3JsonSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3JsonSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3JsonSource"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Paths == nil {
		invalidParams.Add(request.NewErrParamRequired("Paths"))
	}
	if s.OutputSchemas != nil {
		for i, v := range s.OutputSchemas {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputSchemas", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *S3JsonSource) SetAdditionalOptions(v *S3DirectSourceAdditionalOptions) *S3JsonSource {
	s.AdditionalOptions = v
	return s
}

// SetCompressionType sets the CompressionType field's value.
func (s *S3JsonSource) SetCompressionType(v string) *S3JsonSource {
	s.CompressionType = &v
	return s
}

// SetExclusions sets the Exclusions field's value.
func (s *S3JsonSource) SetExclusions(v []*string) *S3JsonSource {
	s.Exclusions = v
	return s
}

// SetGroupFiles sets the GroupFiles field's value.
func (s *S3JsonSource) SetGroupFiles(v string) *S3JsonSource {
	s.GroupFiles = &v
	return s
}

// SetGroupSize sets the GroupSize field's value.
func (s *S3JsonSource) SetGroupSize(v string) *S3JsonSource {
	s.GroupSize = &v
	return s
}

// SetJsonPath sets the JsonPath field's value.
func (s *S3JsonSource) SetJsonPath(v string) *S3JsonSource {
	s.JsonPath = &v
	return s
}

// SetMaxBand sets the MaxBand field's value.
func (s *S3JsonSource) SetMaxBand(v int64) *S3JsonSource {
	s.MaxBand = &v
	return s
}

// SetMaxFilesInBand sets the MaxFilesInBand field's value.
func (s *S3JsonSource) SetMaxFilesInBand(v int64) *S3JsonSource {
	s.MaxFilesInBand = &v
	return s
}

// SetMultiline sets the Multiline field's value.
func (s *S3JsonSource) SetMultiline(v bool) *S3JsonSource {
	s.Multiline = &v
	return s
}

// SetName sets the Name field's value.
func (s *S3JsonSource) SetName(v string) *S3JsonSource {
	s.Name = &v
	return s
}

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *S3JsonSource) SetOutputSchemas(v []*GlueSchema) *S3JsonSource {
	s.OutputSchemas = v
	return s
}

// SetPaths sets the Paths field's value.
func (s *S3JsonSource) SetPaths(v []*string) *S3JsonSource {
	s.Paths = v
	return s
}

// SetRecurse sets the Recurse field's value.
func (s *S3JsonSource) SetRecurse(v bool) *S3JsonSource {
	s.Recurse = &v
	return s
}

// Specifies an Apache Parquet data store stored in Amazon S3.
type S3ParquetSource struct {
	_ struct{} `type:"structure"`

	// Specifies additional connection options.
	AdditionalOptions *S3DirectSourceAdditionalOptions `type:"structure"`

	// Specifies how the data is compressed. This is generally not necessary if
	// the data has a standard file extension. Possible values are "gzip" and "bzip").
	CompressionType *string `type:"string" enum:"ParquetCompressionType"`

	// A string containing a JSON list of Unix-style glob patterns to exclude. For
	// example, "[\"**.pdf\"]" excludes all PDF files.
	Exclusions []*string `type:"list"`

	// Grouping files is turned on by default when the input contains more than
	// 50,000 files. To turn on grouping with fewer than 50,000 files, set this
	// parameter to "inPartition". To disable grouping when there are more than
	// 50,000 files, set this parameter to "none".
	GroupFiles *string `type:"string"`

	// The target group size in bytes. The default is computed based on the input
	// data size and the size of your cluster. When there are fewer than 50,000
	// input files, "groupFiles" must be set to "inPartition" for this to take effect.
	GroupSize *string `type:"string"`

	// This option controls the duration in milliseconds after which the s3 listing
	// is likely to be consistent. Files with modification timestamps falling within
	// the last maxBand milliseconds are tracked specially when using JobBookmarks
	// to account for Amazon S3 eventual consistency. Most users don't need to set
	// this option. The default is 900000 milliseconds, or 15 minutes.
	MaxBand *int64 `type:"integer"`

	// This option specifies the maximum number of files to save from the last maxBand
	// seconds. If this number is exceeded, extra files are skipped and only processed
	// in the next job run.
	MaxFilesInBand *int64 `type:"integer"`

	// The name of the data store.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the data schema for the S3 Parquet source.
	OutputSchemas []*GlueSchema `type:"list"`

	// A list of the Amazon S3 paths to read from.
	//
	// Paths is a required field
	Paths []*string `type:"list" required:"true"`

	// If set to true, recursively reads files in all subdirectories under the specified
	// paths.
	Recurse *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 S3ParquetSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3ParquetSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *S3ParquetSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "S3ParquetSource"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Paths == nil {
		invalidParams.Add(request.NewErrParamRequired("Paths"))
	}
	if s.OutputSchemas != nil {
		for i, v := range s.OutputSchemas {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputSchemas", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *S3ParquetSource) SetAdditionalOptions(v *S3DirectSourceAdditionalOptions) *S3ParquetSource {
	s.AdditionalOptions = v
	return s
}

// SetCompressionType sets the CompressionType field's value.
func (s *S3ParquetSource) SetCompressionType(v string) *S3ParquetSource {
	s.CompressionType = &v
	return s
}

// SetExclusions sets the Exclusions field's value.
func (s *S3ParquetSource) SetExclusions(v []*string) *S3ParquetSource {
	s.Exclusions = v
	return s
}

// SetGroupFiles sets the GroupFiles field's value.
func (s *S3ParquetSource) SetGroupFiles(v string) *S3ParquetSource {
	s.GroupFiles = &v
	return s
}

// SetGroupSize sets the GroupSize field's value.
func (s *S3ParquetSource) SetGroupSize(v string) *S3ParquetSource {
	s.GroupSize = &v
	return s
}

// SetMaxBand sets the MaxBand field's value.
func (s *S3ParquetSource) SetMaxBand(v int64) *S3ParquetSource {
	s.MaxBand = &v
	return s
}

// SetMaxFilesInBand sets the MaxFilesInBand field's value.
func (s *S3ParquetSource) SetMaxFilesInBand(v int64) *S3ParquetSource {
	s.MaxFilesInBand = &v
	return s
}

// SetName sets the Name field's value.
func (s *S3ParquetSource) SetName(v string) *S3ParquetSource {
	s.Name = &v
	return s
}

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *S3ParquetSource) SetOutputSchemas(v []*GlueSchema) *S3ParquetSource {
	s.OutputSchemas = v
	return s
}

// SetPaths sets the Paths field's value.
func (s *S3ParquetSource) SetPaths(v []*string) *S3ParquetSource {
	s.Paths = v
	return s
}

// SetRecurse sets the Recurse field's value.
func (s *S3ParquetSource) SetRecurse(v bool) *S3ParquetSource {
	s.Recurse = &v
	return s
}

// Specifies additional connection options for the Amazon S3 data store.
type S3SourceAdditionalOptions struct {
	_ struct{} `type:"structure"`

	// Sets the upper limit for the target number of files that will be processed.
	BoundedFiles *int64 `type:"long"`

	// Sets the upper limit for the target size of the dataset in bytes that will
	// be processed.
	BoundedSize *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 S3SourceAdditionalOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3SourceAdditionalOptions) GoString() string {
	return s.String()
}

// SetBoundedFiles sets the BoundedFiles field's value.
func (s *S3SourceAdditionalOptions) SetBoundedFiles(v int64) *S3SourceAdditionalOptions {
	s.BoundedFiles = &v
	return s
}

// SetBoundedSize sets the BoundedSize field's value.
func (s *S3SourceAdditionalOptions) SetBoundedSize(v int64) *S3SourceAdditionalOptions {
	s.BoundedSize = &v
	return s
}

// Specifies a data store in Amazon Simple Storage Service (Amazon S3).
type S3Target struct {
	_ struct{} `type:"structure"`

	// The name of a connection which allows a job or crawler to access data in
	// Amazon S3 within an Amazon Virtual Private Cloud environment (Amazon VPC).
	ConnectionName *string `type:"string"`

	// A valid Amazon dead-letter SQS ARN. For example, arn:aws:sqs:region:account:deadLetterQueue.
	DlqEventQueueArn *string `type:"string"`

	// A valid Amazon SQS ARN. For example, arn:aws:sqs:region:account:sqs.
	EventQueueArn *string `type:"string"`

	// A list of glob patterns used to exclude from the crawl. For more information,
	// see Catalog Tables with a Crawler (https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html).
	Exclusions []*string `type:"list"`

	// The path to the Amazon S3 target.
	Path *string `type:"string"`

	// Sets the number of files in each leaf folder to be crawled when crawling
	// sample files in a dataset. If not set, all the files are crawled. A valid
	// value is an integer between 1 and 249.
	SampleSize *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 S3Target) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s S3Target) GoString() string {
	return s.String()
}

// SetConnectionName sets the ConnectionName field's value.
func (s *S3Target) SetConnectionName(v string) *S3Target {
	s.ConnectionName = &v
	return s
}

// SetDlqEventQueueArn sets the DlqEventQueueArn field's value.
func (s *S3Target) SetDlqEventQueueArn(v string) *S3Target {
	s.DlqEventQueueArn = &v
	return s
}

// SetEventQueueArn sets the EventQueueArn field's value.
func (s *S3Target) SetEventQueueArn(v string) *S3Target {
	s.EventQueueArn = &v
	return s
}

// SetExclusions sets the Exclusions field's value.
func (s *S3Target) SetExclusions(v []*string) *S3Target {
	s.Exclusions = v
	return s
}

// SetPath sets the Path field's value.
func (s *S3Target) SetPath(v string) *S3Target {
	s.Path = &v
	return s
}

// SetSampleSize sets the SampleSize field's value.
func (s *S3Target) SetSampleSize(v int64) *S3Target {
	s.SampleSize = &v
	return s
}

// A scheduling object using a cron statement to schedule an event.
type Schedule struct {
	_ struct{} `type:"structure"`

	// A cron expression used to specify the schedule (see Time-Based Schedules
	// for Jobs and Crawlers (https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html).
	// For example, to run something every day at 12:15 UTC, you would specify:
	// cron(15 12 * * ? *).
	ScheduleExpression *string `type:"string"`

	// The state of the schedule.
	State *string `type:"string" enum:"ScheduleState"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Schedule) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Schedule) GoString() string {
	return s.String()
}

// SetScheduleExpression sets the ScheduleExpression field's value.
func (s *Schedule) SetScheduleExpression(v string) *Schedule {
	s.ScheduleExpression = &v
	return s
}

// SetState sets the State field's value.
func (s *Schedule) SetState(v string) *Schedule {
	s.State = &v
	return s
}

// The specified scheduler is not running.
type SchedulerNotRunningException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SchedulerNotRunningException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SchedulerNotRunningException) GoString() string {
	return s.String()
}

func newErrorSchedulerNotRunningException(v protocol.ResponseMetadata) error {
	return &SchedulerNotRunningException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *SchedulerNotRunningException) Code() string {
	return "SchedulerNotRunningException"
}

// Message returns the exception's message.
func (s *SchedulerNotRunningException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *SchedulerNotRunningException) OrigErr() error {
	return nil
}

func (s *SchedulerNotRunningException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *SchedulerNotRunningException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *SchedulerNotRunningException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The specified scheduler is already running.
type SchedulerRunningException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SchedulerRunningException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SchedulerRunningException) GoString() string {
	return s.String()
}

func newErrorSchedulerRunningException(v protocol.ResponseMetadata) error {
	return &SchedulerRunningException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *SchedulerRunningException) Code() string {
	return "SchedulerRunningException"
}

// Message returns the exception's message.
func (s *SchedulerRunningException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *SchedulerRunningException) OrigErr() error {
	return nil
}

func (s *SchedulerRunningException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *SchedulerRunningException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *SchedulerRunningException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The specified scheduler is transitioning.
type SchedulerTransitioningException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SchedulerTransitioningException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SchedulerTransitioningException) GoString() string {
	return s.String()
}

func newErrorSchedulerTransitioningException(v protocol.ResponseMetadata) error {
	return &SchedulerTransitioningException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *SchedulerTransitioningException) Code() string {
	return "SchedulerTransitioningException"
}

// Message returns the exception's message.
func (s *SchedulerTransitioningException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *SchedulerTransitioningException) OrigErr() error {
	return nil
}

func (s *SchedulerTransitioningException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *SchedulerTransitioningException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *SchedulerTransitioningException) RequestID() string {
	return s.RespMetadata.RequestID
}

// A policy that specifies update and deletion behaviors for the crawler.
type SchemaChangePolicy struct {
	_ struct{} `type:"structure"`

	// The deletion behavior when the crawler finds a deleted object.
	DeleteBehavior *string `type:"string" enum:"DeleteBehavior"`

	// The update behavior when the crawler finds a changed schema.
	UpdateBehavior *string `type:"string" enum:"UpdateBehavior"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SchemaChangePolicy) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SchemaChangePolicy) GoString() string {
	return s.String()
}

// SetDeleteBehavior sets the DeleteBehavior field's value.
func (s *SchemaChangePolicy) SetDeleteBehavior(v string) *SchemaChangePolicy {
	s.DeleteBehavior = &v
	return s
}

// SetUpdateBehavior sets the UpdateBehavior field's value.
func (s *SchemaChangePolicy) SetUpdateBehavior(v string) *SchemaChangePolicy {
	s.UpdateBehavior = &v
	return s
}

// A key-value pair representing a column and data type that this transform
// can run against. The Schema parameter of the MLTransform may contain up to
// 100 of these structures.
type SchemaColumn struct {
	_ struct{} `type:"structure"`

	// The type of data in the column.
	DataType *string `type:"string"`

	// The name of the column.
	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 SchemaColumn) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SchemaColumn) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SchemaColumn) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SchemaColumn"}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataType sets the DataType field's value.
func (s *SchemaColumn) SetDataType(v string) *SchemaColumn {
	s.DataType = &v
	return s
}

// SetName sets the Name field's value.
func (s *SchemaColumn) SetName(v string) *SchemaColumn {
	s.Name = &v
	return s
}

// The unique ID of the schema in the Glue schema registry.
type SchemaId struct {
	_ struct{} `type:"structure"`

	// The name of the schema registry that contains the schema.
	RegistryName *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the schema. One of SchemaArn or SchemaName
	// has to be provided.
	SchemaArn *string `min:"1" type:"string"`

	// The name of the schema. One of SchemaArn or SchemaName has to be provided.
	SchemaName *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 SchemaId) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SchemaId) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SchemaId) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SchemaId"}
	if s.RegistryName != nil && len(*s.RegistryName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RegistryName", 1))
	}
	if s.SchemaArn != nil && len(*s.SchemaArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SchemaArn", 1))
	}
	if s.SchemaName != nil && len(*s.SchemaName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SchemaName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRegistryName sets the RegistryName field's value.
func (s *SchemaId) SetRegistryName(v string) *SchemaId {
	s.RegistryName = &v
	return s
}

// SetSchemaArn sets the SchemaArn field's value.
func (s *SchemaId) SetSchemaArn(v string) *SchemaId {
	s.SchemaArn = &v
	return s
}

// SetSchemaName sets the SchemaName field's value.
func (s *SchemaId) SetSchemaName(v string) *SchemaId {
	s.SchemaName = &v
	return s
}

// An object that contains minimal details for a schema.
type SchemaListItem struct {
	_ struct{} `type:"structure"`

	// The date and time that a schema was created.
	CreatedTime *string `type:"string"`

	// A description for the schema.
	Description *string `type:"string"`

	// the name of the registry where the schema resides.
	RegistryName *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) for the schema.
	SchemaArn *string `min:"1" type:"string"`

	// The name of the schema.
	SchemaName *string `min:"1" type:"string"`

	// The status of the schema.
	SchemaStatus *string `type:"string" enum:"SchemaStatus"`

	// The date and time that a schema was updated.
	UpdatedTime *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 SchemaListItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SchemaListItem) GoString() string {
	return s.String()
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *SchemaListItem) SetCreatedTime(v string) *SchemaListItem {
	s.CreatedTime = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *SchemaListItem) SetDescription(v string) *SchemaListItem {
	s.Description = &v
	return s
}

// SetRegistryName sets the RegistryName field's value.
func (s *SchemaListItem) SetRegistryName(v string) *SchemaListItem {
	s.RegistryName = &v
	return s
}

// SetSchemaArn sets the SchemaArn field's value.
func (s *SchemaListItem) SetSchemaArn(v string) *SchemaListItem {
	s.SchemaArn = &v
	return s
}

// SetSchemaName sets the SchemaName field's value.
func (s *SchemaListItem) SetSchemaName(v string) *SchemaListItem {
	s.SchemaName = &v
	return s
}

// SetSchemaStatus sets the SchemaStatus field's value.
func (s *SchemaListItem) SetSchemaStatus(v string) *SchemaListItem {
	s.SchemaStatus = &v
	return s
}

// SetUpdatedTime sets the UpdatedTime field's value.
func (s *SchemaListItem) SetUpdatedTime(v string) *SchemaListItem {
	s.UpdatedTime = &v
	return s
}

// An object that references a schema stored in the Glue Schema Registry.
type SchemaReference struct {
	_ struct{} `type:"structure"`

	// A structure that contains schema identity fields. Either this or the SchemaVersionId
	// has to be provided.
	SchemaId *SchemaId `type:"structure"`

	// The unique ID assigned to a version of the schema. Either this or the SchemaId
	// has to be provided.
	SchemaVersionId *string `min:"36" type:"string"`

	// The version number of the schema.
	SchemaVersionNumber *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 SchemaReference) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SchemaReference) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SchemaReference) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SchemaReference"}
	if s.SchemaVersionId != nil && len(*s.SchemaVersionId) < 36 {
		invalidParams.Add(request.NewErrParamMinLen("SchemaVersionId", 36))
	}
	if s.SchemaVersionNumber != nil && *s.SchemaVersionNumber < 1 {
		invalidParams.Add(request.NewErrParamMinValue("SchemaVersionNumber", 1))
	}
	if s.SchemaId != nil {
		if err := s.SchemaId.Validate(); err != nil {
			invalidParams.AddNested("SchemaId", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSchemaId sets the SchemaId field's value.
func (s *SchemaReference) SetSchemaId(v *SchemaId) *SchemaReference {
	s.SchemaId = v
	return s
}

// SetSchemaVersionId sets the SchemaVersionId field's value.
func (s *SchemaReference) SetSchemaVersionId(v string) *SchemaReference {
	s.SchemaVersionId = &v
	return s
}

// SetSchemaVersionNumber sets the SchemaVersionNumber field's value.
func (s *SchemaReference) SetSchemaVersionNumber(v int64) *SchemaReference {
	s.SchemaVersionNumber = &v
	return s
}

// An object that contains the error details for an operation on a schema version.
type SchemaVersionErrorItem struct {
	_ struct{} `type:"structure"`

	// The details of the error for the schema version.
	ErrorDetails *ErrorDetails `type:"structure"`

	// The version number of the schema.
	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 SchemaVersionErrorItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SchemaVersionErrorItem) GoString() string {
	return s.String()
}

// SetErrorDetails sets the ErrorDetails field's value.
func (s *SchemaVersionErrorItem) SetErrorDetails(v *ErrorDetails) *SchemaVersionErrorItem {
	s.ErrorDetails = v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *SchemaVersionErrorItem) SetVersionNumber(v int64) *SchemaVersionErrorItem {
	s.VersionNumber = &v
	return s
}

// An object containing the details about a schema version.
type SchemaVersionListItem struct {
	_ struct{} `type:"structure"`

	// The date and time the schema version was created.
	CreatedTime *string `type:"string"`

	// The Amazon Resource Name (ARN) of the schema.
	SchemaArn *string `min:"1" type:"string"`

	// The unique identifier of the schema version.
	SchemaVersionId *string `min:"36" type:"string"`

	// The status of the schema version.
	Status *string `type:"string" enum:"SchemaVersionStatus"`

	// The version number of the schema.
	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 SchemaVersionListItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SchemaVersionListItem) GoString() string {
	return s.String()
}

// SetCreatedTime sets the CreatedTime field's value.
func (s *SchemaVersionListItem) SetCreatedTime(v string) *SchemaVersionListItem {
	s.CreatedTime = &v
	return s
}

// SetSchemaArn sets the SchemaArn field's value.
func (s *SchemaVersionListItem) SetSchemaArn(v string) *SchemaVersionListItem {
	s.SchemaArn = &v
	return s
}

// SetSchemaVersionId sets the SchemaVersionId field's value.
func (s *SchemaVersionListItem) SetSchemaVersionId(v string) *SchemaVersionListItem {
	s.SchemaVersionId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *SchemaVersionListItem) SetStatus(v string) *SchemaVersionListItem {
	s.Status = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *SchemaVersionListItem) SetVersionNumber(v int64) *SchemaVersionListItem {
	s.VersionNumber = &v
	return s
}

// A structure containing the schema version information.
type SchemaVersionNumber struct {
	_ struct{} `type:"structure"`

	// The latest version available for the schema.
	LatestVersion *bool `type:"boolean"`

	// The version number of the schema.
	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 SchemaVersionNumber) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SchemaVersionNumber) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SchemaVersionNumber) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SchemaVersionNumber"}
	if s.VersionNumber != nil && *s.VersionNumber < 1 {
		invalidParams.Add(request.NewErrParamMinValue("VersionNumber", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetLatestVersion sets the LatestVersion field's value.
func (s *SchemaVersionNumber) SetLatestVersion(v bool) *SchemaVersionNumber {
	s.LatestVersion = &v
	return s
}

// SetVersionNumber sets the VersionNumber field's value.
func (s *SchemaVersionNumber) SetVersionNumber(v int64) *SchemaVersionNumber {
	s.VersionNumber = &v
	return s
}

type SearchTablesInput struct {
	_ struct{} `type:"structure"`

	// A unique identifier, consisting of account_id .
	CatalogId *string `min:"1" type:"string"`

	// A list of key-value pairs, and a comparator used to filter the search results.
	// Returns all entities matching the predicate.
	//
	// The Comparator member of the PropertyPredicate struct is used only for time
	// fields, and can be omitted for other field types. Also, when comparing string
	// values, such as when Key=Name, a fuzzy match algorithm is used. The Key field
	// (for example, the value of the Name field) is split on certain punctuation
	// characters, for example, -, :, #, etc. into tokens. Then each token is exact-match
	// compared with the Value member of PropertyPredicate. For example, if Key=Name
	// and Value=link, tables named customer-link and xx-link-yy are returned, but
	// xxlinkyy is not returned.
	Filters []*PropertyPredicate `type:"list"`

	// The maximum number of tables to return in a single response.
	MaxResults *int64 `min:"1" type:"integer"`

	// A continuation token, included if this is a continuation call.
	NextToken *string `type:"string"`

	// Allows you to specify that you want to search the tables shared with your
	// account. The allowable values are FOREIGN or ALL.
	//
	//    * If set to FOREIGN, will search the tables shared with your account.
	//
	//    * If set to ALL, will search the tables shared with your account, as well
	//    as the tables in yor local account.
	ResourceShareType *string `type:"string" enum:"ResourceShareType"`

	// A string used for a text search.
	//
	// Specifying a value in quotes filters based on an exact match to the value.
	SearchText *string `type:"string"`

	// A list of criteria for sorting the results by a field name, in an ascending
	// or descending order.
	SortCriteria []*SortCriterion `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 SearchTablesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchTablesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchTablesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchTablesInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *SearchTablesInput) SetCatalogId(v string) *SearchTablesInput {
	s.CatalogId = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *SearchTablesInput) SetFilters(v []*PropertyPredicate) *SearchTablesInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchTablesInput) SetMaxResults(v int64) *SearchTablesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchTablesInput) SetNextToken(v string) *SearchTablesInput {
	s.NextToken = &v
	return s
}

// SetResourceShareType sets the ResourceShareType field's value.
func (s *SearchTablesInput) SetResourceShareType(v string) *SearchTablesInput {
	s.ResourceShareType = &v
	return s
}

// SetSearchText sets the SearchText field's value.
func (s *SearchTablesInput) SetSearchText(v string) *SearchTablesInput {
	s.SearchText = &v
	return s
}

// SetSortCriteria sets the SortCriteria field's value.
func (s *SearchTablesInput) SetSortCriteria(v []*SortCriterion) *SearchTablesInput {
	s.SortCriteria = v
	return s
}

type SearchTablesOutput struct {
	_ struct{} `type:"structure"`

	// A continuation token, present if the current list segment is not the last.
	NextToken *string `type:"string"`

	// A list of the requested Table objects. The SearchTables response returns
	// only the tables that you have access to.
	TableList []*TableData `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 SearchTablesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchTablesOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *SearchTablesOutput) SetNextToken(v string) *SearchTablesOutput {
	s.NextToken = &v
	return s
}

// SetTableList sets the TableList field's value.
func (s *SearchTablesOutput) SetTableList(v []*TableData) *SearchTablesOutput {
	s.TableList = v
	return s
}

// Specifies a security configuration.
type SecurityConfiguration struct {
	_ struct{} `type:"structure"`

	// The time at which this security configuration was created.
	CreatedTimeStamp *time.Time `type:"timestamp"`

	// The encryption configuration associated with this security configuration.
	EncryptionConfiguration *EncryptionConfiguration `type:"structure"`

	// The name of the security configuration.
	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 SecurityConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SecurityConfiguration) GoString() string {
	return s.String()
}

// SetCreatedTimeStamp sets the CreatedTimeStamp field's value.
func (s *SecurityConfiguration) SetCreatedTimeStamp(v time.Time) *SecurityConfiguration {
	s.CreatedTimeStamp = &v
	return s
}

// SetEncryptionConfiguration sets the EncryptionConfiguration field's value.
func (s *SecurityConfiguration) SetEncryptionConfiguration(v *EncryptionConfiguration) *SecurityConfiguration {
	s.EncryptionConfiguration = v
	return s
}

// SetName sets the Name field's value.
func (s *SecurityConfiguration) SetName(v string) *SecurityConfiguration {
	s.Name = &v
	return s
}

// Defines a non-overlapping region of a table's partitions, allowing multiple
// requests to be run in parallel.
type Segment struct {
	_ struct{} `type:"structure"`

	// The zero-based index number of the segment. For example, if the total number
	// of segments is 4, SegmentNumber values range from 0 through 3.
	//
	// SegmentNumber is a required field
	SegmentNumber *int64 `type:"integer" required:"true"`

	// The total number of segments.
	//
	// TotalSegments is a required field
	TotalSegments *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 Segment) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Segment) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Segment) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Segment"}
	if s.SegmentNumber == nil {
		invalidParams.Add(request.NewErrParamRequired("SegmentNumber"))
	}
	if s.TotalSegments == nil {
		invalidParams.Add(request.NewErrParamRequired("TotalSegments"))
	}
	if s.TotalSegments != nil && *s.TotalSegments < 1 {
		invalidParams.Add(request.NewErrParamMinValue("TotalSegments", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSegmentNumber sets the SegmentNumber field's value.
func (s *Segment) SetSegmentNumber(v int64) *Segment {
	s.SegmentNumber = &v
	return s
}

// SetTotalSegments sets the TotalSegments field's value.
func (s *Segment) SetTotalSegments(v int64) *Segment {
	s.TotalSegments = &v
	return s
}

// Specifies a transform that chooses the data property keys that you want to
// keep.
type SelectFields struct {
	_ struct{} `type:"structure"`

	// The data inputs identified by their node names.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// A JSON path to a variable in the data structure.
	//
	// Paths is a required field
	Paths [][]*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 SelectFields) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SelectFields) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SelectFields) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SelectFields"}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Paths == nil {
		invalidParams.Add(request.NewErrParamRequired("Paths"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInputs sets the Inputs field's value.
func (s *SelectFields) SetInputs(v []*string) *SelectFields {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *SelectFields) SetName(v string) *SelectFields {
	s.Name = &v
	return s
}

// SetPaths sets the Paths field's value.
func (s *SelectFields) SetPaths(v [][]*string) *SelectFields {
	s.Paths = v
	return s
}

// Specifies a transform that chooses one DynamicFrame from a collection of
// DynamicFrames. The output is the selected DynamicFrame
type SelectFromCollection struct {
	_ struct{} `type:"structure"`

	// The index for the DynamicFrame to be selected.
	//
	// Index is a required field
	Index *int64 `type:"integer" required:"true"`

	// The data inputs identified by their node names.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *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 SelectFromCollection) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SelectFromCollection) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SelectFromCollection) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SelectFromCollection"}
	if s.Index == nil {
		invalidParams.Add(request.NewErrParamRequired("Index"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIndex sets the Index field's value.
func (s *SelectFromCollection) SetIndex(v int64) *SelectFromCollection {
	s.Index = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *SelectFromCollection) SetInputs(v []*string) *SelectFromCollection {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *SelectFromCollection) SetName(v string) *SelectFromCollection {
	s.Name = &v
	return s
}

// Information about a serialization/deserialization program (SerDe) that serves
// as an extractor and loader.
type SerDeInfo struct {
	_ struct{} `type:"structure"`

	// Name of the SerDe.
	Name *string `min:"1" type:"string"`

	// These key-value pairs define initialization parameters for the SerDe.
	Parameters map[string]*string `type:"map"`

	// Usually the class that implements the SerDe. An example is org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe.
	SerializationLibrary *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 SerDeInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SerDeInfo) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SerDeInfo) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SerDeInfo"}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.SerializationLibrary != nil && len(*s.SerializationLibrary) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SerializationLibrary", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *SerDeInfo) SetName(v string) *SerDeInfo {
	s.Name = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *SerDeInfo) SetParameters(v map[string]*string) *SerDeInfo {
	s.Parameters = v
	return s
}

// SetSerializationLibrary sets the SerializationLibrary field's value.
func (s *SerDeInfo) SetSerializationLibrary(v string) *SerDeInfo {
	s.SerializationLibrary = &v
	return s
}

// The period in which a remote Spark runtime environment is running.
type Session struct {
	_ struct{} `type:"structure"`

	// The command object.See SessionCommand.
	Command *SessionCommand `type:"structure"`

	// The date and time that this session is completed.
	CompletedOn *time.Time `type:"timestamp"`

	// The number of connections used for the session.
	Connections *ConnectionsList `type:"structure"`

	// The time and date when the session was created.
	CreatedOn *time.Time `type:"timestamp"`

	// The DPUs consumed by the session (formula: ExecutionTime * MaxCapacity).
	DPUSeconds *float64 `type:"double"`

	// A map array of key-value pairs. Max is 75 pairs.
	DefaultArguments map[string]*string `type:"map"`

	// The description of the session.
	Description *string `type:"string"`

	// The error message displayed during the session.
	ErrorMessage *string `type:"string"`

	// The total time the session ran for.
	ExecutionTime *float64 `type:"double"`

	// The Glue version determines the versions of Apache Spark and Python that
	// Glue supports. The GlueVersion must be greater than 2.0.
	GlueVersion *string `min:"1" type:"string"`

	// The ID of the session.
	Id *string `min:"1" type:"string"`

	// The number of minutes when idle before the session times out.
	IdleTimeout *int64 `type:"integer"`

	// The number of Glue data processing units (DPUs) that can be allocated when
	// the job runs. A DPU is a relative measure of processing power that consists
	// of 4 vCPUs of compute capacity and 16 GB memory.
	MaxCapacity *float64 `type:"double"`

	// The number of workers of a defined WorkerType to use for the session.
	NumberOfWorkers *int64 `type:"integer"`

	// The name of an Glue usage profile associated with the session.
	ProfileName *string `min:"1" type:"string"`

	// The code execution progress of the session.
	Progress *float64 `type:"double"`

	// The name or Amazon Resource Name (ARN) of the IAM role associated with the
	// Session.
	Role *string `min:"20" type:"string"`

	// The name of the SecurityConfiguration structure to be used with the session.
	SecurityConfiguration *string `min:"1" type:"string"`

	// The session status.
	Status *string `type:"string" enum:"SessionStatus"`

	// The type of predefined worker that is allocated when a session runs. Accepts
	// a value of G.1X, G.2X, G.4X, or G.8X for Spark sessions. Accepts the value
	// Z.2X for Ray sessions.
	WorkerType *string `type:"string" enum:"WorkerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Session) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Session) GoString() string {
	return s.String()
}

// SetCommand sets the Command field's value.
func (s *Session) SetCommand(v *SessionCommand) *Session {
	s.Command = v
	return s
}

// SetCompletedOn sets the CompletedOn field's value.
func (s *Session) SetCompletedOn(v time.Time) *Session {
	s.CompletedOn = &v
	return s
}

// SetConnections sets the Connections field's value.
func (s *Session) SetConnections(v *ConnectionsList) *Session {
	s.Connections = v
	return s
}

// SetCreatedOn sets the CreatedOn field's value.
func (s *Session) SetCreatedOn(v time.Time) *Session {
	s.CreatedOn = &v
	return s
}

// SetDPUSeconds sets the DPUSeconds field's value.
func (s *Session) SetDPUSeconds(v float64) *Session {
	s.DPUSeconds = &v
	return s
}

// SetDefaultArguments sets the DefaultArguments field's value.
func (s *Session) SetDefaultArguments(v map[string]*string) *Session {
	s.DefaultArguments = v
	return s
}

// SetDescription sets the Description field's value.
func (s *Session) SetDescription(v string) *Session {
	s.Description = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *Session) SetErrorMessage(v string) *Session {
	s.ErrorMessage = &v
	return s
}

// SetExecutionTime sets the ExecutionTime field's value.
func (s *Session) SetExecutionTime(v float64) *Session {
	s.ExecutionTime = &v
	return s
}

// SetGlueVersion sets the GlueVersion field's value.
func (s *Session) SetGlueVersion(v string) *Session {
	s.GlueVersion = &v
	return s
}

// SetId sets the Id field's value.
func (s *Session) SetId(v string) *Session {
	s.Id = &v
	return s
}

// SetIdleTimeout sets the IdleTimeout field's value.
func (s *Session) SetIdleTimeout(v int64) *Session {
	s.IdleTimeout = &v
	return s
}

// SetMaxCapacity sets the MaxCapacity field's value.
func (s *Session) SetMaxCapacity(v float64) *Session {
	s.MaxCapacity = &v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *Session) SetNumberOfWorkers(v int64) *Session {
	s.NumberOfWorkers = &v
	return s
}

// SetProfileName sets the ProfileName field's value.
func (s *Session) SetProfileName(v string) *Session {
	s.ProfileName = &v
	return s
}

// SetProgress sets the Progress field's value.
func (s *Session) SetProgress(v float64) *Session {
	s.Progress = &v
	return s
}

// SetRole sets the Role field's value.
func (s *Session) SetRole(v string) *Session {
	s.Role = &v
	return s
}

// SetSecurityConfiguration sets the SecurityConfiguration field's value.
func (s *Session) SetSecurityConfiguration(v string) *Session {
	s.SecurityConfiguration = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *Session) SetStatus(v string) *Session {
	s.Status = &v
	return s
}

// SetWorkerType sets the WorkerType field's value.
func (s *Session) SetWorkerType(v string) *Session {
	s.WorkerType = &v
	return s
}

// The SessionCommand that runs the job.
type SessionCommand struct {
	_ struct{} `type:"structure"`

	// Specifies the name of the SessionCommand. Can be 'glueetl' or 'gluestreaming'.
	Name *string `min:"1" type:"string"`

	// Specifies the Python version. The Python version indicates the version supported
	// for jobs of type Spark.
	PythonVersion *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 SessionCommand) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SessionCommand) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SessionCommand) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SessionCommand"}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *SessionCommand) SetName(v string) *SessionCommand {
	s.Name = &v
	return s
}

// SetPythonVersion sets the PythonVersion field's value.
func (s *SessionCommand) SetPythonVersion(v string) *SessionCommand {
	s.PythonVersion = &v
	return s
}

// Specifies skewed values in a table. Skewed values are those that occur with
// very high frequency.
type SkewedInfo struct {
	_ struct{} `type:"structure"`

	// A list of names of columns that contain skewed values.
	SkewedColumnNames []*string `type:"list"`

	// A mapping of skewed values to the columns that contain them.
	SkewedColumnValueLocationMaps map[string]*string `type:"map"`

	// A list of values that appear so frequently as to be considered skewed.
	SkewedColumnValues []*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 SkewedInfo) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SkewedInfo) GoString() string {
	return s.String()
}

// SetSkewedColumnNames sets the SkewedColumnNames field's value.
func (s *SkewedInfo) SetSkewedColumnNames(v []*string) *SkewedInfo {
	s.SkewedColumnNames = v
	return s
}

// SetSkewedColumnValueLocationMaps sets the SkewedColumnValueLocationMaps field's value.
func (s *SkewedInfo) SetSkewedColumnValueLocationMaps(v map[string]*string) *SkewedInfo {
	s.SkewedColumnValueLocationMaps = v
	return s
}

// SetSkewedColumnValues sets the SkewedColumnValues field's value.
func (s *SkewedInfo) SetSkewedColumnValues(v []*string) *SkewedInfo {
	s.SkewedColumnValues = v
	return s
}

// Specifies configuration for Snowflake nodes in Glue Studio.
type SnowflakeNodeData struct {
	_ struct{} `type:"structure"`

	// Specifies what action to take when writing to a table with preexisting data.
	// Valid values: append, merge, truncate, drop.
	Action *string `type:"string"`

	// Specifies additional options passed to the Snowflake connector. If options
	// are specified elsewhere in this node, this will take precedence.
	AdditionalOptions map[string]*string `type:"map"`

	// Specifies whether automatic query pushdown is enabled. If pushdown is enabled,
	// then when a query is run on Spark, if part of the query can be "pushed down"
	// to the Snowflake server, it is pushed down. This improves performance of
	// some queries.
	AutoPushdown *bool `type:"boolean"`

	// Specifies a Glue Data Catalog Connection to a Snowflake endpoint.
	Connection *Option `type:"structure"`

	// Specifies a Snowflake database for your node to use.
	Database *string `type:"string"`

	// Not currently used.
	IamRole *Option `type:"structure"`

	// Specifies a merge action. Valid values: simple, custom. If simple, merge
	// behavior is defined by MergeWhenMatched and MergeWhenNotMatched. If custom,
	// defined by MergeClause.
	MergeAction *string `type:"string"`

	// A SQL statement that specifies a custom merge behavior.
	MergeClause *string `type:"string"`

	// Specifies how to resolve records that match preexisting data when merging.
	// Valid values: update, delete.
	MergeWhenMatched *string `type:"string"`

	// Specifies how to process records that do not match preexisting data when
	// merging. Valid values: insert, none.
	MergeWhenNotMatched *string `type:"string"`

	// A SQL string run after the Snowflake connector performs its standard actions.
	PostAction *string `type:"string"`

	// A SQL string run before the Snowflake connector performs its standard actions.
	PreAction *string `type:"string"`

	// A SQL string used to retrieve data with the query sourcetype.
	SampleQuery *string `type:"string"`

	// Specifies a Snowflake database schema for your node to use.
	Schema *string `type:"string"`

	// Specifies the columns combined to identify a record when detecting matches
	// for merges and upserts. A list of structures with value, label and description
	// keys. Each structure describes a column.
	SelectedColumns []*Option `type:"list"`

	// Specifies how retrieved data is specified. Valid values: "table", "query".
	SourceType *string `type:"string"`

	// The name of a staging table used when performing merge or upsert append actions.
	// Data is written to this table, then moved to table by a generated postaction.
	StagingTable *string `type:"string"`

	// Specifies a Snowflake table for your node to use.
	Table *string `type:"string"`

	// Manually defines the target schema for the node. A list of structures with
	// value , label and description keys. Each structure defines a column.
	TableSchema []*Option `type:"list"`

	// Not currently used.
	TempDir *string `type:"string"`

	// Used when Action is append. Specifies the resolution behavior when a row
	// already exists. If true, preexisting rows will be updated. If false, those
	// rows will be inserted.
	Upsert *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 SnowflakeNodeData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SnowflakeNodeData) GoString() string {
	return s.String()
}

// SetAction sets the Action field's value.
func (s *SnowflakeNodeData) SetAction(v string) *SnowflakeNodeData {
	s.Action = &v
	return s
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *SnowflakeNodeData) SetAdditionalOptions(v map[string]*string) *SnowflakeNodeData {
	s.AdditionalOptions = v
	return s
}

// SetAutoPushdown sets the AutoPushdown field's value.
func (s *SnowflakeNodeData) SetAutoPushdown(v bool) *SnowflakeNodeData {
	s.AutoPushdown = &v
	return s
}

// SetConnection sets the Connection field's value.
func (s *SnowflakeNodeData) SetConnection(v *Option) *SnowflakeNodeData {
	s.Connection = v
	return s
}

// SetDatabase sets the Database field's value.
func (s *SnowflakeNodeData) SetDatabase(v string) *SnowflakeNodeData {
	s.Database = &v
	return s
}

// SetIamRole sets the IamRole field's value.
func (s *SnowflakeNodeData) SetIamRole(v *Option) *SnowflakeNodeData {
	s.IamRole = v
	return s
}

// SetMergeAction sets the MergeAction field's value.
func (s *SnowflakeNodeData) SetMergeAction(v string) *SnowflakeNodeData {
	s.MergeAction = &v
	return s
}

// SetMergeClause sets the MergeClause field's value.
func (s *SnowflakeNodeData) SetMergeClause(v string) *SnowflakeNodeData {
	s.MergeClause = &v
	return s
}

// SetMergeWhenMatched sets the MergeWhenMatched field's value.
func (s *SnowflakeNodeData) SetMergeWhenMatched(v string) *SnowflakeNodeData {
	s.MergeWhenMatched = &v
	return s
}

// SetMergeWhenNotMatched sets the MergeWhenNotMatched field's value.
func (s *SnowflakeNodeData) SetMergeWhenNotMatched(v string) *SnowflakeNodeData {
	s.MergeWhenNotMatched = &v
	return s
}

// SetPostAction sets the PostAction field's value.
func (s *SnowflakeNodeData) SetPostAction(v string) *SnowflakeNodeData {
	s.PostAction = &v
	return s
}

// SetPreAction sets the PreAction field's value.
func (s *SnowflakeNodeData) SetPreAction(v string) *SnowflakeNodeData {
	s.PreAction = &v
	return s
}

// SetSampleQuery sets the SampleQuery field's value.
func (s *SnowflakeNodeData) SetSampleQuery(v string) *SnowflakeNodeData {
	s.SampleQuery = &v
	return s
}

// SetSchema sets the Schema field's value.
func (s *SnowflakeNodeData) SetSchema(v string) *SnowflakeNodeData {
	s.Schema = &v
	return s
}

// SetSelectedColumns sets the SelectedColumns field's value.
func (s *SnowflakeNodeData) SetSelectedColumns(v []*Option) *SnowflakeNodeData {
	s.SelectedColumns = v
	return s
}

// SetSourceType sets the SourceType field's value.
func (s *SnowflakeNodeData) SetSourceType(v string) *SnowflakeNodeData {
	s.SourceType = &v
	return s
}

// SetStagingTable sets the StagingTable field's value.
func (s *SnowflakeNodeData) SetStagingTable(v string) *SnowflakeNodeData {
	s.StagingTable = &v
	return s
}

// SetTable sets the Table field's value.
func (s *SnowflakeNodeData) SetTable(v string) *SnowflakeNodeData {
	s.Table = &v
	return s
}

// SetTableSchema sets the TableSchema field's value.
func (s *SnowflakeNodeData) SetTableSchema(v []*Option) *SnowflakeNodeData {
	s.TableSchema = v
	return s
}

// SetTempDir sets the TempDir field's value.
func (s *SnowflakeNodeData) SetTempDir(v string) *SnowflakeNodeData {
	s.TempDir = &v
	return s
}

// SetUpsert sets the Upsert field's value.
func (s *SnowflakeNodeData) SetUpsert(v bool) *SnowflakeNodeData {
	s.Upsert = &v
	return s
}

// Specifies a Snowflake data source.
type SnowflakeSource struct {
	_ struct{} `type:"structure"`

	// Configuration for the Snowflake data source.
	//
	// Data is a required field
	Data *SnowflakeNodeData `type:"structure" required:"true"`

	// The name of the Snowflake data source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies user-defined schemas for your output data.
	OutputSchemas []*GlueSchema `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 SnowflakeSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SnowflakeSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SnowflakeSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SnowflakeSource"}
	if s.Data == nil {
		invalidParams.Add(request.NewErrParamRequired("Data"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.OutputSchemas != nil {
		for i, v := range s.OutputSchemas {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputSchemas", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetData sets the Data field's value.
func (s *SnowflakeSource) SetData(v *SnowflakeNodeData) *SnowflakeSource {
	s.Data = v
	return s
}

// SetName sets the Name field's value.
func (s *SnowflakeSource) SetName(v string) *SnowflakeSource {
	s.Name = &v
	return s
}

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *SnowflakeSource) SetOutputSchemas(v []*GlueSchema) *SnowflakeSource {
	s.OutputSchemas = v
	return s
}

// Specifies a Snowflake target.
type SnowflakeTarget struct {
	_ struct{} `type:"structure"`

	// Specifies the data of the Snowflake target node.
	//
	// Data is a required field
	Data *SnowflakeNodeData `type:"structure" required:"true"`

	// The nodes that are inputs to the data target.
	Inputs []*string `min:"1" type:"list"`

	// The name of the Snowflake target.
	//
	// Name is a required field
	Name *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 SnowflakeTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SnowflakeTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SnowflakeTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SnowflakeTarget"}
	if s.Data == nil {
		invalidParams.Add(request.NewErrParamRequired("Data"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetData sets the Data field's value.
func (s *SnowflakeTarget) SetData(v *SnowflakeNodeData) *SnowflakeTarget {
	s.Data = v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *SnowflakeTarget) SetInputs(v []*string) *SnowflakeTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *SnowflakeTarget) SetName(v string) *SnowflakeTarget {
	s.Name = &v
	return s
}

// Specifies a field to sort by and a sort order.
type SortCriterion struct {
	_ struct{} `type:"structure"`

	// The name of the field on which to sort.
	FieldName *string `type:"string"`

	// An ascending or descending sort.
	Sort *string `type:"string" enum:"Sort"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SortCriterion) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SortCriterion) GoString() string {
	return s.String()
}

// SetFieldName sets the FieldName field's value.
func (s *SortCriterion) SetFieldName(v string) *SortCriterion {
	s.FieldName = &v
	return s
}

// SetSort sets the Sort field's value.
func (s *SortCriterion) SetSort(v string) *SortCriterion {
	s.Sort = &v
	return s
}

// The details for a source control configuration for a job, allowing synchronization
// of job artifacts to or from a remote repository.
type SourceControlDetails struct {
	_ struct{} `type:"structure"`

	// The type of authentication, which can be an authentication token stored in
	// Amazon Web Services Secrets Manager, or a personal access token.
	AuthStrategy *string `type:"string" enum:"SourceControlAuthStrategy"`

	// The value of an authorization token.
	AuthToken *string `min:"1" type:"string"`

	// An optional branch in the remote repository.
	Branch *string `min:"1" type:"string"`

	// An optional folder in the remote repository.
	Folder *string `min:"1" type:"string"`

	// The last commit ID for a commit in the remote repository.
	LastCommitId *string `min:"1" type:"string"`

	// The owner of the remote repository that contains the job artifacts.
	Owner *string `min:"1" type:"string"`

	// The provider for the remote repository.
	Provider *string `type:"string" enum:"SourceControlProvider"`

	// The name of the remote repository that contains the job artifacts.
	Repository *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 SourceControlDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SourceControlDetails) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SourceControlDetails) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SourceControlDetails"}
	if s.AuthToken != nil && len(*s.AuthToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AuthToken", 1))
	}
	if s.Branch != nil && len(*s.Branch) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Branch", 1))
	}
	if s.Folder != nil && len(*s.Folder) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Folder", 1))
	}
	if s.LastCommitId != nil && len(*s.LastCommitId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("LastCommitId", 1))
	}
	if s.Owner != nil && len(*s.Owner) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Owner", 1))
	}
	if s.Repository != nil && len(*s.Repository) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Repository", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAuthStrategy sets the AuthStrategy field's value.
func (s *SourceControlDetails) SetAuthStrategy(v string) *SourceControlDetails {
	s.AuthStrategy = &v
	return s
}

// SetAuthToken sets the AuthToken field's value.
func (s *SourceControlDetails) SetAuthToken(v string) *SourceControlDetails {
	s.AuthToken = &v
	return s
}

// SetBranch sets the Branch field's value.
func (s *SourceControlDetails) SetBranch(v string) *SourceControlDetails {
	s.Branch = &v
	return s
}

// SetFolder sets the Folder field's value.
func (s *SourceControlDetails) SetFolder(v string) *SourceControlDetails {
	s.Folder = &v
	return s
}

// SetLastCommitId sets the LastCommitId field's value.
func (s *SourceControlDetails) SetLastCommitId(v string) *SourceControlDetails {
	s.LastCommitId = &v
	return s
}

// SetOwner sets the Owner field's value.
func (s *SourceControlDetails) SetOwner(v string) *SourceControlDetails {
	s.Owner = &v
	return s
}

// SetProvider sets the Provider field's value.
func (s *SourceControlDetails) SetProvider(v string) *SourceControlDetails {
	s.Provider = &v
	return s
}

// SetRepository sets the Repository field's value.
func (s *SourceControlDetails) SetRepository(v string) *SourceControlDetails {
	s.Repository = &v
	return s
}

// Specifies a connector to an Apache Spark data source.
type SparkConnectorSource struct {
	_ struct{} `type:"structure"`

	// Additional connection options for the connector.
	AdditionalOptions map[string]*string `type:"map"`

	// The name of the connection that is associated with the connector.
	//
	// ConnectionName is a required field
	ConnectionName *string `type:"string" required:"true"`

	// The type of connection, such as marketplace.spark or custom.spark, designating
	// a connection to an Apache Spark data store.
	//
	// ConnectionType is a required field
	ConnectionType *string `type:"string" required:"true"`

	// The name of a connector that assists with accessing the data store in Glue
	// Studio.
	//
	// ConnectorName is a required field
	ConnectorName *string `type:"string" required:"true"`

	// The name of the data source.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies data schema for the custom spark source.
	OutputSchemas []*GlueSchema `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 SparkConnectorSource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SparkConnectorSource) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SparkConnectorSource) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SparkConnectorSource"}
	if s.ConnectionName == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionName"))
	}
	if s.ConnectionType == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionType"))
	}
	if s.ConnectorName == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectorName"))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.OutputSchemas != nil {
		for i, v := range s.OutputSchemas {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputSchemas", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *SparkConnectorSource) SetAdditionalOptions(v map[string]*string) *SparkConnectorSource {
	s.AdditionalOptions = v
	return s
}

// SetConnectionName sets the ConnectionName field's value.
func (s *SparkConnectorSource) SetConnectionName(v string) *SparkConnectorSource {
	s.ConnectionName = &v
	return s
}

// SetConnectionType sets the ConnectionType field's value.
func (s *SparkConnectorSource) SetConnectionType(v string) *SparkConnectorSource {
	s.ConnectionType = &v
	return s
}

// SetConnectorName sets the ConnectorName field's value.
func (s *SparkConnectorSource) SetConnectorName(v string) *SparkConnectorSource {
	s.ConnectorName = &v
	return s
}

// SetName sets the Name field's value.
func (s *SparkConnectorSource) SetName(v string) *SparkConnectorSource {
	s.Name = &v
	return s
}

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *SparkConnectorSource) SetOutputSchemas(v []*GlueSchema) *SparkConnectorSource {
	s.OutputSchemas = v
	return s
}

// Specifies a target that uses an Apache Spark connector.
type SparkConnectorTarget struct {
	_ struct{} `type:"structure"`

	// Additional connection options for the connector.
	AdditionalOptions map[string]*string `type:"map"`

	// The name of a connection for an Apache Spark connector.
	//
	// ConnectionName is a required field
	ConnectionName *string `type:"string" required:"true"`

	// The type of connection, such as marketplace.spark or custom.spark, designating
	// a connection to an Apache Spark data store.
	//
	// ConnectionType is a required field
	ConnectionType *string `type:"string" required:"true"`

	// The name of an Apache Spark connector.
	//
	// ConnectorName is a required field
	ConnectorName *string `type:"string" required:"true"`

	// The nodes that are inputs to the data target.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the data target.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the data schema for the custom spark target.
	OutputSchemas []*GlueSchema `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 SparkConnectorTarget) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SparkConnectorTarget) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SparkConnectorTarget) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SparkConnectorTarget"}
	if s.ConnectionName == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionName"))
	}
	if s.ConnectionType == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionType"))
	}
	if s.ConnectorName == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectorName"))
	}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.OutputSchemas != nil {
		for i, v := range s.OutputSchemas {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputSchemas", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *SparkConnectorTarget) SetAdditionalOptions(v map[string]*string) *SparkConnectorTarget {
	s.AdditionalOptions = v
	return s
}

// SetConnectionName sets the ConnectionName field's value.
func (s *SparkConnectorTarget) SetConnectionName(v string) *SparkConnectorTarget {
	s.ConnectionName = &v
	return s
}

// SetConnectionType sets the ConnectionType field's value.
func (s *SparkConnectorTarget) SetConnectionType(v string) *SparkConnectorTarget {
	s.ConnectionType = &v
	return s
}

// SetConnectorName sets the ConnectorName field's value.
func (s *SparkConnectorTarget) SetConnectorName(v string) *SparkConnectorTarget {
	s.ConnectorName = &v
	return s
}

// SetInputs sets the Inputs field's value.
func (s *SparkConnectorTarget) SetInputs(v []*string) *SparkConnectorTarget {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *SparkConnectorTarget) SetName(v string) *SparkConnectorTarget {
	s.Name = &v
	return s
}

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *SparkConnectorTarget) SetOutputSchemas(v []*GlueSchema) *SparkConnectorTarget {
	s.OutputSchemas = v
	return s
}

// Specifies a transform where you enter a SQL query using Spark SQL syntax
// to transform the data. The output is a single DynamicFrame.
type SparkSQL struct {
	_ struct{} `type:"structure"`

	// The data inputs identified by their node names. You can associate a table
	// name with each input node to use in the SQL query. The name you choose must
	// meet the Spark SQL naming restrictions.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the data schema for the SparkSQL transform.
	OutputSchemas []*GlueSchema `type:"list"`

	// A list of aliases. An alias allows you to specify what name to use in the
	// SQL for a given input. For example, you have a datasource named "MyDataSource".
	// If you specify From as MyDataSource, and Alias as SqlName, then in your SQL
	// you can do:
	//
	// select * from SqlName
	//
	// and that gets data from MyDataSource.
	//
	// SqlAliases is a required field
	SqlAliases []*SqlAlias `type:"list" required:"true"`

	// A SQL query that must use Spark SQL syntax and return a single data set.
	//
	// SqlQuery is a required field
	SqlQuery *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 SparkSQL) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SparkSQL) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SparkSQL) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SparkSQL"}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.SqlAliases == nil {
		invalidParams.Add(request.NewErrParamRequired("SqlAliases"))
	}
	if s.SqlQuery == nil {
		invalidParams.Add(request.NewErrParamRequired("SqlQuery"))
	}
	if s.OutputSchemas != nil {
		for i, v := range s.OutputSchemas {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputSchemas", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.SqlAliases != nil {
		for i, v := range s.SqlAliases {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SqlAliases", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInputs sets the Inputs field's value.
func (s *SparkSQL) SetInputs(v []*string) *SparkSQL {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *SparkSQL) SetName(v string) *SparkSQL {
	s.Name = &v
	return s
}

// SetOutputSchemas sets the OutputSchemas field's value.
func (s *SparkSQL) SetOutputSchemas(v []*GlueSchema) *SparkSQL {
	s.OutputSchemas = v
	return s
}

// SetSqlAliases sets the SqlAliases field's value.
func (s *SparkSQL) SetSqlAliases(v []*SqlAlias) *SparkSQL {
	s.SqlAliases = v
	return s
}

// SetSqlQuery sets the SqlQuery field's value.
func (s *SparkSQL) SetSqlQuery(v string) *SparkSQL {
	s.SqlQuery = &v
	return s
}

// Specifies a transform that writes samples of the data to an Amazon S3 bucket.
type Spigot struct {
	_ struct{} `type:"structure"`

	// The data inputs identified by their node names.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// A path in Amazon S3 where the transform will write a subset of records from
	// the dataset to a JSON file in an Amazon S3 bucket.
	//
	// Path is a required field
	Path *string `type:"string" required:"true"`

	// The probability (a decimal value with a maximum value of 1) of picking any
	// given record. A value of 1 indicates that each row read from the dataset
	// should be included in the sample output.
	Prob *float64 `type:"double"`

	// Specifies a number of records to write starting from the beginning of the
	// dataset.
	Topk *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 Spigot) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Spigot) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Spigot) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Spigot"}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Path == nil {
		invalidParams.Add(request.NewErrParamRequired("Path"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInputs sets the Inputs field's value.
func (s *Spigot) SetInputs(v []*string) *Spigot {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *Spigot) SetName(v string) *Spigot {
	s.Name = &v
	return s
}

// SetPath sets the Path field's value.
func (s *Spigot) SetPath(v string) *Spigot {
	s.Path = &v
	return s
}

// SetProb sets the Prob field's value.
func (s *Spigot) SetProb(v float64) *Spigot {
	s.Prob = &v
	return s
}

// SetTopk sets the Topk field's value.
func (s *Spigot) SetTopk(v int64) *Spigot {
	s.Topk = &v
	return s
}

// Specifies a transform that splits data property keys into two DynamicFrames.
// The output is a collection of DynamicFrames: one with selected data property
// keys, and one with the remaining data property keys.
type SplitFields struct {
	_ struct{} `type:"structure"`

	// The data inputs identified by their node names.
	//
	// Inputs is a required field
	Inputs []*string `min:"1" type:"list" required:"true"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// A JSON path to a variable in the data structure.
	//
	// Paths is a required field
	Paths [][]*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 SplitFields) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SplitFields) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SplitFields) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SplitFields"}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 1))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Paths == nil {
		invalidParams.Add(request.NewErrParamRequired("Paths"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInputs sets the Inputs field's value.
func (s *SplitFields) SetInputs(v []*string) *SplitFields {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *SplitFields) SetName(v string) *SplitFields {
	s.Name = &v
	return s
}

// SetPaths sets the Paths field's value.
func (s *SplitFields) SetPaths(v [][]*string) *SplitFields {
	s.Paths = v
	return s
}

// Represents a single entry in the list of values for SqlAliases.
type SqlAlias struct {
	_ struct{} `type:"structure"`

	// A temporary name given to a table, or a column in a table.
	//
	// Alias is a required field
	Alias *string `type:"string" required:"true"`

	// A table, or a column in a table.
	//
	// From is a required field
	From *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 SqlAlias) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SqlAlias) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SqlAlias) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SqlAlias"}
	if s.Alias == nil {
		invalidParams.Add(request.NewErrParamRequired("Alias"))
	}
	if s.From == nil {
		invalidParams.Add(request.NewErrParamRequired("From"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAlias sets the Alias field's value.
func (s *SqlAlias) SetAlias(v string) *SqlAlias {
	s.Alias = &v
	return s
}

// SetFrom sets the From field's value.
func (s *SqlAlias) SetFrom(v string) *SqlAlias {
	s.From = &v
	return s
}

type StartBlueprintRunInput struct {
	_ struct{} `type:"structure"`

	// The name of the blueprint.
	//
	// BlueprintName is a required field
	BlueprintName *string `min:"1" type:"string" required:"true"`

	// Specifies the parameters as a BlueprintParameters object.
	Parameters *string `min:"1" type:"string"`

	// Specifies the IAM role used to create the workflow.
	//
	// RoleArn is a required field
	RoleArn *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 StartBlueprintRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartBlueprintRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartBlueprintRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartBlueprintRunInput"}
	if s.BlueprintName == nil {
		invalidParams.Add(request.NewErrParamRequired("BlueprintName"))
	}
	if s.BlueprintName != nil && len(*s.BlueprintName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("BlueprintName", 1))
	}
	if s.Parameters != nil && len(*s.Parameters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Parameters", 1))
	}
	if s.RoleArn == nil {
		invalidParams.Add(request.NewErrParamRequired("RoleArn"))
	}
	if s.RoleArn != nil && len(*s.RoleArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RoleArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBlueprintName sets the BlueprintName field's value.
func (s *StartBlueprintRunInput) SetBlueprintName(v string) *StartBlueprintRunInput {
	s.BlueprintName = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *StartBlueprintRunInput) SetParameters(v string) *StartBlueprintRunInput {
	s.Parameters = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *StartBlueprintRunInput) SetRoleArn(v string) *StartBlueprintRunInput {
	s.RoleArn = &v
	return s
}

type StartBlueprintRunOutput struct {
	_ struct{} `type:"structure"`

	// The run ID for this blueprint run.
	RunId *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 StartBlueprintRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartBlueprintRunOutput) GoString() string {
	return s.String()
}

// SetRunId sets the RunId field's value.
func (s *StartBlueprintRunOutput) SetRunId(v string) *StartBlueprintRunOutput {
	s.RunId = &v
	return s
}

type StartColumnStatisticsTaskRunInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the table reside. If none is supplied, the
	// Amazon Web Services account ID is used by default.
	CatalogID *string `min:"1" type:"string"`

	// A list of the column names to generate statistics. If none is supplied, all
	// column names for the table will be used by default.
	ColumnNameList []*string `type:"list"`

	// The name of the database where the table resides.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The IAM role that the service assumes to generate statistics.
	//
	// Role is a required field
	Role *string `min:"1" type:"string" required:"true"`

	// The percentage of rows used to generate statistics. If none is supplied,
	// the entire table will be used to generate stats.
	SampleSize *float64 `type:"double"`

	// Name of the security configuration that is used to encrypt CloudWatch logs
	// for the column stats task run.
	SecurityConfiguration *string `min:"1" type:"string"`

	// The name of the table to generate statistics.
	//
	// TableName is a required field
	TableName *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 StartColumnStatisticsTaskRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartColumnStatisticsTaskRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartColumnStatisticsTaskRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartColumnStatisticsTaskRunInput"}
	if s.CatalogID != nil && len(*s.CatalogID) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogID", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 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 s.SecurityConfiguration != nil && len(*s.SecurityConfiguration) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecurityConfiguration", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogID sets the CatalogID field's value.
func (s *StartColumnStatisticsTaskRunInput) SetCatalogID(v string) *StartColumnStatisticsTaskRunInput {
	s.CatalogID = &v
	return s
}

// SetColumnNameList sets the ColumnNameList field's value.
func (s *StartColumnStatisticsTaskRunInput) SetColumnNameList(v []*string) *StartColumnStatisticsTaskRunInput {
	s.ColumnNameList = v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *StartColumnStatisticsTaskRunInput) SetDatabaseName(v string) *StartColumnStatisticsTaskRunInput {
	s.DatabaseName = &v
	return s
}

// SetRole sets the Role field's value.
func (s *StartColumnStatisticsTaskRunInput) SetRole(v string) *StartColumnStatisticsTaskRunInput {
	s.Role = &v
	return s
}

// SetSampleSize sets the SampleSize field's value.
func (s *StartColumnStatisticsTaskRunInput) SetSampleSize(v float64) *StartColumnStatisticsTaskRunInput {
	s.SampleSize = &v
	return s
}

// SetSecurityConfiguration sets the SecurityConfiguration field's value.
func (s *StartColumnStatisticsTaskRunInput) SetSecurityConfiguration(v string) *StartColumnStatisticsTaskRunInput {
	s.SecurityConfiguration = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *StartColumnStatisticsTaskRunInput) SetTableName(v string) *StartColumnStatisticsTaskRunInput {
	s.TableName = &v
	return s
}

type StartColumnStatisticsTaskRunOutput struct {
	_ struct{} `type:"structure"`

	// The identifier for the column statistics task run.
	ColumnStatisticsTaskRunId *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 StartColumnStatisticsTaskRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartColumnStatisticsTaskRunOutput) GoString() string {
	return s.String()
}

// SetColumnStatisticsTaskRunId sets the ColumnStatisticsTaskRunId field's value.
func (s *StartColumnStatisticsTaskRunOutput) SetColumnStatisticsTaskRunId(v string) *StartColumnStatisticsTaskRunOutput {
	s.ColumnStatisticsTaskRunId = &v
	return s
}

type StartCrawlerInput struct {
	_ struct{} `type:"structure"`

	// Name of the crawler to start.
	//
	// 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 StartCrawlerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartCrawlerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartCrawlerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartCrawlerInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *StartCrawlerInput) SetName(v string) *StartCrawlerInput {
	s.Name = &v
	return s
}

type StartCrawlerOutput 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 StartCrawlerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartCrawlerOutput) GoString() string {
	return s.String()
}

type StartCrawlerScheduleInput struct {
	_ struct{} `type:"structure"`

	// Name of the crawler to schedule.
	//
	// CrawlerName is a required field
	CrawlerName *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 StartCrawlerScheduleInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartCrawlerScheduleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartCrawlerScheduleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartCrawlerScheduleInput"}
	if s.CrawlerName == nil {
		invalidParams.Add(request.NewErrParamRequired("CrawlerName"))
	}
	if s.CrawlerName != nil && len(*s.CrawlerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CrawlerName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCrawlerName sets the CrawlerName field's value.
func (s *StartCrawlerScheduleInput) SetCrawlerName(v string) *StartCrawlerScheduleInput {
	s.CrawlerName = &v
	return s
}

type StartCrawlerScheduleOutput 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 StartCrawlerScheduleOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartCrawlerScheduleOutput) GoString() string {
	return s.String()
}

type StartDataQualityRuleRecommendationRunInput struct {
	_ struct{} `type:"structure"`

	// Used for idempotency and is recommended to be set to a random ID (such as
	// a UUID) to avoid creating or starting multiple instances of the same resource.
	ClientToken *string `min:"1" type:"string"`

	// A name for the ruleset.
	CreatedRulesetName *string `min:"1" type:"string"`

	// The data source (Glue table) associated with this run.
	//
	// DataSource is a required field
	DataSource *DataSource `type:"structure" required:"true"`

	// The number of G.1X workers to be used in the run. The default is 5.
	NumberOfWorkers *int64 `type:"integer"`

	// An IAM role supplied to encrypt the results of the run.
	//
	// Role is a required field
	Role *string `type:"string" required:"true"`

	// The timeout for a run in minutes. This is the maximum time that a run can
	// consume resources before it is terminated and enters TIMEOUT status. The
	// default is 2,880 minutes (48 hours).
	Timeout *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 StartDataQualityRuleRecommendationRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartDataQualityRuleRecommendationRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartDataQualityRuleRecommendationRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartDataQualityRuleRecommendationRunInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.CreatedRulesetName != nil && len(*s.CreatedRulesetName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CreatedRulesetName", 1))
	}
	if s.DataSource == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSource"))
	}
	if s.Role == nil {
		invalidParams.Add(request.NewErrParamRequired("Role"))
	}
	if s.Timeout != nil && *s.Timeout < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Timeout", 1))
	}
	if s.DataSource != nil {
		if err := s.DataSource.Validate(); err != nil {
			invalidParams.AddNested("DataSource", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *StartDataQualityRuleRecommendationRunInput) SetClientToken(v string) *StartDataQualityRuleRecommendationRunInput {
	s.ClientToken = &v
	return s
}

// SetCreatedRulesetName sets the CreatedRulesetName field's value.
func (s *StartDataQualityRuleRecommendationRunInput) SetCreatedRulesetName(v string) *StartDataQualityRuleRecommendationRunInput {
	s.CreatedRulesetName = &v
	return s
}

// SetDataSource sets the DataSource field's value.
func (s *StartDataQualityRuleRecommendationRunInput) SetDataSource(v *DataSource) *StartDataQualityRuleRecommendationRunInput {
	s.DataSource = v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *StartDataQualityRuleRecommendationRunInput) SetNumberOfWorkers(v int64) *StartDataQualityRuleRecommendationRunInput {
	s.NumberOfWorkers = &v
	return s
}

// SetRole sets the Role field's value.
func (s *StartDataQualityRuleRecommendationRunInput) SetRole(v string) *StartDataQualityRuleRecommendationRunInput {
	s.Role = &v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *StartDataQualityRuleRecommendationRunInput) SetTimeout(v int64) *StartDataQualityRuleRecommendationRunInput {
	s.Timeout = &v
	return s
}

type StartDataQualityRuleRecommendationRunOutput struct {
	_ struct{} `type:"structure"`

	// The unique run identifier associated with this run.
	RunId *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 StartDataQualityRuleRecommendationRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartDataQualityRuleRecommendationRunOutput) GoString() string {
	return s.String()
}

// SetRunId sets the RunId field's value.
func (s *StartDataQualityRuleRecommendationRunOutput) SetRunId(v string) *StartDataQualityRuleRecommendationRunOutput {
	s.RunId = &v
	return s
}

type StartDataQualityRulesetEvaluationRunInput struct {
	_ struct{} `type:"structure"`

	// A map of reference strings to additional data sources you can specify for
	// an evaluation run.
	AdditionalDataSources map[string]*DataSource `type:"map"`

	// Additional run options you can specify for an evaluation run.
	AdditionalRunOptions *DataQualityEvaluationRunAdditionalRunOptions `type:"structure"`

	// Used for idempotency and is recommended to be set to a random ID (such as
	// a UUID) to avoid creating or starting multiple instances of the same resource.
	ClientToken *string `min:"1" type:"string"`

	// The data source (Glue table) associated with this run.
	//
	// DataSource is a required field
	DataSource *DataSource `type:"structure" required:"true"`

	// The number of G.1X workers to be used in the run. The default is 5.
	NumberOfWorkers *int64 `type:"integer"`

	// An IAM role supplied to encrypt the results of the run.
	//
	// Role is a required field
	Role *string `type:"string" required:"true"`

	// A list of ruleset names.
	//
	// RulesetNames is a required field
	RulesetNames []*string `min:"1" type:"list" required:"true"`

	// The timeout for a run in minutes. This is the maximum time that a run can
	// consume resources before it is terminated and enters TIMEOUT status. The
	// default is 2,880 minutes (48 hours).
	Timeout *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 StartDataQualityRulesetEvaluationRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartDataQualityRulesetEvaluationRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartDataQualityRulesetEvaluationRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartDataQualityRulesetEvaluationRunInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.DataSource == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSource"))
	}
	if s.Role == nil {
		invalidParams.Add(request.NewErrParamRequired("Role"))
	}
	if s.RulesetNames == nil {
		invalidParams.Add(request.NewErrParamRequired("RulesetNames"))
	}
	if s.RulesetNames != nil && len(s.RulesetNames) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RulesetNames", 1))
	}
	if s.Timeout != nil && *s.Timeout < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Timeout", 1))
	}
	if s.AdditionalDataSources != nil {
		for i, v := range s.AdditionalDataSources {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AdditionalDataSources", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.DataSource != nil {
		if err := s.DataSource.Validate(); err != nil {
			invalidParams.AddNested("DataSource", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalDataSources sets the AdditionalDataSources field's value.
func (s *StartDataQualityRulesetEvaluationRunInput) SetAdditionalDataSources(v map[string]*DataSource) *StartDataQualityRulesetEvaluationRunInput {
	s.AdditionalDataSources = v
	return s
}

// SetAdditionalRunOptions sets the AdditionalRunOptions field's value.
func (s *StartDataQualityRulesetEvaluationRunInput) SetAdditionalRunOptions(v *DataQualityEvaluationRunAdditionalRunOptions) *StartDataQualityRulesetEvaluationRunInput {
	s.AdditionalRunOptions = v
	return s
}

// SetClientToken sets the ClientToken field's value.
func (s *StartDataQualityRulesetEvaluationRunInput) SetClientToken(v string) *StartDataQualityRulesetEvaluationRunInput {
	s.ClientToken = &v
	return s
}

// SetDataSource sets the DataSource field's value.
func (s *StartDataQualityRulesetEvaluationRunInput) SetDataSource(v *DataSource) *StartDataQualityRulesetEvaluationRunInput {
	s.DataSource = v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *StartDataQualityRulesetEvaluationRunInput) SetNumberOfWorkers(v int64) *StartDataQualityRulesetEvaluationRunInput {
	s.NumberOfWorkers = &v
	return s
}

// SetRole sets the Role field's value.
func (s *StartDataQualityRulesetEvaluationRunInput) SetRole(v string) *StartDataQualityRulesetEvaluationRunInput {
	s.Role = &v
	return s
}

// SetRulesetNames sets the RulesetNames field's value.
func (s *StartDataQualityRulesetEvaluationRunInput) SetRulesetNames(v []*string) *StartDataQualityRulesetEvaluationRunInput {
	s.RulesetNames = v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *StartDataQualityRulesetEvaluationRunInput) SetTimeout(v int64) *StartDataQualityRulesetEvaluationRunInput {
	s.Timeout = &v
	return s
}

type StartDataQualityRulesetEvaluationRunOutput struct {
	_ struct{} `type:"structure"`

	// The unique run identifier associated with this run.
	RunId *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 StartDataQualityRulesetEvaluationRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartDataQualityRulesetEvaluationRunOutput) GoString() string {
	return s.String()
}

// SetRunId sets the RunId field's value.
func (s *StartDataQualityRulesetEvaluationRunOutput) SetRunId(v string) *StartDataQualityRulesetEvaluationRunOutput {
	s.RunId = &v
	return s
}

type StartExportLabelsTaskRunInput struct {
	_ struct{} `type:"structure"`

	// The Amazon S3 path where you export the labels.
	//
	// OutputS3Path is a required field
	OutputS3Path *string `type:"string" required:"true"`

	// The unique identifier of the machine learning transform.
	//
	// TransformId is a required field
	TransformId *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 StartExportLabelsTaskRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartExportLabelsTaskRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartExportLabelsTaskRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartExportLabelsTaskRunInput"}
	if s.OutputS3Path == nil {
		invalidParams.Add(request.NewErrParamRequired("OutputS3Path"))
	}
	if s.TransformId == nil {
		invalidParams.Add(request.NewErrParamRequired("TransformId"))
	}
	if s.TransformId != nil && len(*s.TransformId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TransformId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetOutputS3Path sets the OutputS3Path field's value.
func (s *StartExportLabelsTaskRunInput) SetOutputS3Path(v string) *StartExportLabelsTaskRunInput {
	s.OutputS3Path = &v
	return s
}

// SetTransformId sets the TransformId field's value.
func (s *StartExportLabelsTaskRunInput) SetTransformId(v string) *StartExportLabelsTaskRunInput {
	s.TransformId = &v
	return s
}

type StartExportLabelsTaskRunOutput struct {
	_ struct{} `type:"structure"`

	// The unique identifier for the task run.
	TaskRunId *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 StartExportLabelsTaskRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartExportLabelsTaskRunOutput) GoString() string {
	return s.String()
}

// SetTaskRunId sets the TaskRunId field's value.
func (s *StartExportLabelsTaskRunOutput) SetTaskRunId(v string) *StartExportLabelsTaskRunOutput {
	s.TaskRunId = &v
	return s
}

type StartImportLabelsTaskRunInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Simple Storage Service (Amazon S3) path from where you import
	// the labels.
	//
	// InputS3Path is a required field
	InputS3Path *string `type:"string" required:"true"`

	// Indicates whether to overwrite your existing labels.
	ReplaceAllLabels *bool `type:"boolean"`

	// The unique identifier of the machine learning transform.
	//
	// TransformId is a required field
	TransformId *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 StartImportLabelsTaskRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartImportLabelsTaskRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartImportLabelsTaskRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartImportLabelsTaskRunInput"}
	if s.InputS3Path == nil {
		invalidParams.Add(request.NewErrParamRequired("InputS3Path"))
	}
	if s.TransformId == nil {
		invalidParams.Add(request.NewErrParamRequired("TransformId"))
	}
	if s.TransformId != nil && len(*s.TransformId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TransformId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInputS3Path sets the InputS3Path field's value.
func (s *StartImportLabelsTaskRunInput) SetInputS3Path(v string) *StartImportLabelsTaskRunInput {
	s.InputS3Path = &v
	return s
}

// SetReplaceAllLabels sets the ReplaceAllLabels field's value.
func (s *StartImportLabelsTaskRunInput) SetReplaceAllLabels(v bool) *StartImportLabelsTaskRunInput {
	s.ReplaceAllLabels = &v
	return s
}

// SetTransformId sets the TransformId field's value.
func (s *StartImportLabelsTaskRunInput) SetTransformId(v string) *StartImportLabelsTaskRunInput {
	s.TransformId = &v
	return s
}

type StartImportLabelsTaskRunOutput struct {
	_ struct{} `type:"structure"`

	// The unique identifier for the task run.
	TaskRunId *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 StartImportLabelsTaskRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartImportLabelsTaskRunOutput) GoString() string {
	return s.String()
}

// SetTaskRunId sets the TaskRunId field's value.
func (s *StartImportLabelsTaskRunOutput) SetTaskRunId(v string) *StartImportLabelsTaskRunOutput {
	s.TaskRunId = &v
	return s
}

type StartJobRunInput struct {
	_ struct{} `type:"structure"`

	// This field is deprecated. Use MaxCapacity instead.
	//
	// The number of Glue data processing units (DPUs) to allocate to this JobRun.
	// You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative
	// measure of processing power that consists of 4 vCPUs of compute capacity
	// and 16 GB of memory. For more information, see the Glue pricing page (https://aws.amazon.com/glue/pricing/).
	//
	// Deprecated: This property is deprecated, use MaxCapacity instead.
	AllocatedCapacity *int64 `deprecated:"true" type:"integer"`

	// The job arguments associated with this run. For this job run, they replace
	// the default arguments set in the job definition itself.
	//
	// You can specify arguments here that your own job-execution script consumes,
	// as well as arguments that Glue itself consumes.
	//
	// Job arguments may be logged. Do not pass plaintext secrets as arguments.
	// Retrieve secrets from a Glue Connection, Secrets Manager or other secret
	// management mechanism if you intend to keep them within the Job.
	//
	// For information about how to specify and consume your own Job arguments,
	// see the Calling Glue APIs in Python (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html)
	// topic in the developer guide.
	//
	// For information about the arguments you can provide to this field when configuring
	// Spark jobs, see the Special Parameters Used by Glue (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html)
	// topic in the developer guide.
	//
	// For information about the arguments you can provide to this field when configuring
	// Ray jobs, see Using job parameters in Ray jobs (https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html)
	// in the developer guide.
	Arguments map[string]*string `type:"map"`

	// Indicates whether the job is run with a standard or flexible execution class.
	// The standard execution-class is ideal for time-sensitive workloads that require
	// fast job startup and dedicated resources.
	//
	// The flexible execution class is appropriate for time-insensitive jobs whose
	// start and completion times may vary.
	//
	// Only jobs with Glue version 3.0 and above and command type glueetl will be
	// allowed to set ExecutionClass to FLEX. The flexible execution class is available
	// for Spark jobs.
	ExecutionClass *string `type:"string" enum:"ExecutionClass"`

	// The name of the job definition to use.
	//
	// JobName is a required field
	JobName *string `min:"1" type:"string" required:"true"`

	// The ID of a previous JobRun to retry.
	JobRunId *string `min:"1" type:"string"`

	// For Glue version 1.0 or earlier jobs, using the standard worker type, the
	// number of Glue data processing units (DPUs) that can be allocated when this
	// job runs. A DPU is a relative measure of processing power that consists of
	// 4 vCPUs of compute capacity and 16 GB of memory. For more information, see
	// the Glue pricing page (https://aws.amazon.com/glue/pricing/).
	//
	// For Glue version 2.0+ jobs, you cannot specify a Maximum capacity. Instead,
	// you should specify a Worker type and the Number of workers.
	//
	// Do not set MaxCapacity if using WorkerType and NumberOfWorkers.
	//
	// The value that can be allocated for MaxCapacity depends on whether you are
	// running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming
	// ETL job:
	//
	//    * When you specify a Python shell job (JobCommand.Name="pythonshell"),
	//    you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.
	//
	//    * When you specify an Apache Spark ETL job (JobCommand.Name="glueetl")
	//    or Apache Spark streaming ETL job (JobCommand.Name="gluestreaming"), you
	//    can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type
	//    cannot have a fractional DPU allocation.
	MaxCapacity *float64 `type:"double"`

	// Specifies configuration properties of a job run notification.
	NotificationProperty *NotificationProperty `type:"structure"`

	// The number of workers of a defined workerType that are allocated when a job
	// runs.
	NumberOfWorkers *int64 `type:"integer"`

	// The name of the SecurityConfiguration structure to be used with this job
	// run.
	SecurityConfiguration *string `min:"1" type:"string"`

	// The JobRun timeout in minutes. This is the maximum time that a job run can
	// consume resources before it is terminated and enters TIMEOUT status. This
	// value overrides the timeout value set in the parent job.
	//
	// Streaming jobs must have timeout values less than 7 days or 10080 minutes.
	// When the value is left blank, the job will be restarted after 7 days based
	// if you have not setup a maintenance window. If you have setup maintenance
	// window, it will be restarted during the maintenance window after 7 days.
	Timeout *int64 `min:"1" type:"integer"`

	// The type of predefined worker that is allocated when a job runs. Accepts
	// a value of G.1X, G.2X, G.4X, G.8X or G.025X for Spark jobs. Accepts the value
	// Z.2X for Ray jobs.
	//
	//    * For the G.1X worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB
	//    of memory) with 84GB disk (approximately 34GB free), and provides 1 executor
	//    per worker. We recommend this worker type for workloads such as data transforms,
	//    joins, and queries, to offers a scalable and cost effective way to run
	//    most jobs.
	//
	//    * For the G.2X worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB
	//    of memory) with 128GB disk (approximately 77GB free), and provides 1 executor
	//    per worker. We recommend this worker type for workloads such as data transforms,
	//    joins, and queries, to offers a scalable and cost effective way to run
	//    most jobs.
	//
	//    * For the G.4X worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB
	//    of memory) with 256GB disk (approximately 235GB free), and provides 1
	//    executor per worker. We recommend this worker type for jobs whose workloads
	//    contain your most demanding transforms, aggregations, joins, and queries.
	//    This worker type is available only for Glue version 3.0 or later Spark
	//    ETL jobs in the following Amazon Web Services Regions: US East (Ohio),
	//    US East (N. Virginia), US West (Oregon), Asia Pacific (Singapore), Asia
	//    Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt),
	//    Europe (Ireland), and Europe (Stockholm).
	//
	//    * For the G.8X worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB
	//    of memory) with 512GB disk (approximately 487GB free), and provides 1
	//    executor per worker. We recommend this worker type for jobs whose workloads
	//    contain your most demanding transforms, aggregations, joins, and queries.
	//    This worker type is available only for Glue version 3.0 or later Spark
	//    ETL jobs, in the same Amazon Web Services Regions as supported for the
	//    G.4X worker type.
	//
	//    * For the G.025X worker type, each worker maps to 0.25 DPU (2 vCPUs, 4
	//    GB of memory) with 84GB disk (approximately 34GB free), and provides 1
	//    executor per worker. We recommend this worker type for low volume streaming
	//    jobs. This worker type is only available for Glue version 3.0 streaming
	//    jobs.
	//
	//    * For the Z.2X worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB
	//    of memory) with 128 GB disk (approximately 120GB free), and provides up
	//    to 8 Ray workers based on the autoscaler.
	WorkerType *string `type:"string" enum:"WorkerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartJobRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartJobRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartJobRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartJobRunInput"}
	if s.JobName == nil {
		invalidParams.Add(request.NewErrParamRequired("JobName"))
	}
	if s.JobName != nil && len(*s.JobName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("JobName", 1))
	}
	if s.JobRunId != nil && len(*s.JobRunId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("JobRunId", 1))
	}
	if s.SecurityConfiguration != nil && len(*s.SecurityConfiguration) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecurityConfiguration", 1))
	}
	if s.Timeout != nil && *s.Timeout < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Timeout", 1))
	}
	if s.NotificationProperty != nil {
		if err := s.NotificationProperty.Validate(); err != nil {
			invalidParams.AddNested("NotificationProperty", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllocatedCapacity sets the AllocatedCapacity field's value.
func (s *StartJobRunInput) SetAllocatedCapacity(v int64) *StartJobRunInput {
	s.AllocatedCapacity = &v
	return s
}

// SetArguments sets the Arguments field's value.
func (s *StartJobRunInput) SetArguments(v map[string]*string) *StartJobRunInput {
	s.Arguments = v
	return s
}

// SetExecutionClass sets the ExecutionClass field's value.
func (s *StartJobRunInput) SetExecutionClass(v string) *StartJobRunInput {
	s.ExecutionClass = &v
	return s
}

// SetJobName sets the JobName field's value.
func (s *StartJobRunInput) SetJobName(v string) *StartJobRunInput {
	s.JobName = &v
	return s
}

// SetJobRunId sets the JobRunId field's value.
func (s *StartJobRunInput) SetJobRunId(v string) *StartJobRunInput {
	s.JobRunId = &v
	return s
}

// SetMaxCapacity sets the MaxCapacity field's value.
func (s *StartJobRunInput) SetMaxCapacity(v float64) *StartJobRunInput {
	s.MaxCapacity = &v
	return s
}

// SetNotificationProperty sets the NotificationProperty field's value.
func (s *StartJobRunInput) SetNotificationProperty(v *NotificationProperty) *StartJobRunInput {
	s.NotificationProperty = v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *StartJobRunInput) SetNumberOfWorkers(v int64) *StartJobRunInput {
	s.NumberOfWorkers = &v
	return s
}

// SetSecurityConfiguration sets the SecurityConfiguration field's value.
func (s *StartJobRunInput) SetSecurityConfiguration(v string) *StartJobRunInput {
	s.SecurityConfiguration = &v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *StartJobRunInput) SetTimeout(v int64) *StartJobRunInput {
	s.Timeout = &v
	return s
}

// SetWorkerType sets the WorkerType field's value.
func (s *StartJobRunInput) SetWorkerType(v string) *StartJobRunInput {
	s.WorkerType = &v
	return s
}

type StartJobRunOutput struct {
	_ struct{} `type:"structure"`

	// The ID assigned to this job run.
	JobRunId *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 StartJobRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartJobRunOutput) GoString() string {
	return s.String()
}

// SetJobRunId sets the JobRunId field's value.
func (s *StartJobRunOutput) SetJobRunId(v string) *StartJobRunOutput {
	s.JobRunId = &v
	return s
}

type StartMLEvaluationTaskRunInput struct {
	_ struct{} `type:"structure"`

	// The unique identifier of the machine learning transform.
	//
	// TransformId is a required field
	TransformId *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 StartMLEvaluationTaskRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartMLEvaluationTaskRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartMLEvaluationTaskRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartMLEvaluationTaskRunInput"}
	if s.TransformId == nil {
		invalidParams.Add(request.NewErrParamRequired("TransformId"))
	}
	if s.TransformId != nil && len(*s.TransformId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TransformId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetTransformId sets the TransformId field's value.
func (s *StartMLEvaluationTaskRunInput) SetTransformId(v string) *StartMLEvaluationTaskRunInput {
	s.TransformId = &v
	return s
}

type StartMLEvaluationTaskRunOutput struct {
	_ struct{} `type:"structure"`

	// The unique identifier associated with this run.
	TaskRunId *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 StartMLEvaluationTaskRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartMLEvaluationTaskRunOutput) GoString() string {
	return s.String()
}

// SetTaskRunId sets the TaskRunId field's value.
func (s *StartMLEvaluationTaskRunOutput) SetTaskRunId(v string) *StartMLEvaluationTaskRunOutput {
	s.TaskRunId = &v
	return s
}

type StartMLLabelingSetGenerationTaskRunInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Simple Storage Service (Amazon S3) path where you generate the
	// labeling set.
	//
	// OutputS3Path is a required field
	OutputS3Path *string `type:"string" required:"true"`

	// The unique identifier of the machine learning transform.
	//
	// TransformId is a required field
	TransformId *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 StartMLLabelingSetGenerationTaskRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartMLLabelingSetGenerationTaskRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartMLLabelingSetGenerationTaskRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartMLLabelingSetGenerationTaskRunInput"}
	if s.OutputS3Path == nil {
		invalidParams.Add(request.NewErrParamRequired("OutputS3Path"))
	}
	if s.TransformId == nil {
		invalidParams.Add(request.NewErrParamRequired("TransformId"))
	}
	if s.TransformId != nil && len(*s.TransformId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TransformId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetOutputS3Path sets the OutputS3Path field's value.
func (s *StartMLLabelingSetGenerationTaskRunInput) SetOutputS3Path(v string) *StartMLLabelingSetGenerationTaskRunInput {
	s.OutputS3Path = &v
	return s
}

// SetTransformId sets the TransformId field's value.
func (s *StartMLLabelingSetGenerationTaskRunInput) SetTransformId(v string) *StartMLLabelingSetGenerationTaskRunInput {
	s.TransformId = &v
	return s
}

type StartMLLabelingSetGenerationTaskRunOutput struct {
	_ struct{} `type:"structure"`

	// The unique run identifier that is associated with this task run.
	TaskRunId *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 StartMLLabelingSetGenerationTaskRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartMLLabelingSetGenerationTaskRunOutput) GoString() string {
	return s.String()
}

// SetTaskRunId sets the TaskRunId field's value.
func (s *StartMLLabelingSetGenerationTaskRunOutput) SetTaskRunId(v string) *StartMLLabelingSetGenerationTaskRunOutput {
	s.TaskRunId = &v
	return s
}

type StartTriggerInput struct {
	_ struct{} `type:"structure"`

	// The name of the trigger to start.
	//
	// 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 StartTriggerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartTriggerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartTriggerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartTriggerInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *StartTriggerInput) SetName(v string) *StartTriggerInput {
	s.Name = &v
	return s
}

type StartTriggerOutput struct {
	_ struct{} `type:"structure"`

	// The name of the trigger that was started.
	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 StartTriggerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartTriggerOutput) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *StartTriggerOutput) SetName(v string) *StartTriggerOutput {
	s.Name = &v
	return s
}

type StartWorkflowRunInput struct {
	_ struct{} `type:"structure"`

	// The name of the workflow to start.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The workflow run properties for the new workflow run.
	RunProperties 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 StartWorkflowRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartWorkflowRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartWorkflowRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartWorkflowRunInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *StartWorkflowRunInput) SetName(v string) *StartWorkflowRunInput {
	s.Name = &v
	return s
}

// SetRunProperties sets the RunProperties field's value.
func (s *StartWorkflowRunInput) SetRunProperties(v map[string]*string) *StartWorkflowRunInput {
	s.RunProperties = v
	return s
}

type StartWorkflowRunOutput struct {
	_ struct{} `type:"structure"`

	// An Id for the new run.
	RunId *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 StartWorkflowRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartWorkflowRunOutput) GoString() string {
	return s.String()
}

// SetRunId sets the RunId field's value.
func (s *StartWorkflowRunOutput) SetRunId(v string) *StartWorkflowRunOutput {
	s.RunId = &v
	return s
}

// The batch condition that started the workflow run. Either the number of events
// in the batch size arrived, in which case the BatchSize member is non-zero,
// or the batch window expired, in which case the BatchWindow member is non-zero.
type StartingEventBatchCondition struct {
	_ struct{} `type:"structure"`

	// Number of events in the batch.
	BatchSize *int64 `type:"integer"`

	// Duration of the batch window in seconds.
	BatchWindow *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 StartingEventBatchCondition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartingEventBatchCondition) GoString() string {
	return s.String()
}

// SetBatchSize sets the BatchSize field's value.
func (s *StartingEventBatchCondition) SetBatchSize(v int64) *StartingEventBatchCondition {
	s.BatchSize = &v
	return s
}

// SetBatchWindow sets the BatchWindow field's value.
func (s *StartingEventBatchCondition) SetBatchWindow(v int64) *StartingEventBatchCondition {
	s.BatchWindow = &v
	return s
}

// The statement or request for a particular action to occur in a session.
type Statement struct {
	_ struct{} `type:"structure"`

	// The execution code of the statement.
	Code *string `type:"string"`

	// The unix time and date that the job definition was completed.
	CompletedOn *int64 `type:"long"`

	// The ID of the statement.
	Id *int64 `type:"integer"`

	// The output in JSON.
	Output *StatementOutput_ `type:"structure"`

	// The code execution progress.
	Progress *float64 `type:"double"`

	// The unix time and date that the job definition was started.
	StartedOn *int64 `type:"long"`

	// The state while request is actioned.
	State *string `type:"string" enum:"StatementState"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Statement) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Statement) GoString() string {
	return s.String()
}

// SetCode sets the Code field's value.
func (s *Statement) SetCode(v string) *Statement {
	s.Code = &v
	return s
}

// SetCompletedOn sets the CompletedOn field's value.
func (s *Statement) SetCompletedOn(v int64) *Statement {
	s.CompletedOn = &v
	return s
}

// SetId sets the Id field's value.
func (s *Statement) SetId(v int64) *Statement {
	s.Id = &v
	return s
}

// SetOutput sets the Output field's value.
func (s *Statement) SetOutput(v *StatementOutput_) *Statement {
	s.Output = v
	return s
}

// SetProgress sets the Progress field's value.
func (s *Statement) SetProgress(v float64) *Statement {
	s.Progress = &v
	return s
}

// SetStartedOn sets the StartedOn field's value.
func (s *Statement) SetStartedOn(v int64) *Statement {
	s.StartedOn = &v
	return s
}

// SetState sets the State field's value.
func (s *Statement) SetState(v string) *Statement {
	s.State = &v
	return s
}

// The code execution output in JSON format.
type StatementOutputData struct {
	_ struct{} `type:"structure"`

	// The code execution output in text format.
	TextPlain *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 StatementOutputData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StatementOutputData) GoString() string {
	return s.String()
}

// SetTextPlain sets the TextPlain field's value.
func (s *StatementOutputData) SetTextPlain(v string) *StatementOutputData {
	s.TextPlain = &v
	return s
}

// The code execution output in JSON format.
type StatementOutput_ struct {
	_ struct{} `type:"structure"`

	// The code execution output.
	Data *StatementOutputData `type:"structure"`

	// The name of the error in the output.
	ErrorName *string `type:"string"`

	// The error value of the output.
	ErrorValue *string `type:"string"`

	// The execution count of the output.
	ExecutionCount *int64 `type:"integer"`

	// The status of the code execution output.
	Status *string `type:"string" enum:"StatementState"`

	// The traceback of the output.
	Traceback []*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 StatementOutput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StatementOutput_) GoString() string {
	return s.String()
}

// SetData sets the Data field's value.
func (s *StatementOutput_) SetData(v *StatementOutputData) *StatementOutput_ {
	s.Data = v
	return s
}

// SetErrorName sets the ErrorName field's value.
func (s *StatementOutput_) SetErrorName(v string) *StatementOutput_ {
	s.ErrorName = &v
	return s
}

// SetErrorValue sets the ErrorValue field's value.
func (s *StatementOutput_) SetErrorValue(v string) *StatementOutput_ {
	s.ErrorValue = &v
	return s
}

// SetExecutionCount sets the ExecutionCount field's value.
func (s *StatementOutput_) SetExecutionCount(v int64) *StatementOutput_ {
	s.ExecutionCount = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *StatementOutput_) SetStatus(v string) *StatementOutput_ {
	s.Status = &v
	return s
}

// SetTraceback sets the Traceback field's value.
func (s *StatementOutput_) SetTraceback(v []*string) *StatementOutput_ {
	s.Traceback = v
	return s
}

type StopColumnStatisticsTaskRunInput struct {
	_ struct{} `type:"structure"`

	// The name of the database where the table resides.
	//
	// DatabaseName is a required field
	DatabaseName *string `type:"string" required:"true"`

	// The name of the table.
	//
	// TableName is a required field
	TableName *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 StopColumnStatisticsTaskRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopColumnStatisticsTaskRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopColumnStatisticsTaskRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopColumnStatisticsTaskRunInput"}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *StopColumnStatisticsTaskRunInput) SetDatabaseName(v string) *StopColumnStatisticsTaskRunInput {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *StopColumnStatisticsTaskRunInput) SetTableName(v string) *StopColumnStatisticsTaskRunInput {
	s.TableName = &v
	return s
}

type StopColumnStatisticsTaskRunOutput 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 StopColumnStatisticsTaskRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopColumnStatisticsTaskRunOutput) GoString() string {
	return s.String()
}

type StopCrawlerInput struct {
	_ struct{} `type:"structure"`

	// Name of the crawler to stop.
	//
	// 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 StopCrawlerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopCrawlerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopCrawlerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopCrawlerInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *StopCrawlerInput) SetName(v string) *StopCrawlerInput {
	s.Name = &v
	return s
}

type StopCrawlerOutput 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 StopCrawlerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopCrawlerOutput) GoString() string {
	return s.String()
}

type StopCrawlerScheduleInput struct {
	_ struct{} `type:"structure"`

	// Name of the crawler whose schedule state to set.
	//
	// CrawlerName is a required field
	CrawlerName *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 StopCrawlerScheduleInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopCrawlerScheduleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopCrawlerScheduleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopCrawlerScheduleInput"}
	if s.CrawlerName == nil {
		invalidParams.Add(request.NewErrParamRequired("CrawlerName"))
	}
	if s.CrawlerName != nil && len(*s.CrawlerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CrawlerName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCrawlerName sets the CrawlerName field's value.
func (s *StopCrawlerScheduleInput) SetCrawlerName(v string) *StopCrawlerScheduleInput {
	s.CrawlerName = &v
	return s
}

type StopCrawlerScheduleOutput 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 StopCrawlerScheduleOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopCrawlerScheduleOutput) GoString() string {
	return s.String()
}

type StopSessionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the session to be stopped.
	//
	// Id is a required field
	Id *string `min:"1" type:"string" required:"true"`

	// The origin of the request.
	RequestOrigin *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 StopSessionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopSessionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopSessionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopSessionInput"}
	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.RequestOrigin != nil && len(*s.RequestOrigin) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RequestOrigin", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetId sets the Id field's value.
func (s *StopSessionInput) SetId(v string) *StopSessionInput {
	s.Id = &v
	return s
}

// SetRequestOrigin sets the RequestOrigin field's value.
func (s *StopSessionInput) SetRequestOrigin(v string) *StopSessionInput {
	s.RequestOrigin = &v
	return s
}

type StopSessionOutput struct {
	_ struct{} `type:"structure"`

	// Returns the Id of the stopped session.
	Id *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 StopSessionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopSessionOutput) GoString() string {
	return s.String()
}

// SetId sets the Id field's value.
func (s *StopSessionOutput) SetId(v string) *StopSessionOutput {
	s.Id = &v
	return s
}

type StopTriggerInput struct {
	_ struct{} `type:"structure"`

	// The name of the trigger to stop.
	//
	// 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 StopTriggerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopTriggerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopTriggerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopTriggerInput"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *StopTriggerInput) SetName(v string) *StopTriggerInput {
	s.Name = &v
	return s
}

type StopTriggerOutput struct {
	_ struct{} `type:"structure"`

	// The name of the trigger that was stopped.
	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 StopTriggerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopTriggerOutput) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *StopTriggerOutput) SetName(v string) *StopTriggerOutput {
	s.Name = &v
	return s
}

type StopWorkflowRunInput struct {
	_ struct{} `type:"structure"`

	// The name of the workflow to stop.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The ID of the workflow run to stop.
	//
	// RunId is a required field
	RunId *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 StopWorkflowRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopWorkflowRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StopWorkflowRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StopWorkflowRunInput"}
	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.RunId == nil {
		invalidParams.Add(request.NewErrParamRequired("RunId"))
	}
	if s.RunId != nil && len(*s.RunId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RunId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *StopWorkflowRunInput) SetName(v string) *StopWorkflowRunInput {
	s.Name = &v
	return s
}

// SetRunId sets the RunId field's value.
func (s *StopWorkflowRunInput) SetRunId(v string) *StopWorkflowRunInput {
	s.RunId = &v
	return s
}

type StopWorkflowRunOutput 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 StopWorkflowRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StopWorkflowRunOutput) GoString() string {
	return s.String()
}

// Describes the physical storage of table data.
type StorageDescriptor struct {
	_ struct{} `type:"structure"`

	// A list of locations that point to the path where a Delta table is located.
	AdditionalLocations []*string `type:"list"`

	// A list of reducer grouping columns, clustering columns, and bucketing columns
	// in the table.
	BucketColumns []*string `type:"list"`

	// A list of the Columns in the table.
	Columns []*Column `type:"list"`

	// True if the data in the table is compressed, or False if not.
	Compressed *bool `type:"boolean"`

	// The input format: SequenceFileInputFormat (binary), or TextInputFormat, or
	// a custom format.
	InputFormat *string `type:"string"`

	// The physical location of the table. By default, this takes the form of the
	// warehouse location, followed by the database location in the warehouse, followed
	// by the table name.
	Location *string `type:"string"`

	// Must be specified if the table contains any dimension columns.
	NumberOfBuckets *int64 `type:"integer"`

	// The output format: SequenceFileOutputFormat (binary), or IgnoreKeyTextOutputFormat,
	// or a custom format.
	OutputFormat *string `type:"string"`

	// The user-supplied properties in key-value form.
	Parameters map[string]*string `type:"map"`

	// An object that references a schema stored in the Glue Schema Registry.
	//
	// When creating a table, you can pass an empty list of columns for the schema,
	// and instead use a schema reference.
	SchemaReference *SchemaReference `type:"structure"`

	// The serialization/deserialization (SerDe) information.
	SerdeInfo *SerDeInfo `type:"structure"`

	// The information about values that appear frequently in a column (skewed values).
	SkewedInfo *SkewedInfo `type:"structure"`

	// A list specifying the sort order of each bucket in the table.
	SortColumns []*Order `type:"list"`

	// True if the table data is stored in subdirectories, or False if not.
	StoredAsSubDirectories *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 StorageDescriptor) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StorageDescriptor) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StorageDescriptor) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StorageDescriptor"}
	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.SchemaReference != nil {
		if err := s.SchemaReference.Validate(); err != nil {
			invalidParams.AddNested("SchemaReference", err.(request.ErrInvalidParams))
		}
	}
	if s.SerdeInfo != nil {
		if err := s.SerdeInfo.Validate(); err != nil {
			invalidParams.AddNested("SerdeInfo", err.(request.ErrInvalidParams))
		}
	}
	if s.SortColumns != nil {
		for i, v := range s.SortColumns {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SortColumns", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalLocations sets the AdditionalLocations field's value.
func (s *StorageDescriptor) SetAdditionalLocations(v []*string) *StorageDescriptor {
	s.AdditionalLocations = v
	return s
}

// SetBucketColumns sets the BucketColumns field's value.
func (s *StorageDescriptor) SetBucketColumns(v []*string) *StorageDescriptor {
	s.BucketColumns = v
	return s
}

// SetColumns sets the Columns field's value.
func (s *StorageDescriptor) SetColumns(v []*Column) *StorageDescriptor {
	s.Columns = v
	return s
}

// SetCompressed sets the Compressed field's value.
func (s *StorageDescriptor) SetCompressed(v bool) *StorageDescriptor {
	s.Compressed = &v
	return s
}

// SetInputFormat sets the InputFormat field's value.
func (s *StorageDescriptor) SetInputFormat(v string) *StorageDescriptor {
	s.InputFormat = &v
	return s
}

// SetLocation sets the Location field's value.
func (s *StorageDescriptor) SetLocation(v string) *StorageDescriptor {
	s.Location = &v
	return s
}

// SetNumberOfBuckets sets the NumberOfBuckets field's value.
func (s *StorageDescriptor) SetNumberOfBuckets(v int64) *StorageDescriptor {
	s.NumberOfBuckets = &v
	return s
}

// SetOutputFormat sets the OutputFormat field's value.
func (s *StorageDescriptor) SetOutputFormat(v string) *StorageDescriptor {
	s.OutputFormat = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *StorageDescriptor) SetParameters(v map[string]*string) *StorageDescriptor {
	s.Parameters = v
	return s
}

// SetSchemaReference sets the SchemaReference field's value.
func (s *StorageDescriptor) SetSchemaReference(v *SchemaReference) *StorageDescriptor {
	s.SchemaReference = v
	return s
}

// SetSerdeInfo sets the SerdeInfo field's value.
func (s *StorageDescriptor) SetSerdeInfo(v *SerDeInfo) *StorageDescriptor {
	s.SerdeInfo = v
	return s
}

// SetSkewedInfo sets the SkewedInfo field's value.
func (s *StorageDescriptor) SetSkewedInfo(v *SkewedInfo) *StorageDescriptor {
	s.SkewedInfo = v
	return s
}

// SetSortColumns sets the SortColumns field's value.
func (s *StorageDescriptor) SetSortColumns(v []*Order) *StorageDescriptor {
	s.SortColumns = v
	return s
}

// SetStoredAsSubDirectories sets the StoredAsSubDirectories field's value.
func (s *StorageDescriptor) SetStoredAsSubDirectories(v bool) *StorageDescriptor {
	s.StoredAsSubDirectories = &v
	return s
}

// Specifies options related to data preview for viewing a sample of your data.
type StreamingDataPreviewOptions struct {
	_ struct{} `type:"structure"`

	// The polling time in milliseconds.
	PollingTime *int64 `min:"10" type:"long"`

	// The limit to the number of records polled.
	RecordPollingLimit *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 StreamingDataPreviewOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StreamingDataPreviewOptions) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StreamingDataPreviewOptions) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StreamingDataPreviewOptions"}
	if s.PollingTime != nil && *s.PollingTime < 10 {
		invalidParams.Add(request.NewErrParamMinValue("PollingTime", 10))
	}
	if s.RecordPollingLimit != nil && *s.RecordPollingLimit < 1 {
		invalidParams.Add(request.NewErrParamMinValue("RecordPollingLimit", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetPollingTime sets the PollingTime field's value.
func (s *StreamingDataPreviewOptions) SetPollingTime(v int64) *StreamingDataPreviewOptions {
	s.PollingTime = &v
	return s
}

// SetRecordPollingLimit sets the RecordPollingLimit field's value.
func (s *StreamingDataPreviewOptions) SetRecordPollingLimit(v int64) *StreamingDataPreviewOptions {
	s.RecordPollingLimit = &v
	return s
}

// Defines column statistics supported for character sequence data values.
type StringColumnStatisticsData struct {
	_ struct{} `type:"structure"`

	// The average string length in the column.
	//
	// AverageLength is a required field
	AverageLength *float64 `type:"double" required:"true"`

	// The size of the longest string in the column.
	//
	// MaximumLength is a required field
	MaximumLength *int64 `type:"long" required:"true"`

	// The number of distinct values in a column.
	//
	// NumberOfDistinctValues is a required field
	NumberOfDistinctValues *int64 `type:"long" required:"true"`

	// The number of null values in the column.
	//
	// NumberOfNulls is a required field
	NumberOfNulls *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 StringColumnStatisticsData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StringColumnStatisticsData) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StringColumnStatisticsData) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StringColumnStatisticsData"}
	if s.AverageLength == nil {
		invalidParams.Add(request.NewErrParamRequired("AverageLength"))
	}
	if s.MaximumLength == nil {
		invalidParams.Add(request.NewErrParamRequired("MaximumLength"))
	}
	if s.NumberOfDistinctValues == nil {
		invalidParams.Add(request.NewErrParamRequired("NumberOfDistinctValues"))
	}
	if s.NumberOfNulls == nil {
		invalidParams.Add(request.NewErrParamRequired("NumberOfNulls"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAverageLength sets the AverageLength field's value.
func (s *StringColumnStatisticsData) SetAverageLength(v float64) *StringColumnStatisticsData {
	s.AverageLength = &v
	return s
}

// SetMaximumLength sets the MaximumLength field's value.
func (s *StringColumnStatisticsData) SetMaximumLength(v int64) *StringColumnStatisticsData {
	s.MaximumLength = &v
	return s
}

// SetNumberOfDistinctValues sets the NumberOfDistinctValues field's value.
func (s *StringColumnStatisticsData) SetNumberOfDistinctValues(v int64) *StringColumnStatisticsData {
	s.NumberOfDistinctValues = &v
	return s
}

// SetNumberOfNulls sets the NumberOfNulls field's value.
func (s *StringColumnStatisticsData) SetNumberOfNulls(v int64) *StringColumnStatisticsData {
	s.NumberOfNulls = &v
	return s
}

// A structure specifying the dialect and dialect version used by the query
// engine.
type SupportedDialect struct {
	_ struct{} `type:"structure"`

	// The dialect of the query engine.
	Dialect *string `type:"string" enum:"ViewDialect"`

	// The version of the dialect of the query engine. For example, 3.0.0.
	DialectVersion *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 SupportedDialect) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SupportedDialect) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SupportedDialect) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SupportedDialect"}
	if s.DialectVersion != nil && len(*s.DialectVersion) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DialectVersion", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDialect sets the Dialect field's value.
func (s *SupportedDialect) SetDialect(v string) *SupportedDialect {
	s.Dialect = &v
	return s
}

// SetDialectVersion sets the DialectVersion field's value.
func (s *SupportedDialect) SetDialectVersion(v string) *SupportedDialect {
	s.DialectVersion = &v
	return s
}

// The database and table in the Glue Data Catalog that is used for input or
// output data.
type Table struct {
	_ struct{} `type:"structure"`

	// Additional options for the table. Currently there are two keys supported:
	//
	//    * pushDownPredicate: to filter on partitions without having to list and
	//    read all the files in your dataset.
	//
	//    * catalogPartitionPredicate: to use server-side partition pruning using
	//    partition indexes in the Glue Data Catalog.
	AdditionalOptions map[string]*string `min:"1" type:"map"`

	// A unique identifier for the Glue Data Catalog.
	CatalogId *string `min:"1" type:"string"`

	// The name of the connection to the Glue Data Catalog.
	ConnectionName *string `min:"1" type:"string"`

	// A database name in the Glue Data Catalog.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// A table name in the Glue Data Catalog.
	//
	// TableName is a required field
	TableName *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 Table) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Table) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Table) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Table"}
	if s.AdditionalOptions != nil && len(s.AdditionalOptions) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AdditionalOptions", 1))
	}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.ConnectionName != nil && len(*s.ConnectionName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ConnectionName", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalOptions sets the AdditionalOptions field's value.
func (s *Table) SetAdditionalOptions(v map[string]*string) *Table {
	s.AdditionalOptions = v
	return s
}

// SetCatalogId sets the CatalogId field's value.
func (s *Table) SetCatalogId(v string) *Table {
	s.CatalogId = &v
	return s
}

// SetConnectionName sets the ConnectionName field's value.
func (s *Table) SetConnectionName(v string) *Table {
	s.ConnectionName = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *Table) SetDatabaseName(v string) *Table {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *Table) SetTableName(v string) *Table {
	s.TableName = &v
	return s
}

// Represents a collection of related data organized in columns and rows.
type TableData struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which the table resides.
	CatalogId *string `min:"1" type:"string"`

	// The time when the table definition was created in the Data Catalog.
	CreateTime *time.Time `type:"timestamp"`

	// The person or entity who created the table.
	CreatedBy *string `min:"1" type:"string"`

	// The name of the database where the table metadata resides. For Hive compatibility,
	// this must be all lowercase.
	DatabaseName *string `min:"1" type:"string"`

	// A description of the table.
	Description *string `type:"string"`

	// A FederatedTable structure that references an entity outside the Glue Data
	// Catalog.
	FederatedTable *FederatedTable `type:"structure"`

	// Specifies whether the view supports the SQL dialects of one or more different
	// query engines and can therefore be read by those engines.
	IsMultiDialectView *bool `type:"boolean"`

	// Indicates whether the table has been registered with Lake Formation.
	IsRegisteredWithLakeFormation *bool `type:"boolean"`

	// The last time that the table was accessed. This is usually taken from HDFS,
	// and might not be reliable.
	LastAccessTime *time.Time `type:"timestamp"`

	// The last time that column statistics were computed for this table.
	LastAnalyzedTime *time.Time `type:"timestamp"`

	// The table name. For Hive compatibility, this must be entirely lowercase.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The owner of the table.
	Owner *string `min:"1" type:"string"`

	// These key-value pairs define properties associated with the table.
	Parameters map[string]*string `type:"map"`

	// A list of columns by which the table is partitioned. Only primitive types
	// are supported as partition keys.
	//
	// When you create a table used by Amazon Athena, and you do not specify any
	// partitionKeys, you must at least set the value of partitionKeys to an empty
	// list. For example:
	//
	// "PartitionKeys": []
	PartitionKeys []*Column `type:"list"`

	// The retention time for this table.
	Retention *int64 `type:"integer"`

	// A storage descriptor containing information about the physical storage of
	// this table.
	StorageDescriptor *StorageDescriptor `type:"structure"`

	// The type of this table. Glue will create tables with the EXTERNAL_TABLE type.
	// Other services, such as Athena, may create tables with additional table types.
	//
	// Glue related table types:
	//
	// EXTERNAL_TABLE
	//
	// Hive compatible attribute - indicates a non-Hive managed table.
	//
	// GOVERNED
	//
	// Used by Lake Formation. The Glue Data Catalog understands GOVERNED.
	TableType *string `type:"string"`

	// A TableIdentifier structure that describes a target table for resource linking.
	TargetTable *TableIdentifier `type:"structure"`

	// The last time that the table was updated.
	UpdateTime *time.Time `type:"timestamp"`

	// The ID of the table version.
	VersionId *string `min:"1" type:"string"`

	// A structure that contains all the information that defines the view, including
	// the dialect or dialects for the view, and the query.
	ViewDefinition *ViewDefinition `type:"structure"`

	// Included for Apache Hive compatibility. Not used in the normal course of
	// Glue operations.
	ViewExpandedText *string `type:"string"`

	// Included for Apache Hive compatibility. Not used in the normal course of
	// Glue operations. If the table is a VIRTUAL_VIEW, certain Athena configuration
	// encoded in base64.
	ViewOriginalText *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 TableData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TableData) GoString() string {
	return s.String()
}

// SetCatalogId sets the CatalogId field's value.
func (s *TableData) SetCatalogId(v string) *TableData {
	s.CatalogId = &v
	return s
}

// SetCreateTime sets the CreateTime field's value.
func (s *TableData) SetCreateTime(v time.Time) *TableData {
	s.CreateTime = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *TableData) SetCreatedBy(v string) *TableData {
	s.CreatedBy = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *TableData) SetDatabaseName(v string) *TableData {
	s.DatabaseName = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *TableData) SetDescription(v string) *TableData {
	s.Description = &v
	return s
}

// SetFederatedTable sets the FederatedTable field's value.
func (s *TableData) SetFederatedTable(v *FederatedTable) *TableData {
	s.FederatedTable = v
	return s
}

// SetIsMultiDialectView sets the IsMultiDialectView field's value.
func (s *TableData) SetIsMultiDialectView(v bool) *TableData {
	s.IsMultiDialectView = &v
	return s
}

// SetIsRegisteredWithLakeFormation sets the IsRegisteredWithLakeFormation field's value.
func (s *TableData) SetIsRegisteredWithLakeFormation(v bool) *TableData {
	s.IsRegisteredWithLakeFormation = &v
	return s
}

// SetLastAccessTime sets the LastAccessTime field's value.
func (s *TableData) SetLastAccessTime(v time.Time) *TableData {
	s.LastAccessTime = &v
	return s
}

// SetLastAnalyzedTime sets the LastAnalyzedTime field's value.
func (s *TableData) SetLastAnalyzedTime(v time.Time) *TableData {
	s.LastAnalyzedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *TableData) SetName(v string) *TableData {
	s.Name = &v
	return s
}

// SetOwner sets the Owner field's value.
func (s *TableData) SetOwner(v string) *TableData {
	s.Owner = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *TableData) SetParameters(v map[string]*string) *TableData {
	s.Parameters = v
	return s
}

// SetPartitionKeys sets the PartitionKeys field's value.
func (s *TableData) SetPartitionKeys(v []*Column) *TableData {
	s.PartitionKeys = v
	return s
}

// SetRetention sets the Retention field's value.
func (s *TableData) SetRetention(v int64) *TableData {
	s.Retention = &v
	return s
}

// SetStorageDescriptor sets the StorageDescriptor field's value.
func (s *TableData) SetStorageDescriptor(v *StorageDescriptor) *TableData {
	s.StorageDescriptor = v
	return s
}

// SetTableType sets the TableType field's value.
func (s *TableData) SetTableType(v string) *TableData {
	s.TableType = &v
	return s
}

// SetTargetTable sets the TargetTable field's value.
func (s *TableData) SetTargetTable(v *TableIdentifier) *TableData {
	s.TargetTable = v
	return s
}

// SetUpdateTime sets the UpdateTime field's value.
func (s *TableData) SetUpdateTime(v time.Time) *TableData {
	s.UpdateTime = &v
	return s
}

// SetVersionId sets the VersionId field's value.
func (s *TableData) SetVersionId(v string) *TableData {
	s.VersionId = &v
	return s
}

// SetViewDefinition sets the ViewDefinition field's value.
func (s *TableData) SetViewDefinition(v *ViewDefinition) *TableData {
	s.ViewDefinition = v
	return s
}

// SetViewExpandedText sets the ViewExpandedText field's value.
func (s *TableData) SetViewExpandedText(v string) *TableData {
	s.ViewExpandedText = &v
	return s
}

// SetViewOriginalText sets the ViewOriginalText field's value.
func (s *TableData) SetViewOriginalText(v string) *TableData {
	s.ViewOriginalText = &v
	return s
}

// An error record for table operations.
type TableError struct {
	_ struct{} `type:"structure"`

	// The details about the error.
	ErrorDetail *ErrorDetail `type:"structure"`

	// The name of the table. For Hive compatibility, this must be entirely lowercase.
	TableName *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 TableError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TableError) GoString() string {
	return s.String()
}

// SetErrorDetail sets the ErrorDetail field's value.
func (s *TableError) SetErrorDetail(v *ErrorDetail) *TableError {
	s.ErrorDetail = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *TableError) SetTableName(v string) *TableError {
	s.TableName = &v
	return s
}

// A structure that describes a target table for resource linking.
type TableIdentifier struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which the table resides.
	CatalogId *string `min:"1" type:"string"`

	// The name of the catalog database that contains the target table.
	DatabaseName *string `min:"1" type:"string"`

	// The name of the target table.
	Name *string `min:"1" type:"string"`

	// Region of the target table.
	Region *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 TableIdentifier) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TableIdentifier) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableIdentifier) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableIdentifier"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.Region != nil && len(*s.Region) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Region", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *TableIdentifier) SetCatalogId(v string) *TableIdentifier {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *TableIdentifier) SetDatabaseName(v string) *TableIdentifier {
	s.DatabaseName = &v
	return s
}

// SetName sets the Name field's value.
func (s *TableIdentifier) SetName(v string) *TableIdentifier {
	s.Name = &v
	return s
}

// SetRegion sets the Region field's value.
func (s *TableIdentifier) SetRegion(v string) *TableIdentifier {
	s.Region = &v
	return s
}

// A structure used to define a table.
type TableInput struct {
	_ struct{} `type:"structure"`

	// A description of the table.
	Description *string `type:"string"`

	// The last time that the table was accessed.
	LastAccessTime *time.Time `type:"timestamp"`

	// The last time that column statistics were computed for this table.
	LastAnalyzedTime *time.Time `type:"timestamp"`

	// The table name. For Hive compatibility, this is folded to lowercase when
	// it is stored.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The table owner. Included for Apache Hive compatibility. Not used in the
	// normal course of Glue operations.
	Owner *string `min:"1" type:"string"`

	// These key-value pairs define properties associated with the table.
	Parameters map[string]*string `type:"map"`

	// A list of columns by which the table is partitioned. Only primitive types
	// are supported as partition keys.
	//
	// When you create a table used by Amazon Athena, and you do not specify any
	// partitionKeys, you must at least set the value of partitionKeys to an empty
	// list. For example:
	//
	// "PartitionKeys": []
	PartitionKeys []*Column `type:"list"`

	// The retention time for this table.
	Retention *int64 `type:"integer"`

	// A storage descriptor containing information about the physical storage of
	// this table.
	StorageDescriptor *StorageDescriptor `type:"structure"`

	// The type of this table. Glue will create tables with the EXTERNAL_TABLE type.
	// Other services, such as Athena, may create tables with additional table types.
	//
	// Glue related table types:
	//
	// EXTERNAL_TABLE
	//
	// Hive compatible attribute - indicates a non-Hive managed table.
	//
	// GOVERNED
	//
	// Used by Lake Formation. The Glue Data Catalog understands GOVERNED.
	TableType *string `type:"string"`

	// A TableIdentifier structure that describes a target table for resource linking.
	TargetTable *TableIdentifier `type:"structure"`

	// A structure that contains all the information that defines the view, including
	// the dialect or dialects for the view, and the query.
	ViewDefinition *ViewDefinitionInput_ `type:"structure"`

	// Included for Apache Hive compatibility. Not used in the normal course of
	// Glue operations.
	ViewExpandedText *string `type:"string"`

	// Included for Apache Hive compatibility. Not used in the normal course of
	// Glue operations. If the table is a VIRTUAL_VIEW, certain Athena configuration
	// encoded in base64.
	ViewOriginalText *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 TableInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TableInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableInput"}
	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.Owner != nil && len(*s.Owner) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Owner", 1))
	}
	if s.PartitionKeys != nil {
		for i, v := range s.PartitionKeys {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PartitionKeys", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.StorageDescriptor != nil {
		if err := s.StorageDescriptor.Validate(); err != nil {
			invalidParams.AddNested("StorageDescriptor", err.(request.ErrInvalidParams))
		}
	}
	if s.TargetTable != nil {
		if err := s.TargetTable.Validate(); err != nil {
			invalidParams.AddNested("TargetTable", err.(request.ErrInvalidParams))
		}
	}
	if s.ViewDefinition != nil {
		if err := s.ViewDefinition.Validate(); err != nil {
			invalidParams.AddNested("ViewDefinition", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *TableInput) SetDescription(v string) *TableInput {
	s.Description = &v
	return s
}

// SetLastAccessTime sets the LastAccessTime field's value.
func (s *TableInput) SetLastAccessTime(v time.Time) *TableInput {
	s.LastAccessTime = &v
	return s
}

// SetLastAnalyzedTime sets the LastAnalyzedTime field's value.
func (s *TableInput) SetLastAnalyzedTime(v time.Time) *TableInput {
	s.LastAnalyzedTime = &v
	return s
}

// SetName sets the Name field's value.
func (s *TableInput) SetName(v string) *TableInput {
	s.Name = &v
	return s
}

// SetOwner sets the Owner field's value.
func (s *TableInput) SetOwner(v string) *TableInput {
	s.Owner = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *TableInput) SetParameters(v map[string]*string) *TableInput {
	s.Parameters = v
	return s
}

// SetPartitionKeys sets the PartitionKeys field's value.
func (s *TableInput) SetPartitionKeys(v []*Column) *TableInput {
	s.PartitionKeys = v
	return s
}

// SetRetention sets the Retention field's value.
func (s *TableInput) SetRetention(v int64) *TableInput {
	s.Retention = &v
	return s
}

// SetStorageDescriptor sets the StorageDescriptor field's value.
func (s *TableInput) SetStorageDescriptor(v *StorageDescriptor) *TableInput {
	s.StorageDescriptor = v
	return s
}

// SetTableType sets the TableType field's value.
func (s *TableInput) SetTableType(v string) *TableInput {
	s.TableType = &v
	return s
}

// SetTargetTable sets the TargetTable field's value.
func (s *TableInput) SetTargetTable(v *TableIdentifier) *TableInput {
	s.TargetTable = v
	return s
}

// SetViewDefinition sets the ViewDefinition field's value.
func (s *TableInput) SetViewDefinition(v *ViewDefinitionInput_) *TableInput {
	s.ViewDefinition = v
	return s
}

// SetViewExpandedText sets the ViewExpandedText field's value.
func (s *TableInput) SetViewExpandedText(v string) *TableInput {
	s.ViewExpandedText = &v
	return s
}

// SetViewOriginalText sets the ViewOriginalText field's value.
func (s *TableInput) SetViewOriginalText(v string) *TableInput {
	s.ViewOriginalText = &v
	return s
}

// Contains details about an optimizer associated with a table.
type TableOptimizer struct {
	_ struct{} `type:"structure"`

	// A TableOptimizerConfiguration object that was specified when creating or
	// updating a table optimizer.
	Configuration *TableOptimizerConfiguration `locationName:"configuration" type:"structure"`

	// A TableOptimizerRun object representing the last run of the table optimizer.
	LastRun *TableOptimizerRun `locationName:"lastRun" type:"structure"`

	// The type of table optimizer. Currently, the only valid value is compaction.
	Type *string `locationName:"type" type:"string" enum:"TableOptimizerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TableOptimizer) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TableOptimizer) GoString() string {
	return s.String()
}

// SetConfiguration sets the Configuration field's value.
func (s *TableOptimizer) SetConfiguration(v *TableOptimizerConfiguration) *TableOptimizer {
	s.Configuration = v
	return s
}

// SetLastRun sets the LastRun field's value.
func (s *TableOptimizer) SetLastRun(v *TableOptimizerRun) *TableOptimizer {
	s.LastRun = v
	return s
}

// SetType sets the Type field's value.
func (s *TableOptimizer) SetType(v string) *TableOptimizer {
	s.Type = &v
	return s
}

// Contains details on the configuration of a table optimizer. You pass this
// configuration when creating or updating a table optimizer.
type TableOptimizerConfiguration struct {
	_ struct{} `type:"structure"`

	// Whether table optimization is enabled.
	Enabled *bool `locationName:"enabled" type:"boolean"`

	// A role passed by the caller which gives the service permission to update
	// the resources associated with the optimizer on the caller's behalf.
	RoleArn *string `locationName:"roleArn" 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 TableOptimizerConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TableOptimizerConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TableOptimizerConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TableOptimizerConfiguration"}
	if s.RoleArn != nil && len(*s.RoleArn) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("RoleArn", 20))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetEnabled sets the Enabled field's value.
func (s *TableOptimizerConfiguration) SetEnabled(v bool) *TableOptimizerConfiguration {
	s.Enabled = &v
	return s
}

// SetRoleArn sets the RoleArn field's value.
func (s *TableOptimizerConfiguration) SetRoleArn(v string) *TableOptimizerConfiguration {
	s.RoleArn = &v
	return s
}

// Contains details for a table optimizer run.
type TableOptimizerRun struct {
	_ struct{} `type:"structure"`

	// Represents the epoch timestamp at which the compaction job ended.
	EndTimestamp *time.Time `locationName:"endTimestamp" type:"timestamp"`

	// An error that occured during the optimizer run.
	Error *string `locationName:"error" type:"string"`

	// An event type representing the status of the table optimizer run.
	EventType *string `locationName:"eventType" type:"string" enum:"TableOptimizerEventType"`

	// A RunMetrics object containing metrics for the optimizer run.
	Metrics *RunMetrics `locationName:"metrics" type:"structure"`

	// Represents the epoch timestamp at which the compaction job was started within
	// Lake Formation.
	StartTimestamp *time.Time `locationName:"startTimestamp" 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 TableOptimizerRun) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TableOptimizerRun) GoString() string {
	return s.String()
}

// SetEndTimestamp sets the EndTimestamp field's value.
func (s *TableOptimizerRun) SetEndTimestamp(v time.Time) *TableOptimizerRun {
	s.EndTimestamp = &v
	return s
}

// SetError sets the Error field's value.
func (s *TableOptimizerRun) SetError(v string) *TableOptimizerRun {
	s.Error = &v
	return s
}

// SetEventType sets the EventType field's value.
func (s *TableOptimizerRun) SetEventType(v string) *TableOptimizerRun {
	s.EventType = &v
	return s
}

// SetMetrics sets the Metrics field's value.
func (s *TableOptimizerRun) SetMetrics(v *RunMetrics) *TableOptimizerRun {
	s.Metrics = v
	return s
}

// SetStartTimestamp sets the StartTimestamp field's value.
func (s *TableOptimizerRun) SetStartTimestamp(v time.Time) *TableOptimizerRun {
	s.StartTimestamp = &v
	return s
}

// Specifies a version of a table.
type TableVersion struct {
	_ struct{} `type:"structure"`

	// The table in question.
	Table *TableData `type:"structure"`

	// The ID value that identifies this table version. A VersionId is a string
	// representation of an integer. Each version is incremented by 1.
	VersionId *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 TableVersion) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TableVersion) GoString() string {
	return s.String()
}

// SetTable sets the Table field's value.
func (s *TableVersion) SetTable(v *TableData) *TableVersion {
	s.Table = v
	return s
}

// SetVersionId sets the VersionId field's value.
func (s *TableVersion) SetVersionId(v string) *TableVersion {
	s.VersionId = &v
	return s
}

// An error record for table-version operations.
type TableVersionError struct {
	_ struct{} `type:"structure"`

	// The details about the error.
	ErrorDetail *ErrorDetail `type:"structure"`

	// The name of the table in question.
	TableName *string `min:"1" type:"string"`

	// The ID value of the version in question. A VersionID is a string representation
	// of an integer. Each version is incremented by 1.
	VersionId *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 TableVersionError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TableVersionError) GoString() string {
	return s.String()
}

// SetErrorDetail sets the ErrorDetail field's value.
func (s *TableVersionError) SetErrorDetail(v *ErrorDetail) *TableVersionError {
	s.ErrorDetail = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *TableVersionError) SetTableName(v string) *TableVersionError {
	s.TableName = &v
	return s
}

// SetVersionId sets the VersionId field's value.
func (s *TableVersionError) SetVersionId(v string) *TableVersionError {
	s.VersionId = &v
	return s
}

type TagResourceInput struct {
	_ struct{} `type:"structure"`

	// The ARN of the Glue resource to which to add the tags. For more information
	// about Glue resource ARNs, see the Glue ARN string pattern (https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-common.html#aws-glue-api-regex-aws-glue-arn-id).
	//
	// ResourceArn is a required field
	ResourceArn *string `min:"1" type:"string" required:"true"`

	// Tags to add to this resource.
	//
	// TagsToAdd is a required field
	TagsToAdd map[string]*string `type:"map" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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.TagsToAdd == nil {
		invalidParams.Add(request.NewErrParamRequired("TagsToAdd"))
	}

	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
}

// SetTagsToAdd sets the TagsToAdd field's value.
func (s *TagResourceInput) SetTagsToAdd(v map[string]*string) *TagResourceInput {
	s.TagsToAdd = v
	return s
}

type TagResourceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceOutput) GoString() string {
	return s.String()
}

// The sampling parameters that are associated with the machine learning transform.
type TaskRun struct {
	_ struct{} `type:"structure"`

	// The last point in time that the requested task run was completed.
	CompletedOn *time.Time `type:"timestamp"`

	// The list of error strings associated with this task run.
	ErrorString *string `type:"string"`

	// The amount of time (in seconds) that the task run consumed resources.
	ExecutionTime *int64 `type:"integer"`

	// The last point in time that the requested task run was updated.
	LastModifiedOn *time.Time `type:"timestamp"`

	// The names of the log group for secure logging, associated with this task
	// run.
	LogGroupName *string `type:"string"`

	// Specifies configuration properties associated with this task run.
	Properties *TaskRunProperties `type:"structure"`

	// The date and time that this task run started.
	StartedOn *time.Time `type:"timestamp"`

	// The current status of the requested task run.
	Status *string `type:"string" enum:"TaskStatusType"`

	// The unique identifier for this task run.
	TaskRunId *string `min:"1" type:"string"`

	// The unique identifier for the transform.
	TransformId *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 TaskRun) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskRun) GoString() string {
	return s.String()
}

// SetCompletedOn sets the CompletedOn field's value.
func (s *TaskRun) SetCompletedOn(v time.Time) *TaskRun {
	s.CompletedOn = &v
	return s
}

// SetErrorString sets the ErrorString field's value.
func (s *TaskRun) SetErrorString(v string) *TaskRun {
	s.ErrorString = &v
	return s
}

// SetExecutionTime sets the ExecutionTime field's value.
func (s *TaskRun) SetExecutionTime(v int64) *TaskRun {
	s.ExecutionTime = &v
	return s
}

// SetLastModifiedOn sets the LastModifiedOn field's value.
func (s *TaskRun) SetLastModifiedOn(v time.Time) *TaskRun {
	s.LastModifiedOn = &v
	return s
}

// SetLogGroupName sets the LogGroupName field's value.
func (s *TaskRun) SetLogGroupName(v string) *TaskRun {
	s.LogGroupName = &v
	return s
}

// SetProperties sets the Properties field's value.
func (s *TaskRun) SetProperties(v *TaskRunProperties) *TaskRun {
	s.Properties = v
	return s
}

// SetStartedOn sets the StartedOn field's value.
func (s *TaskRun) SetStartedOn(v time.Time) *TaskRun {
	s.StartedOn = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *TaskRun) SetStatus(v string) *TaskRun {
	s.Status = &v
	return s
}

// SetTaskRunId sets the TaskRunId field's value.
func (s *TaskRun) SetTaskRunId(v string) *TaskRun {
	s.TaskRunId = &v
	return s
}

// SetTransformId sets the TransformId field's value.
func (s *TaskRun) SetTransformId(v string) *TaskRun {
	s.TransformId = &v
	return s
}

// The criteria that are used to filter the task runs for the machine learning
// transform.
type TaskRunFilterCriteria struct {
	_ struct{} `type:"structure"`

	// Filter on task runs started after this date.
	StartedAfter *time.Time `type:"timestamp"`

	// Filter on task runs started before this date.
	StartedBefore *time.Time `type:"timestamp"`

	// The current status of the task run.
	Status *string `type:"string" enum:"TaskStatusType"`

	// The type of task run.
	TaskRunType *string `type:"string" enum:"TaskType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskRunFilterCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskRunFilterCriteria) GoString() string {
	return s.String()
}

// SetStartedAfter sets the StartedAfter field's value.
func (s *TaskRunFilterCriteria) SetStartedAfter(v time.Time) *TaskRunFilterCriteria {
	s.StartedAfter = &v
	return s
}

// SetStartedBefore sets the StartedBefore field's value.
func (s *TaskRunFilterCriteria) SetStartedBefore(v time.Time) *TaskRunFilterCriteria {
	s.StartedBefore = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *TaskRunFilterCriteria) SetStatus(v string) *TaskRunFilterCriteria {
	s.Status = &v
	return s
}

// SetTaskRunType sets the TaskRunType field's value.
func (s *TaskRunFilterCriteria) SetTaskRunType(v string) *TaskRunFilterCriteria {
	s.TaskRunType = &v
	return s
}

// The configuration properties for the task run.
type TaskRunProperties struct {
	_ struct{} `type:"structure"`

	// The configuration properties for an exporting labels task run.
	ExportLabelsTaskRunProperties *ExportLabelsTaskRunProperties `type:"structure"`

	// The configuration properties for a find matches task run.
	FindMatchesTaskRunProperties *FindMatchesTaskRunProperties `type:"structure"`

	// The configuration properties for an importing labels task run.
	ImportLabelsTaskRunProperties *ImportLabelsTaskRunProperties `type:"structure"`

	// The configuration properties for a labeling set generation task run.
	LabelingSetGenerationTaskRunProperties *LabelingSetGenerationTaskRunProperties `type:"structure"`

	// The type of task run.
	TaskType *string `type:"string" enum:"TaskType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskRunProperties) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskRunProperties) GoString() string {
	return s.String()
}

// SetExportLabelsTaskRunProperties sets the ExportLabelsTaskRunProperties field's value.
func (s *TaskRunProperties) SetExportLabelsTaskRunProperties(v *ExportLabelsTaskRunProperties) *TaskRunProperties {
	s.ExportLabelsTaskRunProperties = v
	return s
}

// SetFindMatchesTaskRunProperties sets the FindMatchesTaskRunProperties field's value.
func (s *TaskRunProperties) SetFindMatchesTaskRunProperties(v *FindMatchesTaskRunProperties) *TaskRunProperties {
	s.FindMatchesTaskRunProperties = v
	return s
}

// SetImportLabelsTaskRunProperties sets the ImportLabelsTaskRunProperties field's value.
func (s *TaskRunProperties) SetImportLabelsTaskRunProperties(v *ImportLabelsTaskRunProperties) *TaskRunProperties {
	s.ImportLabelsTaskRunProperties = v
	return s
}

// SetLabelingSetGenerationTaskRunProperties sets the LabelingSetGenerationTaskRunProperties field's value.
func (s *TaskRunProperties) SetLabelingSetGenerationTaskRunProperties(v *LabelingSetGenerationTaskRunProperties) *TaskRunProperties {
	s.LabelingSetGenerationTaskRunProperties = v
	return s
}

// SetTaskType sets the TaskType field's value.
func (s *TaskRunProperties) SetTaskType(v string) *TaskRunProperties {
	s.TaskType = &v
	return s
}

// The sorting criteria that are used to sort the list of task runs for the
// machine learning transform.
type TaskRunSortCriteria struct {
	_ struct{} `type:"structure"`

	// The column to be used to sort the list of task runs for the machine learning
	// transform.
	//
	// Column is a required field
	Column *string `type:"string" required:"true" enum:"TaskRunSortColumnType"`

	// The sort direction to be used to sort the list of task runs for the machine
	// learning transform.
	//
	// SortDirection is a required field
	SortDirection *string `type:"string" required:"true" enum:"SortDirectionType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskRunSortCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TaskRunSortCriteria) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TaskRunSortCriteria) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TaskRunSortCriteria"}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.SortDirection == nil {
		invalidParams.Add(request.NewErrParamRequired("SortDirection"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumn sets the Column field's value.
func (s *TaskRunSortCriteria) SetColumn(v string) *TaskRunSortCriteria {
	s.Column = &v
	return s
}

// SetSortDirection sets the SortDirection field's value.
func (s *TaskRunSortCriteria) SetSortDirection(v string) *TaskRunSortCriteria {
	s.SortDirection = &v
	return s
}

// Specifies the parameters in the config file of the dynamic transform.
type TransformConfigParameter struct {
	_ struct{} `type:"structure"`

	// Specifies whether the parameter is optional or not in the config file of
	// the dynamic transform.
	IsOptional *bool `type:"boolean"`

	// Specifies the list type of the parameter in the config file of the dynamic
	// transform.
	ListType *string `type:"string" enum:"ParamType"`

	// Specifies the name of the parameter in the config file of the dynamic transform.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Specifies the parameter type in the config file of the dynamic transform.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"ParamType"`

	// Specifies the validation message in the config file of the dynamic transform.
	ValidationMessage *string `type:"string"`

	// Specifies the validation rule in the config file of the dynamic transform.
	ValidationRule *string `type:"string"`

	// Specifies the value of the parameter in the config file of the dynamic transform.
	Value []*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 TransformConfigParameter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TransformConfigParameter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TransformConfigParameter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TransformConfigParameter"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIsOptional sets the IsOptional field's value.
func (s *TransformConfigParameter) SetIsOptional(v bool) *TransformConfigParameter {
	s.IsOptional = &v
	return s
}

// SetListType sets the ListType field's value.
func (s *TransformConfigParameter) SetListType(v string) *TransformConfigParameter {
	s.ListType = &v
	return s
}

// SetName sets the Name field's value.
func (s *TransformConfigParameter) SetName(v string) *TransformConfigParameter {
	s.Name = &v
	return s
}

// SetType sets the Type field's value.
func (s *TransformConfigParameter) SetType(v string) *TransformConfigParameter {
	s.Type = &v
	return s
}

// SetValidationMessage sets the ValidationMessage field's value.
func (s *TransformConfigParameter) SetValidationMessage(v string) *TransformConfigParameter {
	s.ValidationMessage = &v
	return s
}

// SetValidationRule sets the ValidationRule field's value.
func (s *TransformConfigParameter) SetValidationRule(v string) *TransformConfigParameter {
	s.ValidationRule = &v
	return s
}

// SetValue sets the Value field's value.
func (s *TransformConfigParameter) SetValue(v []*string) *TransformConfigParameter {
	s.Value = v
	return s
}

// The encryption-at-rest settings of the transform that apply to accessing
// user data. Machine learning transforms can access user data encrypted in
// Amazon S3 using KMS.
//
// Additionally, imported labels and trained transforms can now be encrypted
// using a customer provided KMS key.
type TransformEncryption struct {
	_ struct{} `type:"structure"`

	// An MLUserDataEncryption object containing the encryption mode and customer-provided
	// KMS key ID.
	MlUserDataEncryption *MLUserDataEncryption `type:"structure"`

	// The name of the security configuration.
	TaskRunSecurityConfigurationName *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 TransformEncryption) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TransformEncryption) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TransformEncryption) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TransformEncryption"}
	if s.TaskRunSecurityConfigurationName != nil && len(*s.TaskRunSecurityConfigurationName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TaskRunSecurityConfigurationName", 1))
	}
	if s.MlUserDataEncryption != nil {
		if err := s.MlUserDataEncryption.Validate(); err != nil {
			invalidParams.AddNested("MlUserDataEncryption", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMlUserDataEncryption sets the MlUserDataEncryption field's value.
func (s *TransformEncryption) SetMlUserDataEncryption(v *MLUserDataEncryption) *TransformEncryption {
	s.MlUserDataEncryption = v
	return s
}

// SetTaskRunSecurityConfigurationName sets the TaskRunSecurityConfigurationName field's value.
func (s *TransformEncryption) SetTaskRunSecurityConfigurationName(v string) *TransformEncryption {
	s.TaskRunSecurityConfigurationName = &v
	return s
}

// The criteria used to filter the machine learning transforms.
type TransformFilterCriteria struct {
	_ struct{} `type:"structure"`

	// The time and date after which the transforms were created.
	CreatedAfter *time.Time `type:"timestamp"`

	// The time and date before which the transforms were created.
	CreatedBefore *time.Time `type:"timestamp"`

	// This value determines which version of Glue this machine learning transform
	// is compatible with. Glue 1.0 is recommended for most customers. If the value
	// is not set, the Glue compatibility defaults to Glue 0.9. For more information,
	// see Glue Versions (https://docs.aws.amazon.com/glue/latest/dg/release-notes.html#release-notes-versions)
	// in the developer guide.
	GlueVersion *string `min:"1" type:"string"`

	// Filter on transforms last modified after this date.
	LastModifiedAfter *time.Time `type:"timestamp"`

	// Filter on transforms last modified before this date.
	LastModifiedBefore *time.Time `type:"timestamp"`

	// A unique transform name that is used to filter the machine learning transforms.
	Name *string `min:"1" type:"string"`

	// Filters on datasets with a specific schema. The Map<Column, Type> object
	// is an array of key-value pairs representing the schema this transform accepts,
	// where Column is the name of a column, and Type is the type of the data such
	// as an integer or string. Has an upper bound of 100 columns.
	Schema []*SchemaColumn `type:"list"`

	// Filters the list of machine learning transforms by the last known status
	// of the transforms (to indicate whether a transform can be used or not). One
	// of "NOT_READY", "READY", or "DELETING".
	Status *string `type:"string" enum:"TransformStatusType"`

	// The type of machine learning transform that is used to filter the machine
	// learning transforms.
	TransformType *string `type:"string" enum:"TransformType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TransformFilterCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TransformFilterCriteria) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TransformFilterCriteria) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TransformFilterCriteria"}
	if s.GlueVersion != nil && len(*s.GlueVersion) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GlueVersion", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.Schema != nil {
		for i, v := range s.Schema {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Schema", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCreatedAfter sets the CreatedAfter field's value.
func (s *TransformFilterCriteria) SetCreatedAfter(v time.Time) *TransformFilterCriteria {
	s.CreatedAfter = &v
	return s
}

// SetCreatedBefore sets the CreatedBefore field's value.
func (s *TransformFilterCriteria) SetCreatedBefore(v time.Time) *TransformFilterCriteria {
	s.CreatedBefore = &v
	return s
}

// SetGlueVersion sets the GlueVersion field's value.
func (s *TransformFilterCriteria) SetGlueVersion(v string) *TransformFilterCriteria {
	s.GlueVersion = &v
	return s
}

// SetLastModifiedAfter sets the LastModifiedAfter field's value.
func (s *TransformFilterCriteria) SetLastModifiedAfter(v time.Time) *TransformFilterCriteria {
	s.LastModifiedAfter = &v
	return s
}

// SetLastModifiedBefore sets the LastModifiedBefore field's value.
func (s *TransformFilterCriteria) SetLastModifiedBefore(v time.Time) *TransformFilterCriteria {
	s.LastModifiedBefore = &v
	return s
}

// SetName sets the Name field's value.
func (s *TransformFilterCriteria) SetName(v string) *TransformFilterCriteria {
	s.Name = &v
	return s
}

// SetSchema sets the Schema field's value.
func (s *TransformFilterCriteria) SetSchema(v []*SchemaColumn) *TransformFilterCriteria {
	s.Schema = v
	return s
}

// SetStatus sets the Status field's value.
func (s *TransformFilterCriteria) SetStatus(v string) *TransformFilterCriteria {
	s.Status = &v
	return s
}

// SetTransformType sets the TransformType field's value.
func (s *TransformFilterCriteria) SetTransformType(v string) *TransformFilterCriteria {
	s.TransformType = &v
	return s
}

// The algorithm-specific parameters that are associated with the machine learning
// transform.
type TransformParameters struct {
	_ struct{} `type:"structure"`

	// The parameters for the find matches algorithm.
	FindMatchesParameters *FindMatchesParameters `type:"structure"`

	// The type of machine learning transform.
	//
	// For information about the types of machine learning transforms, see Creating
	// Machine Learning Transforms (https://docs.aws.amazon.com/glue/latest/dg/add-job-machine-learning-transform.html).
	//
	// TransformType is a required field
	TransformType *string `type:"string" required:"true" enum:"TransformType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TransformParameters) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TransformParameters) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TransformParameters) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TransformParameters"}
	if s.TransformType == nil {
		invalidParams.Add(request.NewErrParamRequired("TransformType"))
	}
	if s.FindMatchesParameters != nil {
		if err := s.FindMatchesParameters.Validate(); err != nil {
			invalidParams.AddNested("FindMatchesParameters", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFindMatchesParameters sets the FindMatchesParameters field's value.
func (s *TransformParameters) SetFindMatchesParameters(v *FindMatchesParameters) *TransformParameters {
	s.FindMatchesParameters = v
	return s
}

// SetTransformType sets the TransformType field's value.
func (s *TransformParameters) SetTransformType(v string) *TransformParameters {
	s.TransformType = &v
	return s
}

// The sorting criteria that are associated with the machine learning transform.
type TransformSortCriteria struct {
	_ struct{} `type:"structure"`

	// The column to be used in the sorting criteria that are associated with the
	// machine learning transform.
	//
	// Column is a required field
	Column *string `type:"string" required:"true" enum:"TransformSortColumnType"`

	// The sort direction to be used in the sorting criteria that are associated
	// with the machine learning transform.
	//
	// SortDirection is a required field
	SortDirection *string `type:"string" required:"true" enum:"SortDirectionType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TransformSortCriteria) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TransformSortCriteria) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TransformSortCriteria) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TransformSortCriteria"}
	if s.Column == nil {
		invalidParams.Add(request.NewErrParamRequired("Column"))
	}
	if s.SortDirection == nil {
		invalidParams.Add(request.NewErrParamRequired("SortDirection"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetColumn sets the Column field's value.
func (s *TransformSortCriteria) SetColumn(v string) *TransformSortCriteria {
	s.Column = &v
	return s
}

// SetSortDirection sets the SortDirection field's value.
func (s *TransformSortCriteria) SetSortDirection(v string) *TransformSortCriteria {
	s.SortDirection = &v
	return s
}

// Information about a specific trigger.
type Trigger struct {
	_ struct{} `type:"structure"`

	// The actions initiated by this trigger.
	Actions []*Action `type:"list"`

	// A description of this trigger.
	Description *string `type:"string"`

	// Batch condition that must be met (specified number of events received or
	// batch time window expired) before EventBridge event trigger fires.
	EventBatchingCondition *EventBatchingCondition `type:"structure"`

	// Reserved for future use.
	Id *string `min:"1" type:"string"`

	// The name of the trigger.
	Name *string `min:"1" type:"string"`

	// The predicate of this trigger, which defines when it will fire.
	Predicate *Predicate `type:"structure"`

	// A cron expression used to specify the schedule (see Time-Based Schedules
	// for Jobs and Crawlers (https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html).
	// For example, to run something every day at 12:15 UTC, you would specify:
	// cron(15 12 * * ? *).
	Schedule *string `type:"string"`

	// The current state of the trigger.
	State *string `type:"string" enum:"TriggerState"`

	// The type of trigger that this is.
	Type *string `type:"string" enum:"TriggerType"`

	// The name of the workflow associated with the trigger.
	WorkflowName *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 Trigger) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Trigger) GoString() string {
	return s.String()
}

// SetActions sets the Actions field's value.
func (s *Trigger) SetActions(v []*Action) *Trigger {
	s.Actions = v
	return s
}

// SetDescription sets the Description field's value.
func (s *Trigger) SetDescription(v string) *Trigger {
	s.Description = &v
	return s
}

// SetEventBatchingCondition sets the EventBatchingCondition field's value.
func (s *Trigger) SetEventBatchingCondition(v *EventBatchingCondition) *Trigger {
	s.EventBatchingCondition = v
	return s
}

// SetId sets the Id field's value.
func (s *Trigger) SetId(v string) *Trigger {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *Trigger) SetName(v string) *Trigger {
	s.Name = &v
	return s
}

// SetPredicate sets the Predicate field's value.
func (s *Trigger) SetPredicate(v *Predicate) *Trigger {
	s.Predicate = v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *Trigger) SetSchedule(v string) *Trigger {
	s.Schedule = &v
	return s
}

// SetState sets the State field's value.
func (s *Trigger) SetState(v string) *Trigger {
	s.State = &v
	return s
}

// SetType sets the Type field's value.
func (s *Trigger) SetType(v string) *Trigger {
	s.Type = &v
	return s
}

// SetWorkflowName sets the WorkflowName field's value.
func (s *Trigger) SetWorkflowName(v string) *Trigger {
	s.WorkflowName = &v
	return s
}

// The details of a Trigger node present in the workflow.
type TriggerNodeDetails struct {
	_ struct{} `type:"structure"`

	// The information of the trigger represented by the trigger node.
	Trigger *Trigger `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TriggerNodeDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TriggerNodeDetails) GoString() string {
	return s.String()
}

// SetTrigger sets the Trigger field's value.
func (s *TriggerNodeDetails) SetTrigger(v *Trigger) *TriggerNodeDetails {
	s.Trigger = v
	return s
}

// A structure used to provide information used to update a trigger. This object
// updates the previous trigger definition by overwriting it completely.
type TriggerUpdate struct {
	_ struct{} `type:"structure"`

	// The actions initiated by this trigger.
	Actions []*Action `type:"list"`

	// A description of this trigger.
	Description *string `type:"string"`

	// Batch condition that must be met (specified number of events received or
	// batch time window expired) before EventBridge event trigger fires.
	EventBatchingCondition *EventBatchingCondition `type:"structure"`

	// Reserved for future use.
	Name *string `min:"1" type:"string"`

	// The predicate of this trigger, which defines when it will fire.
	Predicate *Predicate `type:"structure"`

	// A cron expression used to specify the schedule (see Time-Based Schedules
	// for Jobs and Crawlers (https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html).
	// For example, to run something every day at 12:15 UTC, you would specify:
	// cron(15 12 * * ? *).
	Schedule *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 TriggerUpdate) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TriggerUpdate) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TriggerUpdate) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TriggerUpdate"}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 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.EventBatchingCondition != nil {
		if err := s.EventBatchingCondition.Validate(); err != nil {
			invalidParams.AddNested("EventBatchingCondition", err.(request.ErrInvalidParams))
		}
	}
	if s.Predicate != nil {
		if err := s.Predicate.Validate(); err != nil {
			invalidParams.AddNested("Predicate", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActions sets the Actions field's value.
func (s *TriggerUpdate) SetActions(v []*Action) *TriggerUpdate {
	s.Actions = v
	return s
}

// SetDescription sets the Description field's value.
func (s *TriggerUpdate) SetDescription(v string) *TriggerUpdate {
	s.Description = &v
	return s
}

// SetEventBatchingCondition sets the EventBatchingCondition field's value.
func (s *TriggerUpdate) SetEventBatchingCondition(v *EventBatchingCondition) *TriggerUpdate {
	s.EventBatchingCondition = v
	return s
}

// SetName sets the Name field's value.
func (s *TriggerUpdate) SetName(v string) *TriggerUpdate {
	s.Name = &v
	return s
}

// SetPredicate sets the Predicate field's value.
func (s *TriggerUpdate) SetPredicate(v *Predicate) *TriggerUpdate {
	s.Predicate = v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *TriggerUpdate) SetSchedule(v string) *TriggerUpdate {
	s.Schedule = &v
	return s
}

// A partition that contains unfiltered metadata.
type UnfilteredPartition struct {
	_ struct{} `type:"structure"`

	// The list of columns the user has permissions to access.
	AuthorizedColumns []*string `type:"list"`

	// A Boolean value indicating that the partition location is registered with
	// Lake Formation.
	IsRegisteredWithLakeFormation *bool `type:"boolean"`

	// The partition object.
	Partition *Partition `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnfilteredPartition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnfilteredPartition) GoString() string {
	return s.String()
}

// SetAuthorizedColumns sets the AuthorizedColumns field's value.
func (s *UnfilteredPartition) SetAuthorizedColumns(v []*string) *UnfilteredPartition {
	s.AuthorizedColumns = v
	return s
}

// SetIsRegisteredWithLakeFormation sets the IsRegisteredWithLakeFormation field's value.
func (s *UnfilteredPartition) SetIsRegisteredWithLakeFormation(v bool) *UnfilteredPartition {
	s.IsRegisteredWithLakeFormation = &v
	return s
}

// SetPartition sets the Partition field's value.
func (s *UnfilteredPartition) SetPartition(v *Partition) *UnfilteredPartition {
	s.Partition = v
	return s
}

// Specifies a transform that combines the rows from two or more datasets into
// a single result.
type Union struct {
	_ struct{} `type:"structure"`

	// The node ID inputs to the transform.
	//
	// Inputs is a required field
	Inputs []*string `min:"2" type:"list" required:"true"`

	// The name of the transform node.
	//
	// Name is a required field
	Name *string `type:"string" required:"true"`

	// Indicates the type of Union transform.
	//
	// Specify ALL to join all rows from data sources to the resulting DynamicFrame.
	// The resulting union does not remove duplicate rows.
	//
	// Specify DISTINCT to remove duplicate rows in the resulting DynamicFrame.
	//
	// UnionType is a required field
	UnionType *string `type:"string" required:"true" enum:"UnionType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Union) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Union) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Union) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Union"}
	if s.Inputs == nil {
		invalidParams.Add(request.NewErrParamRequired("Inputs"))
	}
	if s.Inputs != nil && len(s.Inputs) < 2 {
		invalidParams.Add(request.NewErrParamMinLen("Inputs", 2))
	}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.UnionType == nil {
		invalidParams.Add(request.NewErrParamRequired("UnionType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetInputs sets the Inputs field's value.
func (s *Union) SetInputs(v []*string) *Union {
	s.Inputs = v
	return s
}

// SetName sets the Name field's value.
func (s *Union) SetName(v string) *Union {
	s.Name = &v
	return s
}

// SetUnionType sets the UnionType field's value.
func (s *Union) SetUnionType(v string) *Union {
	s.UnionType = &v
	return s
}

type UntagResourceInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource from which to remove the tags.
	//
	// ResourceArn is a required field
	ResourceArn *string `min:"1" type:"string" required:"true"`

	// Tags to remove from this resource.
	//
	// TagsToRemove is a required field
	TagsToRemove []*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 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.TagsToRemove == nil {
		invalidParams.Add(request.NewErrParamRequired("TagsToRemove"))
	}

	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
}

// SetTagsToRemove sets the TagsToRemove field's value.
func (s *UntagResourceInput) SetTagsToRemove(v []*string) *UntagResourceInput {
	s.TagsToRemove = v
	return s
}

type UntagResourceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceOutput) GoString() string {
	return s.String()
}

type UpdateBlueprintInput struct {
	_ struct{} `type:"structure"`

	// Specifies a path in Amazon S3 where the blueprint is published.
	//
	// BlueprintLocation is a required field
	BlueprintLocation *string `min:"1" type:"string" required:"true"`

	// A description of the blueprint.
	Description *string `min:"1" type:"string"`

	// The name of the blueprint.
	//
	// 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 UpdateBlueprintInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateBlueprintInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateBlueprintInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateBlueprintInput"}
	if s.BlueprintLocation == nil {
		invalidParams.Add(request.NewErrParamRequired("BlueprintLocation"))
	}
	if s.BlueprintLocation != nil && len(*s.BlueprintLocation) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("BlueprintLocation", 1))
	}
	if s.Description != nil && len(*s.Description) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Description", 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
}

// SetBlueprintLocation sets the BlueprintLocation field's value.
func (s *UpdateBlueprintInput) SetBlueprintLocation(v string) *UpdateBlueprintInput {
	s.BlueprintLocation = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateBlueprintInput) SetDescription(v string) *UpdateBlueprintInput {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateBlueprintInput) SetName(v string) *UpdateBlueprintInput {
	s.Name = &v
	return s
}

type UpdateBlueprintOutput struct {
	_ struct{} `type:"structure"`

	// Returns the name of the blueprint that was updated.
	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 UpdateBlueprintOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateBlueprintOutput) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *UpdateBlueprintOutput) SetName(v string) *UpdateBlueprintOutput {
	s.Name = &v
	return s
}

type UpdateClassifierInput struct {
	_ struct{} `type:"structure"`

	// A CsvClassifier object with updated fields.
	CsvClassifier *UpdateCsvClassifierRequest `type:"structure"`

	// A GrokClassifier object with updated fields.
	GrokClassifier *UpdateGrokClassifierRequest `type:"structure"`

	// A JsonClassifier object with updated fields.
	JsonClassifier *UpdateJsonClassifierRequest `type:"structure"`

	// An XMLClassifier object with updated fields.
	XMLClassifier *UpdateXMLClassifierRequest `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateClassifierInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateClassifierInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateClassifierInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateClassifierInput"}
	if s.CsvClassifier != nil {
		if err := s.CsvClassifier.Validate(); err != nil {
			invalidParams.AddNested("CsvClassifier", err.(request.ErrInvalidParams))
		}
	}
	if s.GrokClassifier != nil {
		if err := s.GrokClassifier.Validate(); err != nil {
			invalidParams.AddNested("GrokClassifier", err.(request.ErrInvalidParams))
		}
	}
	if s.JsonClassifier != nil {
		if err := s.JsonClassifier.Validate(); err != nil {
			invalidParams.AddNested("JsonClassifier", err.(request.ErrInvalidParams))
		}
	}
	if s.XMLClassifier != nil {
		if err := s.XMLClassifier.Validate(); err != nil {
			invalidParams.AddNested("XMLClassifier", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCsvClassifier sets the CsvClassifier field's value.
func (s *UpdateClassifierInput) SetCsvClassifier(v *UpdateCsvClassifierRequest) *UpdateClassifierInput {
	s.CsvClassifier = v
	return s
}

// SetGrokClassifier sets the GrokClassifier field's value.
func (s *UpdateClassifierInput) SetGrokClassifier(v *UpdateGrokClassifierRequest) *UpdateClassifierInput {
	s.GrokClassifier = v
	return s
}

// SetJsonClassifier sets the JsonClassifier field's value.
func (s *UpdateClassifierInput) SetJsonClassifier(v *UpdateJsonClassifierRequest) *UpdateClassifierInput {
	s.JsonClassifier = v
	return s
}

// SetXMLClassifier sets the XMLClassifier field's value.
func (s *UpdateClassifierInput) SetXMLClassifier(v *UpdateXMLClassifierRequest) *UpdateClassifierInput {
	s.XMLClassifier = v
	return s
}

type UpdateClassifierOutput 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 UpdateClassifierOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateClassifierOutput) GoString() string {
	return s.String()
}

type UpdateColumnStatisticsForPartitionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the partitions in question reside. If none
	// is supplied, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// A list of the column statistics.
	//
	// ColumnStatisticsList is a required field
	ColumnStatisticsList []*ColumnStatistics `type:"list" required:"true"`

	// The name of the catalog database where the partitions reside.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// A list of partition values identifying the partition.
	//
	// PartitionValues is a required field
	PartitionValues []*string `type:"list" required:"true"`

	// The name of the partitions' table.
	//
	// TableName is a required field
	TableName *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 UpdateColumnStatisticsForPartitionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateColumnStatisticsForPartitionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateColumnStatisticsForPartitionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateColumnStatisticsForPartitionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.ColumnStatisticsList == nil {
		invalidParams.Add(request.NewErrParamRequired("ColumnStatisticsList"))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.PartitionValues == nil {
		invalidParams.Add(request.NewErrParamRequired("PartitionValues"))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}
	if s.ColumnStatisticsList != nil {
		for i, v := range s.ColumnStatisticsList {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnStatisticsList", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *UpdateColumnStatisticsForPartitionInput) SetCatalogId(v string) *UpdateColumnStatisticsForPartitionInput {
	s.CatalogId = &v
	return s
}

// SetColumnStatisticsList sets the ColumnStatisticsList field's value.
func (s *UpdateColumnStatisticsForPartitionInput) SetColumnStatisticsList(v []*ColumnStatistics) *UpdateColumnStatisticsForPartitionInput {
	s.ColumnStatisticsList = v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *UpdateColumnStatisticsForPartitionInput) SetDatabaseName(v string) *UpdateColumnStatisticsForPartitionInput {
	s.DatabaseName = &v
	return s
}

// SetPartitionValues sets the PartitionValues field's value.
func (s *UpdateColumnStatisticsForPartitionInput) SetPartitionValues(v []*string) *UpdateColumnStatisticsForPartitionInput {
	s.PartitionValues = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *UpdateColumnStatisticsForPartitionInput) SetTableName(v string) *UpdateColumnStatisticsForPartitionInput {
	s.TableName = &v
	return s
}

type UpdateColumnStatisticsForPartitionOutput struct {
	_ struct{} `type:"structure"`

	// Error occurred during updating column statistics data.
	Errors []*ColumnStatisticsError `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 UpdateColumnStatisticsForPartitionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateColumnStatisticsForPartitionOutput) GoString() string {
	return s.String()
}

// SetErrors sets the Errors field's value.
func (s *UpdateColumnStatisticsForPartitionOutput) SetErrors(v []*ColumnStatisticsError) *UpdateColumnStatisticsForPartitionOutput {
	s.Errors = v
	return s
}

type UpdateColumnStatisticsForTableInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the partitions in question reside. If none
	// is supplied, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// A list of the column statistics.
	//
	// ColumnStatisticsList is a required field
	ColumnStatisticsList []*ColumnStatistics `type:"list" required:"true"`

	// The name of the catalog database where the partitions reside.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the partitions' table.
	//
	// TableName is a required field
	TableName *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 UpdateColumnStatisticsForTableInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateColumnStatisticsForTableInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateColumnStatisticsForTableInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateColumnStatisticsForTableInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.ColumnStatisticsList == nil {
		invalidParams.Add(request.NewErrParamRequired("ColumnStatisticsList"))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}
	if s.ColumnStatisticsList != nil {
		for i, v := range s.ColumnStatisticsList {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ColumnStatisticsList", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *UpdateColumnStatisticsForTableInput) SetCatalogId(v string) *UpdateColumnStatisticsForTableInput {
	s.CatalogId = &v
	return s
}

// SetColumnStatisticsList sets the ColumnStatisticsList field's value.
func (s *UpdateColumnStatisticsForTableInput) SetColumnStatisticsList(v []*ColumnStatistics) *UpdateColumnStatisticsForTableInput {
	s.ColumnStatisticsList = v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *UpdateColumnStatisticsForTableInput) SetDatabaseName(v string) *UpdateColumnStatisticsForTableInput {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *UpdateColumnStatisticsForTableInput) SetTableName(v string) *UpdateColumnStatisticsForTableInput {
	s.TableName = &v
	return s
}

type UpdateColumnStatisticsForTableOutput struct {
	_ struct{} `type:"structure"`

	// List of ColumnStatisticsErrors.
	Errors []*ColumnStatisticsError `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 UpdateColumnStatisticsForTableOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateColumnStatisticsForTableOutput) GoString() string {
	return s.String()
}

// SetErrors sets the Errors field's value.
func (s *UpdateColumnStatisticsForTableOutput) SetErrors(v []*ColumnStatisticsError) *UpdateColumnStatisticsForTableOutput {
	s.Errors = v
	return s
}

type UpdateConnectionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which the connection resides. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// A ConnectionInput object that redefines the connection in question.
	//
	// ConnectionInput is a required field
	ConnectionInput *ConnectionInput `type:"structure" required:"true"`

	// The name of the connection definition to update.
	//
	// 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 UpdateConnectionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateConnectionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateConnectionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateConnectionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.ConnectionInput == nil {
		invalidParams.Add(request.NewErrParamRequired("ConnectionInput"))
	}
	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.ConnectionInput != nil {
		if err := s.ConnectionInput.Validate(); err != nil {
			invalidParams.AddNested("ConnectionInput", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *UpdateConnectionInput) SetCatalogId(v string) *UpdateConnectionInput {
	s.CatalogId = &v
	return s
}

// SetConnectionInput sets the ConnectionInput field's value.
func (s *UpdateConnectionInput) SetConnectionInput(v *ConnectionInput) *UpdateConnectionInput {
	s.ConnectionInput = v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateConnectionInput) SetName(v string) *UpdateConnectionInput {
	s.Name = &v
	return s
}

type UpdateConnectionOutput 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 UpdateConnectionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateConnectionOutput) GoString() string {
	return s.String()
}

type UpdateCrawlerInput struct {
	_ struct{} `type:"structure"`

	// A list of custom classifiers that the user has registered. By default, all
	// built-in classifiers are included in a crawl, but these custom classifiers
	// always override the default classifiers for a given classification.
	Classifiers []*string `type:"list"`

	// Crawler configuration information. This versioned JSON string allows users
	// to specify aspects of a crawler's behavior. For more information, see Setting
	// crawler configuration options (https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html).
	Configuration *string `type:"string"`

	// The name of the SecurityConfiguration structure to be used by this crawler.
	CrawlerSecurityConfiguration *string `type:"string"`

	// The Glue database where results are stored, such as: arn:aws:daylight:us-east-1::database/sometable/*.
	DatabaseName *string `type:"string"`

	// A description of the new crawler.
	Description *string `type:"string"`

	// Specifies Lake Formation configuration settings for the crawler.
	LakeFormationConfiguration *LakeFormationConfiguration `type:"structure"`

	// Specifies data lineage configuration settings for the crawler.
	LineageConfiguration *LineageConfiguration `type:"structure"`

	// Name of the new crawler.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A policy that specifies whether to crawl the entire dataset again, or to
	// crawl only folders that were added since the last crawler run.
	RecrawlPolicy *RecrawlPolicy `type:"structure"`

	// The IAM role or Amazon Resource Name (ARN) of an IAM role that is used by
	// the new crawler to access customer resources.
	Role *string `type:"string"`

	// A cron expression used to specify the schedule (see Time-Based Schedules
	// for Jobs and Crawlers (https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html).
	// For example, to run something every day at 12:15 UTC, you would specify:
	// cron(15 12 * * ? *).
	Schedule *string `type:"string"`

	// The policy for the crawler's update and deletion behavior.
	SchemaChangePolicy *SchemaChangePolicy `type:"structure"`

	// The table prefix used for catalog tables that are created.
	TablePrefix *string `type:"string"`

	// A list of targets to crawl.
	Targets *CrawlerTargets `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateCrawlerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateCrawlerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateCrawlerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateCrawlerInput"}
	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.Targets != nil {
		if err := s.Targets.Validate(); err != nil {
			invalidParams.AddNested("Targets", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClassifiers sets the Classifiers field's value.
func (s *UpdateCrawlerInput) SetClassifiers(v []*string) *UpdateCrawlerInput {
	s.Classifiers = v
	return s
}

// SetConfiguration sets the Configuration field's value.
func (s *UpdateCrawlerInput) SetConfiguration(v string) *UpdateCrawlerInput {
	s.Configuration = &v
	return s
}

// SetCrawlerSecurityConfiguration sets the CrawlerSecurityConfiguration field's value.
func (s *UpdateCrawlerInput) SetCrawlerSecurityConfiguration(v string) *UpdateCrawlerInput {
	s.CrawlerSecurityConfiguration = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *UpdateCrawlerInput) SetDatabaseName(v string) *UpdateCrawlerInput {
	s.DatabaseName = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateCrawlerInput) SetDescription(v string) *UpdateCrawlerInput {
	s.Description = &v
	return s
}

// SetLakeFormationConfiguration sets the LakeFormationConfiguration field's value.
func (s *UpdateCrawlerInput) SetLakeFormationConfiguration(v *LakeFormationConfiguration) *UpdateCrawlerInput {
	s.LakeFormationConfiguration = v
	return s
}

// SetLineageConfiguration sets the LineageConfiguration field's value.
func (s *UpdateCrawlerInput) SetLineageConfiguration(v *LineageConfiguration) *UpdateCrawlerInput {
	s.LineageConfiguration = v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateCrawlerInput) SetName(v string) *UpdateCrawlerInput {
	s.Name = &v
	return s
}

// SetRecrawlPolicy sets the RecrawlPolicy field's value.
func (s *UpdateCrawlerInput) SetRecrawlPolicy(v *RecrawlPolicy) *UpdateCrawlerInput {
	s.RecrawlPolicy = v
	return s
}

// SetRole sets the Role field's value.
func (s *UpdateCrawlerInput) SetRole(v string) *UpdateCrawlerInput {
	s.Role = &v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *UpdateCrawlerInput) SetSchedule(v string) *UpdateCrawlerInput {
	s.Schedule = &v
	return s
}

// SetSchemaChangePolicy sets the SchemaChangePolicy field's value.
func (s *UpdateCrawlerInput) SetSchemaChangePolicy(v *SchemaChangePolicy) *UpdateCrawlerInput {
	s.SchemaChangePolicy = v
	return s
}

// SetTablePrefix sets the TablePrefix field's value.
func (s *UpdateCrawlerInput) SetTablePrefix(v string) *UpdateCrawlerInput {
	s.TablePrefix = &v
	return s
}

// SetTargets sets the Targets field's value.
func (s *UpdateCrawlerInput) SetTargets(v *CrawlerTargets) *UpdateCrawlerInput {
	s.Targets = v
	return s
}

type UpdateCrawlerOutput 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 UpdateCrawlerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateCrawlerOutput) GoString() string {
	return s.String()
}

type UpdateCrawlerScheduleInput struct {
	_ struct{} `type:"structure"`

	// The name of the crawler whose schedule to update.
	//
	// CrawlerName is a required field
	CrawlerName *string `min:"1" type:"string" required:"true"`

	// The updated cron expression used to specify the schedule (see Time-Based
	// Schedules for Jobs and Crawlers (https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html).
	// For example, to run something every day at 12:15 UTC, you would specify:
	// cron(15 12 * * ? *).
	Schedule *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 UpdateCrawlerScheduleInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateCrawlerScheduleInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateCrawlerScheduleInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateCrawlerScheduleInput"}
	if s.CrawlerName == nil {
		invalidParams.Add(request.NewErrParamRequired("CrawlerName"))
	}
	if s.CrawlerName != nil && len(*s.CrawlerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CrawlerName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCrawlerName sets the CrawlerName field's value.
func (s *UpdateCrawlerScheduleInput) SetCrawlerName(v string) *UpdateCrawlerScheduleInput {
	s.CrawlerName = &v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *UpdateCrawlerScheduleInput) SetSchedule(v string) *UpdateCrawlerScheduleInput {
	s.Schedule = &v
	return s
}

type UpdateCrawlerScheduleOutput 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 UpdateCrawlerScheduleOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateCrawlerScheduleOutput) GoString() string {
	return s.String()
}

// Specifies a custom CSV classifier to be updated.
type UpdateCsvClassifierRequest struct {
	_ struct{} `type:"structure"`

	// Enables the processing of files that contain only one column.
	AllowSingleColumn *bool `type:"boolean"`

	// Indicates whether the CSV file contains a header.
	ContainsHeader *string `type:"string" enum:"CsvHeaderOption"`

	// Specifies the configuration of custom datatypes.
	CustomDatatypeConfigured *bool `type:"boolean"`

	// Specifies a list of supported custom datatypes.
	CustomDatatypes []*string `type:"list"`

	// A custom symbol to denote what separates each column entry in the row.
	Delimiter *string `min:"1" type:"string"`

	// Specifies not to trim values before identifying the type of column values.
	// The default value is true.
	DisableValueTrimming *bool `type:"boolean"`

	// A list of strings representing column names.
	Header []*string `type:"list"`

	// The name of the classifier.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A custom symbol to denote what combines content into a single column value.
	// It must be different from the column delimiter.
	QuoteSymbol *string `min:"1" type:"string"`

	// Sets the SerDe for processing CSV in the classifier, which will be applied
	// in the Data Catalog. Valid values are OpenCSVSerDe, LazySimpleSerDe, and
	// None. You can specify the None value when you want the crawler to do the
	// detection.
	Serde *string `type:"string" enum:"CsvSerdeOption"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateCsvClassifierRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateCsvClassifierRequest) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateCsvClassifierRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateCsvClassifierRequest"}
	if s.Delimiter != nil && len(*s.Delimiter) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Delimiter", 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.QuoteSymbol != nil && len(*s.QuoteSymbol) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("QuoteSymbol", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAllowSingleColumn sets the AllowSingleColumn field's value.
func (s *UpdateCsvClassifierRequest) SetAllowSingleColumn(v bool) *UpdateCsvClassifierRequest {
	s.AllowSingleColumn = &v
	return s
}

// SetContainsHeader sets the ContainsHeader field's value.
func (s *UpdateCsvClassifierRequest) SetContainsHeader(v string) *UpdateCsvClassifierRequest {
	s.ContainsHeader = &v
	return s
}

// SetCustomDatatypeConfigured sets the CustomDatatypeConfigured field's value.
func (s *UpdateCsvClassifierRequest) SetCustomDatatypeConfigured(v bool) *UpdateCsvClassifierRequest {
	s.CustomDatatypeConfigured = &v
	return s
}

// SetCustomDatatypes sets the CustomDatatypes field's value.
func (s *UpdateCsvClassifierRequest) SetCustomDatatypes(v []*string) *UpdateCsvClassifierRequest {
	s.CustomDatatypes = v
	return s
}

// SetDelimiter sets the Delimiter field's value.
func (s *UpdateCsvClassifierRequest) SetDelimiter(v string) *UpdateCsvClassifierRequest {
	s.Delimiter = &v
	return s
}

// SetDisableValueTrimming sets the DisableValueTrimming field's value.
func (s *UpdateCsvClassifierRequest) SetDisableValueTrimming(v bool) *UpdateCsvClassifierRequest {
	s.DisableValueTrimming = &v
	return s
}

// SetHeader sets the Header field's value.
func (s *UpdateCsvClassifierRequest) SetHeader(v []*string) *UpdateCsvClassifierRequest {
	s.Header = v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateCsvClassifierRequest) SetName(v string) *UpdateCsvClassifierRequest {
	s.Name = &v
	return s
}

// SetQuoteSymbol sets the QuoteSymbol field's value.
func (s *UpdateCsvClassifierRequest) SetQuoteSymbol(v string) *UpdateCsvClassifierRequest {
	s.QuoteSymbol = &v
	return s
}

// SetSerde sets the Serde field's value.
func (s *UpdateCsvClassifierRequest) SetSerde(v string) *UpdateCsvClassifierRequest {
	s.Serde = &v
	return s
}

type UpdateDataQualityRulesetInput struct {
	_ struct{} `type:"structure"`

	// A description of the ruleset.
	Description *string `type:"string"`

	// The name of the data quality ruleset.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// A Data Quality Definition Language (DQDL) ruleset. For more information,
	// see the Glue developer guide.
	Ruleset *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 UpdateDataQualityRulesetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDataQualityRulesetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDataQualityRulesetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDataQualityRulesetInput"}
	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.Ruleset != nil && len(*s.Ruleset) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Ruleset", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *UpdateDataQualityRulesetInput) SetDescription(v string) *UpdateDataQualityRulesetInput {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateDataQualityRulesetInput) SetName(v string) *UpdateDataQualityRulesetInput {
	s.Name = &v
	return s
}

// SetRuleset sets the Ruleset field's value.
func (s *UpdateDataQualityRulesetInput) SetRuleset(v string) *UpdateDataQualityRulesetInput {
	s.Ruleset = &v
	return s
}

type UpdateDataQualityRulesetOutput struct {
	_ struct{} `type:"structure"`

	// A description of the ruleset.
	Description *string `type:"string"`

	// The name of the data quality ruleset.
	Name *string `min:"1" type:"string"`

	// A Data Quality Definition Language (DQDL) ruleset. For more information,
	// see the Glue developer guide.
	Ruleset *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 UpdateDataQualityRulesetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDataQualityRulesetOutput) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *UpdateDataQualityRulesetOutput) SetDescription(v string) *UpdateDataQualityRulesetOutput {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateDataQualityRulesetOutput) SetName(v string) *UpdateDataQualityRulesetOutput {
	s.Name = &v
	return s
}

// SetRuleset sets the Ruleset field's value.
func (s *UpdateDataQualityRulesetOutput) SetRuleset(v string) *UpdateDataQualityRulesetOutput {
	s.Ruleset = &v
	return s
}

type UpdateDatabaseInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which the metadata database resides. If none
	// is provided, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// A DatabaseInput object specifying the new definition of the metadata database
	// in the catalog.
	//
	// DatabaseInput is a required field
	DatabaseInput *DatabaseInput `type:"structure" required:"true"`

	// The name of the database to update in the catalog. For Hive compatibility,
	// this is folded to lowercase.
	//
	// 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 UpdateDatabaseInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDatabaseInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDatabaseInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDatabaseInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseInput == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseInput"))
	}
	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.DatabaseInput != nil {
		if err := s.DatabaseInput.Validate(); err != nil {
			invalidParams.AddNested("DatabaseInput", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *UpdateDatabaseInput) SetCatalogId(v string) *UpdateDatabaseInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseInput sets the DatabaseInput field's value.
func (s *UpdateDatabaseInput) SetDatabaseInput(v *DatabaseInput) *UpdateDatabaseInput {
	s.DatabaseInput = v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateDatabaseInput) SetName(v string) *UpdateDatabaseInput {
	s.Name = &v
	return s
}

type UpdateDatabaseOutput 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 UpdateDatabaseOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDatabaseOutput) GoString() string {
	return s.String()
}

type UpdateDevEndpointInput struct {
	_ struct{} `type:"structure"`

	// The map of arguments to add the map of arguments used to configure the DevEndpoint.
	//
	// Valid arguments are:
	//
	//    * "--enable-glue-datacatalog": ""
	//
	// You can specify a version of Python support for development endpoints by
	// using the Arguments parameter in the CreateDevEndpoint or UpdateDevEndpoint
	// APIs. If no arguments are provided, the version defaults to Python 2.
	AddArguments map[string]*string `type:"map"`

	// The list of public keys for the DevEndpoint to use.
	AddPublicKeys []*string `type:"list"`

	// Custom Python or Java libraries to be loaded in the DevEndpoint.
	CustomLibraries *DevEndpointCustomLibraries `type:"structure"`

	// The list of argument keys to be deleted from the map of arguments used to
	// configure the DevEndpoint.
	DeleteArguments []*string `type:"list"`

	// The list of public keys to be deleted from the DevEndpoint.
	DeletePublicKeys []*string `type:"list"`

	// The name of the DevEndpoint to be updated.
	//
	// EndpointName is a required field
	EndpointName *string `type:"string" required:"true"`

	// The public key for the DevEndpoint to use.
	PublicKey *string `type:"string"`

	// True if the list of custom libraries to be loaded in the development endpoint
	// needs to be updated, or False if otherwise.
	UpdateEtlLibraries *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 UpdateDevEndpointInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDevEndpointInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDevEndpointInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDevEndpointInput"}
	if s.EndpointName == nil {
		invalidParams.Add(request.NewErrParamRequired("EndpointName"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAddArguments sets the AddArguments field's value.
func (s *UpdateDevEndpointInput) SetAddArguments(v map[string]*string) *UpdateDevEndpointInput {
	s.AddArguments = v
	return s
}

// SetAddPublicKeys sets the AddPublicKeys field's value.
func (s *UpdateDevEndpointInput) SetAddPublicKeys(v []*string) *UpdateDevEndpointInput {
	s.AddPublicKeys = v
	return s
}

// SetCustomLibraries sets the CustomLibraries field's value.
func (s *UpdateDevEndpointInput) SetCustomLibraries(v *DevEndpointCustomLibraries) *UpdateDevEndpointInput {
	s.CustomLibraries = v
	return s
}

// SetDeleteArguments sets the DeleteArguments field's value.
func (s *UpdateDevEndpointInput) SetDeleteArguments(v []*string) *UpdateDevEndpointInput {
	s.DeleteArguments = v
	return s
}

// SetDeletePublicKeys sets the DeletePublicKeys field's value.
func (s *UpdateDevEndpointInput) SetDeletePublicKeys(v []*string) *UpdateDevEndpointInput {
	s.DeletePublicKeys = v
	return s
}

// SetEndpointName sets the EndpointName field's value.
func (s *UpdateDevEndpointInput) SetEndpointName(v string) *UpdateDevEndpointInput {
	s.EndpointName = &v
	return s
}

// SetPublicKey sets the PublicKey field's value.
func (s *UpdateDevEndpointInput) SetPublicKey(v string) *UpdateDevEndpointInput {
	s.PublicKey = &v
	return s
}

// SetUpdateEtlLibraries sets the UpdateEtlLibraries field's value.
func (s *UpdateDevEndpointInput) SetUpdateEtlLibraries(v bool) *UpdateDevEndpointInput {
	s.UpdateEtlLibraries = &v
	return s
}

type UpdateDevEndpointOutput 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 UpdateDevEndpointOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDevEndpointOutput) GoString() string {
	return s.String()
}

// Specifies a grok classifier to update when passed to UpdateClassifier.
type UpdateGrokClassifierRequest struct {
	_ struct{} `type:"structure"`

	// An identifier of the data format that the classifier matches, such as Twitter,
	// JSON, Omniture logs, Amazon CloudWatch Logs, and so on.
	Classification *string `type:"string"`

	// Optional custom grok patterns used by this classifier.
	CustomPatterns *string `type:"string"`

	// The grok pattern used by this classifier.
	GrokPattern *string `min:"1" type:"string"`

	// The name of the GrokClassifier.
	//
	// 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 UpdateGrokClassifierRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGrokClassifierRequest) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateGrokClassifierRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateGrokClassifierRequest"}
	if s.GrokPattern != nil && len(*s.GrokPattern) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GrokPattern", 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
}

// SetClassification sets the Classification field's value.
func (s *UpdateGrokClassifierRequest) SetClassification(v string) *UpdateGrokClassifierRequest {
	s.Classification = &v
	return s
}

// SetCustomPatterns sets the CustomPatterns field's value.
func (s *UpdateGrokClassifierRequest) SetCustomPatterns(v string) *UpdateGrokClassifierRequest {
	s.CustomPatterns = &v
	return s
}

// SetGrokPattern sets the GrokPattern field's value.
func (s *UpdateGrokClassifierRequest) SetGrokPattern(v string) *UpdateGrokClassifierRequest {
	s.GrokPattern = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateGrokClassifierRequest) SetName(v string) *UpdateGrokClassifierRequest {
	s.Name = &v
	return s
}

type UpdateJobFromSourceControlInput struct {
	_ struct{} `type:"structure"`

	// The type of authentication, which can be an authentication token stored in
	// Amazon Web Services Secrets Manager, or a personal access token.
	AuthStrategy *string `type:"string" enum:"SourceControlAuthStrategy"`

	// The value of the authorization token.
	AuthToken *string `min:"1" type:"string"`

	// An optional branch in the remote repository.
	BranchName *string `min:"1" type:"string"`

	// A commit ID for a commit in the remote repository.
	CommitId *string `min:"1" type:"string"`

	// An optional folder in the remote repository.
	Folder *string `min:"1" type:"string"`

	// The name of the Glue job to be synchronized to or from the remote repository.
	JobName *string `min:"1" type:"string"`

	// The provider for the remote repository. Possible values: GITHUB, AWS_CODE_COMMIT,
	// GITLAB, BITBUCKET.
	Provider *string `type:"string" enum:"SourceControlProvider"`

	// The name of the remote repository that contains the job artifacts. For BitBucket
	// providers, RepositoryName should include WorkspaceName. Use the format <WorkspaceName>/<RepositoryName>.
	RepositoryName *string `min:"1" type:"string"`

	// The owner of the remote repository that contains the job artifacts.
	RepositoryOwner *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 UpdateJobFromSourceControlInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateJobFromSourceControlInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateJobFromSourceControlInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateJobFromSourceControlInput"}
	if s.AuthToken != nil && len(*s.AuthToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AuthToken", 1))
	}
	if s.BranchName != nil && len(*s.BranchName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("BranchName", 1))
	}
	if s.CommitId != nil && len(*s.CommitId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CommitId", 1))
	}
	if s.Folder != nil && len(*s.Folder) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Folder", 1))
	}
	if s.JobName != nil && len(*s.JobName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("JobName", 1))
	}
	if s.RepositoryName != nil && len(*s.RepositoryName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RepositoryName", 1))
	}
	if s.RepositoryOwner != nil && len(*s.RepositoryOwner) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RepositoryOwner", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAuthStrategy sets the AuthStrategy field's value.
func (s *UpdateJobFromSourceControlInput) SetAuthStrategy(v string) *UpdateJobFromSourceControlInput {
	s.AuthStrategy = &v
	return s
}

// SetAuthToken sets the AuthToken field's value.
func (s *UpdateJobFromSourceControlInput) SetAuthToken(v string) *UpdateJobFromSourceControlInput {
	s.AuthToken = &v
	return s
}

// SetBranchName sets the BranchName field's value.
func (s *UpdateJobFromSourceControlInput) SetBranchName(v string) *UpdateJobFromSourceControlInput {
	s.BranchName = &v
	return s
}

// SetCommitId sets the CommitId field's value.
func (s *UpdateJobFromSourceControlInput) SetCommitId(v string) *UpdateJobFromSourceControlInput {
	s.CommitId = &v
	return s
}

// SetFolder sets the Folder field's value.
func (s *UpdateJobFromSourceControlInput) SetFolder(v string) *UpdateJobFromSourceControlInput {
	s.Folder = &v
	return s
}

// SetJobName sets the JobName field's value.
func (s *UpdateJobFromSourceControlInput) SetJobName(v string) *UpdateJobFromSourceControlInput {
	s.JobName = &v
	return s
}

// SetProvider sets the Provider field's value.
func (s *UpdateJobFromSourceControlInput) SetProvider(v string) *UpdateJobFromSourceControlInput {
	s.Provider = &v
	return s
}

// SetRepositoryName sets the RepositoryName field's value.
func (s *UpdateJobFromSourceControlInput) SetRepositoryName(v string) *UpdateJobFromSourceControlInput {
	s.RepositoryName = &v
	return s
}

// SetRepositoryOwner sets the RepositoryOwner field's value.
func (s *UpdateJobFromSourceControlInput) SetRepositoryOwner(v string) *UpdateJobFromSourceControlInput {
	s.RepositoryOwner = &v
	return s
}

type UpdateJobFromSourceControlOutput struct {
	_ struct{} `type:"structure"`

	// The name of the Glue job.
	JobName *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 UpdateJobFromSourceControlOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateJobFromSourceControlOutput) GoString() string {
	return s.String()
}

// SetJobName sets the JobName field's value.
func (s *UpdateJobFromSourceControlOutput) SetJobName(v string) *UpdateJobFromSourceControlOutput {
	s.JobName = &v
	return s
}

type UpdateJobInput struct {
	_ struct{} `type:"structure"`

	// The name of the job definition to update.
	//
	// JobName is a required field
	JobName *string `min:"1" type:"string" required:"true"`

	// Specifies the values with which to update the job definition. Unspecified
	// configuration is removed or reset to default values.
	//
	// JobUpdate is a required field
	JobUpdate *JobUpdate `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 UpdateJobInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateJobInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateJobInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateJobInput"}
	if s.JobName == nil {
		invalidParams.Add(request.NewErrParamRequired("JobName"))
	}
	if s.JobName != nil && len(*s.JobName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("JobName", 1))
	}
	if s.JobUpdate == nil {
		invalidParams.Add(request.NewErrParamRequired("JobUpdate"))
	}
	if s.JobUpdate != nil {
		if err := s.JobUpdate.Validate(); err != nil {
			invalidParams.AddNested("JobUpdate", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetJobName sets the JobName field's value.
func (s *UpdateJobInput) SetJobName(v string) *UpdateJobInput {
	s.JobName = &v
	return s
}

// SetJobUpdate sets the JobUpdate field's value.
func (s *UpdateJobInput) SetJobUpdate(v *JobUpdate) *UpdateJobInput {
	s.JobUpdate = v
	return s
}

type UpdateJobOutput struct {
	_ struct{} `type:"structure"`

	// Returns the name of the updated job definition.
	JobName *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 UpdateJobOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateJobOutput) GoString() string {
	return s.String()
}

// SetJobName sets the JobName field's value.
func (s *UpdateJobOutput) SetJobName(v string) *UpdateJobOutput {
	s.JobName = &v
	return s
}

// Specifies a JSON classifier to be updated.
type UpdateJsonClassifierRequest struct {
	_ struct{} `type:"structure"`

	// A JsonPath string defining the JSON data for the classifier to classify.
	// Glue supports a subset of JsonPath, as described in Writing JsonPath Custom
	// Classifiers (https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html#custom-classifier-json).
	JsonPath *string `type:"string"`

	// The name of the classifier.
	//
	// 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 UpdateJsonClassifierRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateJsonClassifierRequest) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateJsonClassifierRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateJsonClassifierRequest"}
	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
}

// SetJsonPath sets the JsonPath field's value.
func (s *UpdateJsonClassifierRequest) SetJsonPath(v string) *UpdateJsonClassifierRequest {
	s.JsonPath = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateJsonClassifierRequest) SetName(v string) *UpdateJsonClassifierRequest {
	s.Name = &v
	return s
}

type UpdateMLTransformInput struct {
	_ struct{} `type:"structure"`

	// A description of the transform. The default is an empty string.
	Description *string `type:"string"`

	// This value determines which version of Glue this machine learning transform
	// is compatible with. Glue 1.0 is recommended for most customers. If the value
	// is not set, the Glue compatibility defaults to Glue 0.9. For more information,
	// see Glue Versions (https://docs.aws.amazon.com/glue/latest/dg/release-notes.html#release-notes-versions)
	// in the developer guide.
	GlueVersion *string `min:"1" type:"string"`

	// The number of Glue data processing units (DPUs) that are allocated to task
	// runs for this transform. You can allocate from 2 to 100 DPUs; the default
	// is 10. A DPU is a relative measure of processing power that consists of 4
	// vCPUs of compute capacity and 16 GB of memory. For more information, see
	// the Glue pricing page (https://aws.amazon.com/glue/pricing/).
	//
	// When the WorkerType field is set to a value other than Standard, the MaxCapacity
	// field is set automatically and becomes read-only.
	MaxCapacity *float64 `type:"double"`

	// The maximum number of times to retry a task for this transform after a task
	// run fails.
	MaxRetries *int64 `type:"integer"`

	// The unique name that you gave the transform when you created it.
	Name *string `min:"1" type:"string"`

	// The number of workers of a defined workerType that are allocated when this
	// task runs.
	NumberOfWorkers *int64 `type:"integer"`

	// The configuration parameters that are specific to the transform type (algorithm)
	// used. Conditionally dependent on the transform type.
	Parameters *TransformParameters `type:"structure"`

	// The name or Amazon Resource Name (ARN) of the IAM role with the required
	// permissions.
	Role *string `type:"string"`

	// The timeout for a task run for this transform in minutes. This is the maximum
	// time that a task run for this transform can consume resources before it is
	// terminated and enters TIMEOUT status. The default is 2,880 minutes (48 hours).
	Timeout *int64 `min:"1" type:"integer"`

	// A unique identifier that was generated when the transform was created.
	//
	// TransformId is a required field
	TransformId *string `min:"1" type:"string" required:"true"`

	// The type of predefined worker that is allocated when this task runs. Accepts
	// a value of Standard, G.1X, or G.2X.
	//
	//    * For the Standard worker type, each worker provides 4 vCPU, 16 GB of
	//    memory and a 50GB disk, and 2 executors per worker.
	//
	//    * For the G.1X worker type, each worker provides 4 vCPU, 16 GB of memory
	//    and a 64GB disk, and 1 executor per worker.
	//
	//    * For the G.2X worker type, each worker provides 8 vCPU, 32 GB of memory
	//    and a 128GB disk, and 1 executor per worker.
	WorkerType *string `type:"string" enum:"WorkerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateMLTransformInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateMLTransformInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateMLTransformInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateMLTransformInput"}
	if s.GlueVersion != nil && len(*s.GlueVersion) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GlueVersion", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.Timeout != nil && *s.Timeout < 1 {
		invalidParams.Add(request.NewErrParamMinValue("Timeout", 1))
	}
	if s.TransformId == nil {
		invalidParams.Add(request.NewErrParamRequired("TransformId"))
	}
	if s.TransformId != nil && len(*s.TransformId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TransformId", 1))
	}
	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
}

// SetDescription sets the Description field's value.
func (s *UpdateMLTransformInput) SetDescription(v string) *UpdateMLTransformInput {
	s.Description = &v
	return s
}

// SetGlueVersion sets the GlueVersion field's value.
func (s *UpdateMLTransformInput) SetGlueVersion(v string) *UpdateMLTransformInput {
	s.GlueVersion = &v
	return s
}

// SetMaxCapacity sets the MaxCapacity field's value.
func (s *UpdateMLTransformInput) SetMaxCapacity(v float64) *UpdateMLTransformInput {
	s.MaxCapacity = &v
	return s
}

// SetMaxRetries sets the MaxRetries field's value.
func (s *UpdateMLTransformInput) SetMaxRetries(v int64) *UpdateMLTransformInput {
	s.MaxRetries = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateMLTransformInput) SetName(v string) *UpdateMLTransformInput {
	s.Name = &v
	return s
}

// SetNumberOfWorkers sets the NumberOfWorkers field's value.
func (s *UpdateMLTransformInput) SetNumberOfWorkers(v int64) *UpdateMLTransformInput {
	s.NumberOfWorkers = &v
	return s
}

// SetParameters sets the Parameters field's value.
func (s *UpdateMLTransformInput) SetParameters(v *TransformParameters) *UpdateMLTransformInput {
	s.Parameters = v
	return s
}

// SetRole sets the Role field's value.
func (s *UpdateMLTransformInput) SetRole(v string) *UpdateMLTransformInput {
	s.Role = &v
	return s
}

// SetTimeout sets the Timeout field's value.
func (s *UpdateMLTransformInput) SetTimeout(v int64) *UpdateMLTransformInput {
	s.Timeout = &v
	return s
}

// SetTransformId sets the TransformId field's value.
func (s *UpdateMLTransformInput) SetTransformId(v string) *UpdateMLTransformInput {
	s.TransformId = &v
	return s
}

// SetWorkerType sets the WorkerType field's value.
func (s *UpdateMLTransformInput) SetWorkerType(v string) *UpdateMLTransformInput {
	s.WorkerType = &v
	return s
}

type UpdateMLTransformOutput struct {
	_ struct{} `type:"structure"`

	// The unique identifier for the transform that was updated.
	TransformId *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 UpdateMLTransformOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateMLTransformOutput) GoString() string {
	return s.String()
}

// SetTransformId sets the TransformId field's value.
func (s *UpdateMLTransformOutput) SetTransformId(v string) *UpdateMLTransformOutput {
	s.TransformId = &v
	return s
}

type UpdatePartitionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the partition to be updated resides. If
	// none is provided, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the catalog database in which the table in question resides.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The new partition object to update the partition to.
	//
	// The Values property can't be changed. If you want to change the partition
	// key values for a partition, delete and recreate the partition.
	//
	// PartitionInput is a required field
	PartitionInput *PartitionInput `type:"structure" required:"true"`

	// List of partition key values that define the partition to update.
	//
	// PartitionValueList is a required field
	PartitionValueList []*string `type:"list" required:"true"`

	// The name of the table in which the partition to be updated is located.
	//
	// TableName is a required field
	TableName *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 UpdatePartitionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdatePartitionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdatePartitionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdatePartitionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.PartitionInput == nil {
		invalidParams.Add(request.NewErrParamRequired("PartitionInput"))
	}
	if s.PartitionValueList == nil {
		invalidParams.Add(request.NewErrParamRequired("PartitionValueList"))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}
	if s.PartitionInput != nil {
		if err := s.PartitionInput.Validate(); err != nil {
			invalidParams.AddNested("PartitionInput", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *UpdatePartitionInput) SetCatalogId(v string) *UpdatePartitionInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *UpdatePartitionInput) SetDatabaseName(v string) *UpdatePartitionInput {
	s.DatabaseName = &v
	return s
}

// SetPartitionInput sets the PartitionInput field's value.
func (s *UpdatePartitionInput) SetPartitionInput(v *PartitionInput) *UpdatePartitionInput {
	s.PartitionInput = v
	return s
}

// SetPartitionValueList sets the PartitionValueList field's value.
func (s *UpdatePartitionInput) SetPartitionValueList(v []*string) *UpdatePartitionInput {
	s.PartitionValueList = v
	return s
}

// SetTableName sets the TableName field's value.
func (s *UpdatePartitionInput) SetTableName(v string) *UpdatePartitionInput {
	s.TableName = &v
	return s
}

type UpdatePartitionOutput 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 UpdatePartitionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdatePartitionOutput) GoString() string {
	return s.String()
}

type UpdateRegistryInput struct {
	_ struct{} `type:"structure"`

	// A description of the registry. If description is not provided, this field
	// will not be updated.
	//
	// Description is a required field
	Description *string `type:"string" required:"true"`

	// This is a wrapper structure that may contain the registry name and Amazon
	// Resource Name (ARN).
	//
	// RegistryId is a required field
	RegistryId *RegistryId `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 UpdateRegistryInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRegistryInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateRegistryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateRegistryInput"}
	if s.Description == nil {
		invalidParams.Add(request.NewErrParamRequired("Description"))
	}
	if s.RegistryId == nil {
		invalidParams.Add(request.NewErrParamRequired("RegistryId"))
	}
	if s.RegistryId != nil {
		if err := s.RegistryId.Validate(); err != nil {
			invalidParams.AddNested("RegistryId", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *UpdateRegistryInput) SetDescription(v string) *UpdateRegistryInput {
	s.Description = &v
	return s
}

// SetRegistryId sets the RegistryId field's value.
func (s *UpdateRegistryInput) SetRegistryId(v *RegistryId) *UpdateRegistryInput {
	s.RegistryId = v
	return s
}

type UpdateRegistryOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource name (ARN) of the updated registry.
	RegistryArn *string `min:"1" type:"string"`

	// The name of the updated registry.
	RegistryName *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 UpdateRegistryOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateRegistryOutput) GoString() string {
	return s.String()
}

// SetRegistryArn sets the RegistryArn field's value.
func (s *UpdateRegistryOutput) SetRegistryArn(v string) *UpdateRegistryOutput {
	s.RegistryArn = &v
	return s
}

// SetRegistryName sets the RegistryName field's value.
func (s *UpdateRegistryOutput) SetRegistryName(v string) *UpdateRegistryOutput {
	s.RegistryName = &v
	return s
}

type UpdateSchemaInput struct {
	_ struct{} `type:"structure"`

	// The new compatibility setting for the schema.
	Compatibility *string `type:"string" enum:"Compatibility"`

	// The new description for the schema.
	Description *string `type:"string"`

	// This is a wrapper structure to contain schema identity fields. The structure
	// contains:
	//
	//    * SchemaId$SchemaArn: The Amazon Resource Name (ARN) of the schema. One
	//    of SchemaArn or SchemaName has to be provided.
	//
	//    * SchemaId$SchemaName: The name of the schema. One of SchemaArn or SchemaName
	//    has to be provided.
	//
	// SchemaId is a required field
	SchemaId *SchemaId `type:"structure" required:"true"`

	// Version number required for check pointing. One of VersionNumber or Compatibility
	// has to be provided.
	SchemaVersionNumber *SchemaVersionNumber `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSchemaInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSchemaInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateSchemaInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateSchemaInput"}
	if s.SchemaId == nil {
		invalidParams.Add(request.NewErrParamRequired("SchemaId"))
	}
	if s.SchemaId != nil {
		if err := s.SchemaId.Validate(); err != nil {
			invalidParams.AddNested("SchemaId", err.(request.ErrInvalidParams))
		}
	}
	if s.SchemaVersionNumber != nil {
		if err := s.SchemaVersionNumber.Validate(); err != nil {
			invalidParams.AddNested("SchemaVersionNumber", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCompatibility sets the Compatibility field's value.
func (s *UpdateSchemaInput) SetCompatibility(v string) *UpdateSchemaInput {
	s.Compatibility = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateSchemaInput) SetDescription(v string) *UpdateSchemaInput {
	s.Description = &v
	return s
}

// SetSchemaId sets the SchemaId field's value.
func (s *UpdateSchemaInput) SetSchemaId(v *SchemaId) *UpdateSchemaInput {
	s.SchemaId = v
	return s
}

// SetSchemaVersionNumber sets the SchemaVersionNumber field's value.
func (s *UpdateSchemaInput) SetSchemaVersionNumber(v *SchemaVersionNumber) *UpdateSchemaInput {
	s.SchemaVersionNumber = v
	return s
}

type UpdateSchemaOutput struct {
	_ struct{} `type:"structure"`

	// The name of the registry that contains the schema.
	RegistryName *string `min:"1" type:"string"`

	// The Amazon Resource Name (ARN) of the schema.
	SchemaArn *string `min:"1" type:"string"`

	// The name of the schema.
	SchemaName *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 UpdateSchemaOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSchemaOutput) GoString() string {
	return s.String()
}

// SetRegistryName sets the RegistryName field's value.
func (s *UpdateSchemaOutput) SetRegistryName(v string) *UpdateSchemaOutput {
	s.RegistryName = &v
	return s
}

// SetSchemaArn sets the SchemaArn field's value.
func (s *UpdateSchemaOutput) SetSchemaArn(v string) *UpdateSchemaOutput {
	s.SchemaArn = &v
	return s
}

// SetSchemaName sets the SchemaName field's value.
func (s *UpdateSchemaOutput) SetSchemaName(v string) *UpdateSchemaOutput {
	s.SchemaName = &v
	return s
}

type UpdateSourceControlFromJobInput struct {
	_ struct{} `type:"structure"`

	// The type of authentication, which can be an authentication token stored in
	// Amazon Web Services Secrets Manager, or a personal access token.
	AuthStrategy *string `type:"string" enum:"SourceControlAuthStrategy"`

	// The value of the authorization token.
	AuthToken *string `min:"1" type:"string"`

	// An optional branch in the remote repository.
	BranchName *string `min:"1" type:"string"`

	// A commit ID for a commit in the remote repository.
	CommitId *string `min:"1" type:"string"`

	// An optional folder in the remote repository.
	Folder *string `min:"1" type:"string"`

	// The name of the Glue job to be synchronized to or from the remote repository.
	JobName *string `min:"1" type:"string"`

	// The provider for the remote repository. Possible values: GITHUB, AWS_CODE_COMMIT,
	// GITLAB, BITBUCKET.
	Provider *string `type:"string" enum:"SourceControlProvider"`

	// The name of the remote repository that contains the job artifacts. For BitBucket
	// providers, RepositoryName should include WorkspaceName. Use the format <WorkspaceName>/<RepositoryName>.
	RepositoryName *string `min:"1" type:"string"`

	// The owner of the remote repository that contains the job artifacts.
	RepositoryOwner *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 UpdateSourceControlFromJobInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSourceControlFromJobInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateSourceControlFromJobInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateSourceControlFromJobInput"}
	if s.AuthToken != nil && len(*s.AuthToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AuthToken", 1))
	}
	if s.BranchName != nil && len(*s.BranchName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("BranchName", 1))
	}
	if s.CommitId != nil && len(*s.CommitId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CommitId", 1))
	}
	if s.Folder != nil && len(*s.Folder) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Folder", 1))
	}
	if s.JobName != nil && len(*s.JobName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("JobName", 1))
	}
	if s.RepositoryName != nil && len(*s.RepositoryName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RepositoryName", 1))
	}
	if s.RepositoryOwner != nil && len(*s.RepositoryOwner) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RepositoryOwner", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAuthStrategy sets the AuthStrategy field's value.
func (s *UpdateSourceControlFromJobInput) SetAuthStrategy(v string) *UpdateSourceControlFromJobInput {
	s.AuthStrategy = &v
	return s
}

// SetAuthToken sets the AuthToken field's value.
func (s *UpdateSourceControlFromJobInput) SetAuthToken(v string) *UpdateSourceControlFromJobInput {
	s.AuthToken = &v
	return s
}

// SetBranchName sets the BranchName field's value.
func (s *UpdateSourceControlFromJobInput) SetBranchName(v string) *UpdateSourceControlFromJobInput {
	s.BranchName = &v
	return s
}

// SetCommitId sets the CommitId field's value.
func (s *UpdateSourceControlFromJobInput) SetCommitId(v string) *UpdateSourceControlFromJobInput {
	s.CommitId = &v
	return s
}

// SetFolder sets the Folder field's value.
func (s *UpdateSourceControlFromJobInput) SetFolder(v string) *UpdateSourceControlFromJobInput {
	s.Folder = &v
	return s
}

// SetJobName sets the JobName field's value.
func (s *UpdateSourceControlFromJobInput) SetJobName(v string) *UpdateSourceControlFromJobInput {
	s.JobName = &v
	return s
}

// SetProvider sets the Provider field's value.
func (s *UpdateSourceControlFromJobInput) SetProvider(v string) *UpdateSourceControlFromJobInput {
	s.Provider = &v
	return s
}

// SetRepositoryName sets the RepositoryName field's value.
func (s *UpdateSourceControlFromJobInput) SetRepositoryName(v string) *UpdateSourceControlFromJobInput {
	s.RepositoryName = &v
	return s
}

// SetRepositoryOwner sets the RepositoryOwner field's value.
func (s *UpdateSourceControlFromJobInput) SetRepositoryOwner(v string) *UpdateSourceControlFromJobInput {
	s.RepositoryOwner = &v
	return s
}

type UpdateSourceControlFromJobOutput struct {
	_ struct{} `type:"structure"`

	// The name of the Glue job.
	JobName *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 UpdateSourceControlFromJobOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSourceControlFromJobOutput) GoString() string {
	return s.String()
}

// SetJobName sets the JobName field's value.
func (s *UpdateSourceControlFromJobOutput) SetJobName(v string) *UpdateSourceControlFromJobOutput {
	s.JobName = &v
	return s
}

type UpdateTableInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the table resides. If none is provided,
	// the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the catalog database in which the table resides. For Hive compatibility,
	// this name is entirely lowercase.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// A flag that can be set to true to ignore matching storage descriptor and
	// subobject matching requirements.
	Force *bool `type:"boolean"`

	// By default, UpdateTable always creates an archived version of the table before
	// updating it. However, if skipArchive is set to true, UpdateTable does not
	// create the archived version.
	SkipArchive *bool `type:"boolean"`

	// An updated TableInput object to define the metadata table in the catalog.
	//
	// TableInput is a required field
	TableInput *TableInput `type:"structure" required:"true"`

	// The transaction ID at which to update the table contents.
	TransactionId *string `min:"1" type:"string"`

	// The version ID at which to update the table contents.
	VersionId *string `min:"1" type:"string"`

	// The operation to be performed when updating the view.
	ViewUpdateAction *string `type:"string" enum:"ViewUpdateAction"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTableInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTableInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateTableInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateTableInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.TableInput == nil {
		invalidParams.Add(request.NewErrParamRequired("TableInput"))
	}
	if s.TransactionId != nil && len(*s.TransactionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TransactionId", 1))
	}
	if s.VersionId != nil && len(*s.VersionId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("VersionId", 1))
	}
	if s.TableInput != nil {
		if err := s.TableInput.Validate(); err != nil {
			invalidParams.AddNested("TableInput", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *UpdateTableInput) SetCatalogId(v string) *UpdateTableInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *UpdateTableInput) SetDatabaseName(v string) *UpdateTableInput {
	s.DatabaseName = &v
	return s
}

// SetForce sets the Force field's value.
func (s *UpdateTableInput) SetForce(v bool) *UpdateTableInput {
	s.Force = &v
	return s
}

// SetSkipArchive sets the SkipArchive field's value.
func (s *UpdateTableInput) SetSkipArchive(v bool) *UpdateTableInput {
	s.SkipArchive = &v
	return s
}

// SetTableInput sets the TableInput field's value.
func (s *UpdateTableInput) SetTableInput(v *TableInput) *UpdateTableInput {
	s.TableInput = v
	return s
}

// SetTransactionId sets the TransactionId field's value.
func (s *UpdateTableInput) SetTransactionId(v string) *UpdateTableInput {
	s.TransactionId = &v
	return s
}

// SetVersionId sets the VersionId field's value.
func (s *UpdateTableInput) SetVersionId(v string) *UpdateTableInput {
	s.VersionId = &v
	return s
}

// SetViewUpdateAction sets the ViewUpdateAction field's value.
func (s *UpdateTableInput) SetViewUpdateAction(v string) *UpdateTableInput {
	s.ViewUpdateAction = &v
	return s
}

type UpdateTableOptimizerInput struct {
	_ struct{} `type:"structure"`

	// The Catalog ID of the table.
	//
	// CatalogId is a required field
	CatalogId *string `min:"1" type:"string" required:"true"`

	// The name of the database in the catalog in which the table resides.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The name of the table.
	//
	// TableName is a required field
	TableName *string `min:"1" type:"string" required:"true"`

	// A TableOptimizerConfiguration object representing the configuration of a
	// table optimizer.
	//
	// TableOptimizerConfiguration is a required field
	TableOptimizerConfiguration *TableOptimizerConfiguration `type:"structure" required:"true"`

	// The type of table optimizer. Currently, the only valid value is compaction.
	//
	// Type is a required field
	Type *string `type:"string" required:"true" enum:"TableOptimizerType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTableOptimizerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTableOptimizerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateTableOptimizerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateTableOptimizerInput"}
	if s.CatalogId == nil {
		invalidParams.Add(request.NewErrParamRequired("CatalogId"))
	}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.TableName == nil {
		invalidParams.Add(request.NewErrParamRequired("TableName"))
	}
	if s.TableName != nil && len(*s.TableName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TableName", 1))
	}
	if s.TableOptimizerConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("TableOptimizerConfiguration"))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.TableOptimizerConfiguration != nil {
		if err := s.TableOptimizerConfiguration.Validate(); err != nil {
			invalidParams.AddNested("TableOptimizerConfiguration", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *UpdateTableOptimizerInput) SetCatalogId(v string) *UpdateTableOptimizerInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *UpdateTableOptimizerInput) SetDatabaseName(v string) *UpdateTableOptimizerInput {
	s.DatabaseName = &v
	return s
}

// SetTableName sets the TableName field's value.
func (s *UpdateTableOptimizerInput) SetTableName(v string) *UpdateTableOptimizerInput {
	s.TableName = &v
	return s
}

// SetTableOptimizerConfiguration sets the TableOptimizerConfiguration field's value.
func (s *UpdateTableOptimizerInput) SetTableOptimizerConfiguration(v *TableOptimizerConfiguration) *UpdateTableOptimizerInput {
	s.TableOptimizerConfiguration = v
	return s
}

// SetType sets the Type field's value.
func (s *UpdateTableOptimizerInput) SetType(v string) *UpdateTableOptimizerInput {
	s.Type = &v
	return s
}

type UpdateTableOptimizerOutput 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 UpdateTableOptimizerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTableOptimizerOutput) GoString() string {
	return s.String()
}

type UpdateTableOutput 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 UpdateTableOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTableOutput) GoString() string {
	return s.String()
}

type UpdateTriggerInput struct {
	_ struct{} `type:"structure"`

	// The name of the trigger to update.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The new values with which to update the trigger.
	//
	// TriggerUpdate is a required field
	TriggerUpdate *TriggerUpdate `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 UpdateTriggerInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTriggerInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateTriggerInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateTriggerInput"}
	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.TriggerUpdate == nil {
		invalidParams.Add(request.NewErrParamRequired("TriggerUpdate"))
	}
	if s.TriggerUpdate != nil {
		if err := s.TriggerUpdate.Validate(); err != nil {
			invalidParams.AddNested("TriggerUpdate", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *UpdateTriggerInput) SetName(v string) *UpdateTriggerInput {
	s.Name = &v
	return s
}

// SetTriggerUpdate sets the TriggerUpdate field's value.
func (s *UpdateTriggerInput) SetTriggerUpdate(v *TriggerUpdate) *UpdateTriggerInput {
	s.TriggerUpdate = v
	return s
}

type UpdateTriggerOutput struct {
	_ struct{} `type:"structure"`

	// The resulting trigger definition.
	Trigger *Trigger `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTriggerOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateTriggerOutput) GoString() string {
	return s.String()
}

// SetTrigger sets the Trigger field's value.
func (s *UpdateTriggerOutput) SetTrigger(v *Trigger) *UpdateTriggerOutput {
	s.Trigger = v
	return s
}

type UpdateUsageProfileInput struct {
	_ struct{} `type:"structure"`

	// A ProfileConfiguration object specifying the job and session values for the
	// profile.
	//
	// Configuration is a required field
	Configuration *ProfileConfiguration `type:"structure" required:"true"`

	// A description of the usage profile.
	Description *string `type:"string"`

	// The name of the usage profile.
	//
	// 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 UpdateUsageProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUsageProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateUsageProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateUsageProfileInput"}
	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.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 *UpdateUsageProfileInput) SetConfiguration(v *ProfileConfiguration) *UpdateUsageProfileInput {
	s.Configuration = v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateUsageProfileInput) SetDescription(v string) *UpdateUsageProfileInput {
	s.Description = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateUsageProfileInput) SetName(v string) *UpdateUsageProfileInput {
	s.Name = &v
	return s
}

type UpdateUsageProfileOutput struct {
	_ struct{} `type:"structure"`

	// The name of the usage profile that was updated.
	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 UpdateUsageProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUsageProfileOutput) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *UpdateUsageProfileOutput) SetName(v string) *UpdateUsageProfileOutput {
	s.Name = &v
	return s
}

type UpdateUserDefinedFunctionInput struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog where the function to be updated is located. If
	// none is provided, the Amazon Web Services account ID is used by default.
	CatalogId *string `min:"1" type:"string"`

	// The name of the catalog database where the function to be updated is located.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// A FunctionInput object that redefines the function in the Data Catalog.
	//
	// FunctionInput is a required field
	FunctionInput *UserDefinedFunctionInput `type:"structure" required:"true"`

	// The name of the function.
	//
	// FunctionName is a required field
	FunctionName *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 UpdateUserDefinedFunctionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserDefinedFunctionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateUserDefinedFunctionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateUserDefinedFunctionInput"}
	if s.CatalogId != nil && len(*s.CatalogId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("CatalogId", 1))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.FunctionInput == nil {
		invalidParams.Add(request.NewErrParamRequired("FunctionInput"))
	}
	if s.FunctionName == nil {
		invalidParams.Add(request.NewErrParamRequired("FunctionName"))
	}
	if s.FunctionName != nil && len(*s.FunctionName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FunctionName", 1))
	}
	if s.FunctionInput != nil {
		if err := s.FunctionInput.Validate(); err != nil {
			invalidParams.AddNested("FunctionInput", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCatalogId sets the CatalogId field's value.
func (s *UpdateUserDefinedFunctionInput) SetCatalogId(v string) *UpdateUserDefinedFunctionInput {
	s.CatalogId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *UpdateUserDefinedFunctionInput) SetDatabaseName(v string) *UpdateUserDefinedFunctionInput {
	s.DatabaseName = &v
	return s
}

// SetFunctionInput sets the FunctionInput field's value.
func (s *UpdateUserDefinedFunctionInput) SetFunctionInput(v *UserDefinedFunctionInput) *UpdateUserDefinedFunctionInput {
	s.FunctionInput = v
	return s
}

// SetFunctionName sets the FunctionName field's value.
func (s *UpdateUserDefinedFunctionInput) SetFunctionName(v string) *UpdateUserDefinedFunctionInput {
	s.FunctionName = &v
	return s
}

type UpdateUserDefinedFunctionOutput 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 UpdateUserDefinedFunctionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserDefinedFunctionOutput) GoString() string {
	return s.String()
}

type UpdateWorkflowInput struct {
	_ struct{} `type:"structure"`

	// A collection of properties to be used as part of each execution of the workflow.
	DefaultRunProperties map[string]*string `type:"map"`

	// The description of the workflow.
	Description *string `type:"string"`

	// You can use this parameter to prevent unwanted multiple updates to data,
	// to control costs, or in some cases, to prevent exceeding the maximum number
	// of concurrent runs of any of the component jobs. If you leave this parameter
	// blank, there is no limit to the number of concurrent workflow runs.
	MaxConcurrentRuns *int64 `type:"integer"`

	// Name of the workflow to be updated.
	//
	// 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 UpdateWorkflowInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateWorkflowInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateWorkflowInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateWorkflowInput"}
	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
}

// SetDefaultRunProperties sets the DefaultRunProperties field's value.
func (s *UpdateWorkflowInput) SetDefaultRunProperties(v map[string]*string) *UpdateWorkflowInput {
	s.DefaultRunProperties = v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateWorkflowInput) SetDescription(v string) *UpdateWorkflowInput {
	s.Description = &v
	return s
}

// SetMaxConcurrentRuns sets the MaxConcurrentRuns field's value.
func (s *UpdateWorkflowInput) SetMaxConcurrentRuns(v int64) *UpdateWorkflowInput {
	s.MaxConcurrentRuns = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateWorkflowInput) SetName(v string) *UpdateWorkflowInput {
	s.Name = &v
	return s
}

type UpdateWorkflowOutput struct {
	_ struct{} `type:"structure"`

	// The name of the workflow which was specified in input.
	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 UpdateWorkflowOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateWorkflowOutput) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *UpdateWorkflowOutput) SetName(v string) *UpdateWorkflowOutput {
	s.Name = &v
	return s
}

// Specifies an XML classifier to be updated.
type UpdateXMLClassifierRequest struct {
	_ struct{} `type:"structure"`

	// An identifier of the data format that the classifier matches.
	Classification *string `type:"string"`

	// The name of the classifier.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The XML tag designating the element that contains each record in an XML document
	// being parsed. This cannot identify a self-closing element (closed by />).
	// An empty row element that contains only attributes can be parsed as long
	// as it ends with a closing tag (for example, <row item_a="A" item_b="B"></row>
	// is okay, but <row item_a="A" item_b="B" /> is not).
	RowTag *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 UpdateXMLClassifierRequest) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateXMLClassifierRequest) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateXMLClassifierRequest) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateXMLClassifierRequest"}
	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
}

// SetClassification sets the Classification field's value.
func (s *UpdateXMLClassifierRequest) SetClassification(v string) *UpdateXMLClassifierRequest {
	s.Classification = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateXMLClassifierRequest) SetName(v string) *UpdateXMLClassifierRequest {
	s.Name = &v
	return s
}

// SetRowTag sets the RowTag field's value.
func (s *UpdateXMLClassifierRequest) SetRowTag(v string) *UpdateXMLClassifierRequest {
	s.RowTag = &v
	return s
}

// The options to configure an upsert operation when writing to a Redshift target .
type UpsertRedshiftTargetOptions struct {
	_ struct{} `type:"structure"`

	// The name of the connection to use to write to Redshift.
	ConnectionName *string `type:"string"`

	// The physical location of the Redshift table.
	TableLocation *string `type:"string"`

	// The keys used to determine whether to perform an update or insert.
	UpsertKeys []*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 UpsertRedshiftTargetOptions) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpsertRedshiftTargetOptions) GoString() string {
	return s.String()
}

// SetConnectionName sets the ConnectionName field's value.
func (s *UpsertRedshiftTargetOptions) SetConnectionName(v string) *UpsertRedshiftTargetOptions {
	s.ConnectionName = &v
	return s
}

// SetTableLocation sets the TableLocation field's value.
func (s *UpsertRedshiftTargetOptions) SetTableLocation(v string) *UpsertRedshiftTargetOptions {
	s.TableLocation = &v
	return s
}

// SetUpsertKeys sets the UpsertKeys field's value.
func (s *UpsertRedshiftTargetOptions) SetUpsertKeys(v []*string) *UpsertRedshiftTargetOptions {
	s.UpsertKeys = v
	return s
}

// Describes an Glue usage profile.
type UsageProfileDefinition struct {
	_ struct{} `type:"structure"`

	// The date and time when the usage profile was created.
	CreatedOn *time.Time `type:"timestamp"`

	// A description of the usage profile.
	Description *string `type:"string"`

	// The date and time when the usage profile was last modified.
	LastModifiedOn *time.Time `type:"timestamp"`

	// The name of the usage profile.
	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 UsageProfileDefinition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UsageProfileDefinition) GoString() string {
	return s.String()
}

// SetCreatedOn sets the CreatedOn field's value.
func (s *UsageProfileDefinition) SetCreatedOn(v time.Time) *UsageProfileDefinition {
	s.CreatedOn = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UsageProfileDefinition) SetDescription(v string) *UsageProfileDefinition {
	s.Description = &v
	return s
}

// SetLastModifiedOn sets the LastModifiedOn field's value.
func (s *UsageProfileDefinition) SetLastModifiedOn(v time.Time) *UsageProfileDefinition {
	s.LastModifiedOn = &v
	return s
}

// SetName sets the Name field's value.
func (s *UsageProfileDefinition) SetName(v string) *UsageProfileDefinition {
	s.Name = &v
	return s
}

// Represents the equivalent of a Hive user-defined function (UDF) definition.
type UserDefinedFunction struct {
	_ struct{} `type:"structure"`

	// The ID of the Data Catalog in which the function resides.
	CatalogId *string `min:"1" type:"string"`

	// The Java class that contains the function code.
	ClassName *string `min:"1" type:"string"`

	// The time at which the function was created.
	CreateTime *time.Time `type:"timestamp"`

	// The name of the catalog database that contains the function.
	DatabaseName *string `min:"1" type:"string"`

	// The name of the function.
	FunctionName *string `min:"1" type:"string"`

	// The owner of the function.
	OwnerName *string `min:"1" type:"string"`

	// The owner type.
	OwnerType *string `type:"string" enum:"PrincipalType"`

	// The resource URIs for the function.
	ResourceUris []*ResourceUri `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 UserDefinedFunction) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserDefinedFunction) GoString() string {
	return s.String()
}

// SetCatalogId sets the CatalogId field's value.
func (s *UserDefinedFunction) SetCatalogId(v string) *UserDefinedFunction {
	s.CatalogId = &v
	return s
}

// SetClassName sets the ClassName field's value.
func (s *UserDefinedFunction) SetClassName(v string) *UserDefinedFunction {
	s.ClassName = &v
	return s
}

// SetCreateTime sets the CreateTime field's value.
func (s *UserDefinedFunction) SetCreateTime(v time.Time) *UserDefinedFunction {
	s.CreateTime = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *UserDefinedFunction) SetDatabaseName(v string) *UserDefinedFunction {
	s.DatabaseName = &v
	return s
}

// SetFunctionName sets the FunctionName field's value.
func (s *UserDefinedFunction) SetFunctionName(v string) *UserDefinedFunction {
	s.FunctionName = &v
	return s
}

// SetOwnerName sets the OwnerName field's value.
func (s *UserDefinedFunction) SetOwnerName(v string) *UserDefinedFunction {
	s.OwnerName = &v
	return s
}

// SetOwnerType sets the OwnerType field's value.
func (s *UserDefinedFunction) SetOwnerType(v string) *UserDefinedFunction {
	s.OwnerType = &v
	return s
}

// SetResourceUris sets the ResourceUris field's value.
func (s *UserDefinedFunction) SetResourceUris(v []*ResourceUri) *UserDefinedFunction {
	s.ResourceUris = v
	return s
}

// A structure used to create or update a user-defined function.
type UserDefinedFunctionInput struct {
	_ struct{} `type:"structure"`

	// The Java class that contains the function code.
	ClassName *string `min:"1" type:"string"`

	// The name of the function.
	FunctionName *string `min:"1" type:"string"`

	// The owner of the function.
	OwnerName *string `min:"1" type:"string"`

	// The owner type.
	OwnerType *string `type:"string" enum:"PrincipalType"`

	// The resource URIs for the function.
	ResourceUris []*ResourceUri `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 UserDefinedFunctionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserDefinedFunctionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UserDefinedFunctionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UserDefinedFunctionInput"}
	if s.ClassName != nil && len(*s.ClassName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClassName", 1))
	}
	if s.FunctionName != nil && len(*s.FunctionName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FunctionName", 1))
	}
	if s.OwnerName != nil && len(*s.OwnerName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("OwnerName", 1))
	}
	if s.ResourceUris != nil {
		for i, v := range s.ResourceUris {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ResourceUris", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClassName sets the ClassName field's value.
func (s *UserDefinedFunctionInput) SetClassName(v string) *UserDefinedFunctionInput {
	s.ClassName = &v
	return s
}

// SetFunctionName sets the FunctionName field's value.
func (s *UserDefinedFunctionInput) SetFunctionName(v string) *UserDefinedFunctionInput {
	s.FunctionName = &v
	return s
}

// SetOwnerName sets the OwnerName field's value.
func (s *UserDefinedFunctionInput) SetOwnerName(v string) *UserDefinedFunctionInput {
	s.OwnerName = &v
	return s
}

// SetOwnerType sets the OwnerType field's value.
func (s *UserDefinedFunctionInput) SetOwnerType(v string) *UserDefinedFunctionInput {
	s.OwnerType = &v
	return s
}

// SetResourceUris sets the ResourceUris field's value.
func (s *UserDefinedFunctionInput) SetResourceUris(v []*ResourceUri) *UserDefinedFunctionInput {
	s.ResourceUris = v
	return s
}

// A value could not be validated.
type ValidationException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ValidationException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ValidationException) GoString() string {
	return s.String()
}

func newErrorValidationException(v protocol.ResponseMetadata) error {
	return &ValidationException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ValidationException) Code() string {
	return "ValidationException"
}

// Message returns the exception's message.
func (s *ValidationException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ValidationException) OrigErr() error {
	return nil
}

func (s *ValidationException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ValidationException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ValidationException) RequestID() string {
	return s.RespMetadata.RequestID
}

// There was a version conflict.
type VersionMismatchException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	// A message describing the problem.
	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VersionMismatchException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s VersionMismatchException) GoString() string {
	return s.String()
}

func newErrorVersionMismatchException(v protocol.ResponseMetadata) error {
	return &VersionMismatchException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *VersionMismatchException) Code() string {
	return "VersionMismatchException"
}

// Message returns the exception's message.
func (s *VersionMismatchException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *VersionMismatchException) OrigErr() error {
	return nil
}

func (s *VersionMismatchException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *VersionMismatchException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *VersionMismatchException) RequestID() string {
	return s.RespMetadata.RequestID
}

// A structure containing details for representations.
type ViewDefinition struct {
	_ struct{} `type:"structure"`

	// The definer of a view in SQL.
	Definer *string `min:"20" type:"string"`

	// You can set this flag as true to instruct the engine not to push user-provided
	// operations into the logical plan of the view during query planning. However,
	// setting this flag does not guarantee that the engine will comply. Refer to
	// the engine's documentation to understand the guarantees provided, if any.
	IsProtected *bool `type:"boolean"`

	// A list of representations.
	Representations []*ViewRepresentation `min:"1" type:"list"`

	// A list of table Amazon Resource Names (ARNs).
	SubObjects []*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 ViewDefinition) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ViewDefinition) GoString() string {
	return s.String()
}

// SetDefiner sets the Definer field's value.
func (s *ViewDefinition) SetDefiner(v string) *ViewDefinition {
	s.Definer = &v
	return s
}

// SetIsProtected sets the IsProtected field's value.
func (s *ViewDefinition) SetIsProtected(v bool) *ViewDefinition {
	s.IsProtected = &v
	return s
}

// SetRepresentations sets the Representations field's value.
func (s *ViewDefinition) SetRepresentations(v []*ViewRepresentation) *ViewDefinition {
	s.Representations = v
	return s
}

// SetSubObjects sets the SubObjects field's value.
func (s *ViewDefinition) SetSubObjects(v []*string) *ViewDefinition {
	s.SubObjects = v
	return s
}

// A structure containing details for creating or updating an Glue view.
type ViewDefinitionInput_ struct {
	_ struct{} `type:"structure"`

	// The definer of a view in SQL.
	Definer *string `min:"20" type:"string"`

	// You can set this flag as true to instruct the engine not to push user-provided
	// operations into the logical plan of the view during query planning. However,
	// setting this flag does not guarantee that the engine will comply. Refer to
	// the engine's documentation to understand the guarantees provided, if any.
	IsProtected *bool `type:"boolean"`

	// A list of structures that contains the dialect of the view, and the query
	// that defines the view.
	Representations []*ViewRepresentationInput_ `min:"1" type:"list"`

	// A list of base table ARNs that make up the view.
	SubObjects []*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 ViewDefinitionInput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ViewDefinitionInput_) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ViewDefinitionInput_) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ViewDefinitionInput_"}
	if s.Definer != nil && len(*s.Definer) < 20 {
		invalidParams.Add(request.NewErrParamMinLen("Definer", 20))
	}
	if s.Representations != nil && len(s.Representations) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Representations", 1))
	}
	if s.Representations != nil {
		for i, v := range s.Representations {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Representations", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDefiner sets the Definer field's value.
func (s *ViewDefinitionInput_) SetDefiner(v string) *ViewDefinitionInput_ {
	s.Definer = &v
	return s
}

// SetIsProtected sets the IsProtected field's value.
func (s *ViewDefinitionInput_) SetIsProtected(v bool) *ViewDefinitionInput_ {
	s.IsProtected = &v
	return s
}

// SetRepresentations sets the Representations field's value.
func (s *ViewDefinitionInput_) SetRepresentations(v []*ViewRepresentationInput_) *ViewDefinitionInput_ {
	s.Representations = v
	return s
}

// SetSubObjects sets the SubObjects field's value.
func (s *ViewDefinitionInput_) SetSubObjects(v []*string) *ViewDefinitionInput_ {
	s.SubObjects = v
	return s
}

// A structure that contains the dialect of the view, and the query that defines
// the view.
type ViewRepresentation struct {
	_ struct{} `type:"structure"`

	// The dialect of the query engine.
	Dialect *string `type:"string" enum:"ViewDialect"`

	// The version of the dialect of the query engine. For example, 3.0.0.
	DialectVersion *string `min:"1" type:"string"`

	// Dialects marked as stale are no longer valid and must be updated before they
	// can be queried in their respective query engines.
	IsStale *bool `type:"boolean"`

	// The name of the connection to be used to validate the specific representation
	// of the view.
	ValidationConnection *string `min:"1" type:"string"`

	// The expanded SQL for the view. This SQL is used by engines while processing
	// a query on a view. Engines may perform operations during view creation to
	// transform ViewOriginalText to ViewExpandedText. For example:
	//
	//    * Fully qualified identifiers: SELECT * from table1 -> SELECT * from db1.table1
	ViewExpandedText *string `type:"string"`

	// The SELECT query provided by the customer during CREATE VIEW DDL. This SQL
	// is not used during a query on a view (ViewExpandedText is used instead).
	// ViewOriginalText is used for cases like SHOW CREATE VIEW where users want
	// to see the original DDL command that created the view.
	ViewOriginalText *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 ViewRepresentation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ViewRepresentation) GoString() string {
	return s.String()
}

// SetDialect sets the Dialect field's value.
func (s *ViewRepresentation) SetDialect(v string) *ViewRepresentation {
	s.Dialect = &v
	return s
}

// SetDialectVersion sets the DialectVersion field's value.
func (s *ViewRepresentation) SetDialectVersion(v string) *ViewRepresentation {
	s.DialectVersion = &v
	return s
}

// SetIsStale sets the IsStale field's value.
func (s *ViewRepresentation) SetIsStale(v bool) *ViewRepresentation {
	s.IsStale = &v
	return s
}

// SetValidationConnection sets the ValidationConnection field's value.
func (s *ViewRepresentation) SetValidationConnection(v string) *ViewRepresentation {
	s.ValidationConnection = &v
	return s
}

// SetViewExpandedText sets the ViewExpandedText field's value.
func (s *ViewRepresentation) SetViewExpandedText(v string) *ViewRepresentation {
	s.ViewExpandedText = &v
	return s
}

// SetViewOriginalText sets the ViewOriginalText field's value.
func (s *ViewRepresentation) SetViewOriginalText(v string) *ViewRepresentation {
	s.ViewOriginalText = &v
	return s
}

// A structure containing details of a representation to update or create a
// Lake Formation view.
type ViewRepresentationInput_ struct {
	_ struct{} `type:"structure"`

	// A parameter that specifies the engine type of a specific representation.
	Dialect *string `type:"string" enum:"ViewDialect"`

	// A parameter that specifies the version of the engine of a specific representation.
	DialectVersion *string `min:"1" type:"string"`

	// The name of the connection to be used to validate the specific representation
	// of the view.
	ValidationConnection *string `min:"1" type:"string"`

	// A string that represents the SQL query that describes the view with expanded
	// resource ARNs
	ViewExpandedText *string `type:"string"`

	// A string that represents the original SQL query that describes the view.
	ViewOriginalText *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 ViewRepresentationInput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ViewRepresentationInput_) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ViewRepresentationInput_) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ViewRepresentationInput_"}
	if s.DialectVersion != nil && len(*s.DialectVersion) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DialectVersion", 1))
	}
	if s.ValidationConnection != nil && len(*s.ValidationConnection) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ValidationConnection", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDialect sets the Dialect field's value.
func (s *ViewRepresentationInput_) SetDialect(v string) *ViewRepresentationInput_ {
	s.Dialect = &v
	return s
}

// SetDialectVersion sets the DialectVersion field's value.
func (s *ViewRepresentationInput_) SetDialectVersion(v string) *ViewRepresentationInput_ {
	s.DialectVersion = &v
	return s
}

// SetValidationConnection sets the ValidationConnection field's value.
func (s *ViewRepresentationInput_) SetValidationConnection(v string) *ViewRepresentationInput_ {
	s.ValidationConnection = &v
	return s
}

// SetViewExpandedText sets the ViewExpandedText field's value.
func (s *ViewRepresentationInput_) SetViewExpandedText(v string) *ViewRepresentationInput_ {
	s.ViewExpandedText = &v
	return s
}

// SetViewOriginalText sets the ViewOriginalText field's value.
func (s *ViewRepresentationInput_) SetViewOriginalText(v string) *ViewRepresentationInput_ {
	s.ViewOriginalText = &v
	return s
}

// A workflow is a collection of multiple dependent Glue jobs and crawlers that
// are run to complete a complex ETL task. A workflow manages the execution
// and monitoring of all its jobs and crawlers.
type Workflow struct {
	_ struct{} `type:"structure"`

	// This structure indicates the details of the blueprint that this particular
	// workflow is created from.
	BlueprintDetails *BlueprintDetails `type:"structure"`

	// The date and time when the workflow was created.
	CreatedOn *time.Time `type:"timestamp"`

	// A collection of properties to be used as part of each execution of the workflow.
	// The run properties are made available to each job in the workflow. A job
	// can modify the properties for the next jobs in the flow.
	DefaultRunProperties map[string]*string `type:"map"`

	// A description of the workflow.
	Description *string `type:"string"`

	// The graph representing all the Glue components that belong to the workflow
	// as nodes and directed connections between them as edges.
	Graph *WorkflowGraph `type:"structure"`

	// The date and time when the workflow was last modified.
	LastModifiedOn *time.Time `type:"timestamp"`

	// The information about the last execution of the workflow.
	LastRun *WorkflowRun `type:"structure"`

	// You can use this parameter to prevent unwanted multiple updates to data,
	// to control costs, or in some cases, to prevent exceeding the maximum number
	// of concurrent runs of any of the component jobs. If you leave this parameter
	// blank, there is no limit to the number of concurrent workflow runs.
	MaxConcurrentRuns *int64 `type:"integer"`

	// The name of the workflow.
	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 Workflow) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Workflow) GoString() string {
	return s.String()
}

// SetBlueprintDetails sets the BlueprintDetails field's value.
func (s *Workflow) SetBlueprintDetails(v *BlueprintDetails) *Workflow {
	s.BlueprintDetails = v
	return s
}

// SetCreatedOn sets the CreatedOn field's value.
func (s *Workflow) SetCreatedOn(v time.Time) *Workflow {
	s.CreatedOn = &v
	return s
}

// SetDefaultRunProperties sets the DefaultRunProperties field's value.
func (s *Workflow) SetDefaultRunProperties(v map[string]*string) *Workflow {
	s.DefaultRunProperties = v
	return s
}

// SetDescription sets the Description field's value.
func (s *Workflow) SetDescription(v string) *Workflow {
	s.Description = &v
	return s
}

// SetGraph sets the Graph field's value.
func (s *Workflow) SetGraph(v *WorkflowGraph) *Workflow {
	s.Graph = v
	return s
}

// SetLastModifiedOn sets the LastModifiedOn field's value.
func (s *Workflow) SetLastModifiedOn(v time.Time) *Workflow {
	s.LastModifiedOn = &v
	return s
}

// SetLastRun sets the LastRun field's value.
func (s *Workflow) SetLastRun(v *WorkflowRun) *Workflow {
	s.LastRun = v
	return s
}

// SetMaxConcurrentRuns sets the MaxConcurrentRuns field's value.
func (s *Workflow) SetMaxConcurrentRuns(v int64) *Workflow {
	s.MaxConcurrentRuns = &v
	return s
}

// SetName sets the Name field's value.
func (s *Workflow) SetName(v string) *Workflow {
	s.Name = &v
	return s
}

// A workflow graph represents the complete workflow containing all the Glue
// components present in the workflow and all the directed connections between
// them.
type WorkflowGraph struct {
	_ struct{} `type:"structure"`

	// A list of all the directed connections between the nodes belonging to the
	// workflow.
	Edges []*Edge `type:"list"`

	// A list of the the Glue components belong to the workflow represented as nodes.
	Nodes []*Node `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 WorkflowGraph) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WorkflowGraph) GoString() string {
	return s.String()
}

// SetEdges sets the Edges field's value.
func (s *WorkflowGraph) SetEdges(v []*Edge) *WorkflowGraph {
	s.Edges = v
	return s
}

// SetNodes sets the Nodes field's value.
func (s *WorkflowGraph) SetNodes(v []*Node) *WorkflowGraph {
	s.Nodes = v
	return s
}

// A workflow run is an execution of a workflow providing all the runtime information.
type WorkflowRun struct {
	_ struct{} `type:"structure"`

	// The date and time when the workflow run completed.
	CompletedOn *time.Time `type:"timestamp"`

	// This error message describes any error that may have occurred in starting
	// the workflow run. Currently the only error message is "Concurrent runs exceeded
	// for workflow: foo."
	ErrorMessage *string `type:"string"`

	// The graph representing all the Glue components that belong to the workflow
	// as nodes and directed connections between them as edges.
	Graph *WorkflowGraph `type:"structure"`

	// Name of the workflow that was run.
	Name *string `min:"1" type:"string"`

	// The ID of the previous workflow run.
	PreviousRunId *string `min:"1" type:"string"`

	// The date and time when the workflow run was started.
	StartedOn *time.Time `type:"timestamp"`

	// The batch condition that started the workflow run.
	StartingEventBatchCondition *StartingEventBatchCondition `type:"structure"`

	// The statistics of the run.
	Statistics *WorkflowRunStatistics `type:"structure"`

	// The status of the workflow run.
	Status *string `type:"string" enum:"WorkflowRunStatus"`

	// The ID of this workflow run.
	WorkflowRunId *string `min:"1" type:"string"`

	// The workflow run properties which were set during the run.
	WorkflowRunProperties 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 WorkflowRun) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WorkflowRun) GoString() string {
	return s.String()
}

// SetCompletedOn sets the CompletedOn field's value.
func (s *WorkflowRun) SetCompletedOn(v time.Time) *WorkflowRun {
	s.CompletedOn = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *WorkflowRun) SetErrorMessage(v string) *WorkflowRun {
	s.ErrorMessage = &v
	return s
}

// SetGraph sets the Graph field's value.
func (s *WorkflowRun) SetGraph(v *WorkflowGraph) *WorkflowRun {
	s.Graph = v
	return s
}

// SetName sets the Name field's value.
func (s *WorkflowRun) SetName(v string) *WorkflowRun {
	s.Name = &v
	return s
}

// SetPreviousRunId sets the PreviousRunId field's value.
func (s *WorkflowRun) SetPreviousRunId(v string) *WorkflowRun {
	s.PreviousRunId = &v
	return s
}

// SetStartedOn sets the StartedOn field's value.
func (s *WorkflowRun) SetStartedOn(v time.Time) *WorkflowRun {
	s.StartedOn = &v
	return s
}

// SetStartingEventBatchCondition sets the StartingEventBatchCondition field's value.
func (s *WorkflowRun) SetStartingEventBatchCondition(v *StartingEventBatchCondition) *WorkflowRun {
	s.StartingEventBatchCondition = v
	return s
}

// SetStatistics sets the Statistics field's value.
func (s *WorkflowRun) SetStatistics(v *WorkflowRunStatistics) *WorkflowRun {
	s.Statistics = v
	return s
}

// SetStatus sets the Status field's value.
func (s *WorkflowRun) SetStatus(v string) *WorkflowRun {
	s.Status = &v
	return s
}

// SetWorkflowRunId sets the WorkflowRunId field's value.
func (s *WorkflowRun) SetWorkflowRunId(v string) *WorkflowRun {
	s.WorkflowRunId = &v
	return s
}

// SetWorkflowRunProperties sets the WorkflowRunProperties field's value.
func (s *WorkflowRun) SetWorkflowRunProperties(v map[string]*string) *WorkflowRun {
	s.WorkflowRunProperties = v
	return s
}

// Workflow run statistics provides statistics about the workflow run.
type WorkflowRunStatistics struct {
	_ struct{} `type:"structure"`

	// Indicates the count of job runs in the ERROR state in the workflow run.
	ErroredActions *int64 `type:"integer"`

	// Total number of Actions that have failed.
	FailedActions *int64 `type:"integer"`

	// Total number Actions in running state.
	RunningActions *int64 `type:"integer"`

	// Total number of Actions that have stopped.
	StoppedActions *int64 `type:"integer"`

	// Total number of Actions that have succeeded.
	SucceededActions *int64 `type:"integer"`

	// Total number of Actions that timed out.
	TimeoutActions *int64 `type:"integer"`

	// Total number of Actions in the workflow run.
	TotalActions *int64 `type:"integer"`

	// Indicates the count of job runs in WAITING state in the workflow run.
	WaitingActions *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 WorkflowRunStatistics) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s WorkflowRunStatistics) GoString() string {
	return s.String()
}

// SetErroredActions sets the ErroredActions field's value.
func (s *WorkflowRunStatistics) SetErroredActions(v int64) *WorkflowRunStatistics {
	s.ErroredActions = &v
	return s
}

// SetFailedActions sets the FailedActions field's value.
func (s *WorkflowRunStatistics) SetFailedActions(v int64) *WorkflowRunStatistics {
	s.FailedActions = &v
	return s
}

// SetRunningActions sets the RunningActions field's value.
func (s *WorkflowRunStatistics) SetRunningActions(v int64) *WorkflowRunStatistics {
	s.RunningActions = &v
	return s
}

// SetStoppedActions sets the StoppedActions field's value.
func (s *WorkflowRunStatistics) SetStoppedActions(v int64) *WorkflowRunStatistics {
	s.StoppedActions = &v
	return s
}

// SetSucceededActions sets the SucceededActions field's value.
func (s *WorkflowRunStatistics) SetSucceededActions(v int64) *WorkflowRunStatistics {
	s.SucceededActions = &v
	return s
}

// SetTimeoutActions sets the TimeoutActions field's value.
func (s *WorkflowRunStatistics) SetTimeoutActions(v int64) *WorkflowRunStatistics {
	s.TimeoutActions = &v
	return s
}

// SetTotalActions sets the TotalActions field's value.
func (s *WorkflowRunStatistics) SetTotalActions(v int64) *WorkflowRunStatistics {
	s.TotalActions = &v
	return s
}

// SetWaitingActions sets the WaitingActions field's value.
func (s *WorkflowRunStatistics) SetWaitingActions(v int64) *WorkflowRunStatistics {
	s.WaitingActions = &v
	return s
}

// A classifier for XML content.
type XMLClassifier struct {
	_ struct{} `type:"structure"`

	// An identifier of the data format that the classifier matches.
	//
	// Classification is a required field
	Classification *string `type:"string" required:"true"`

	// The time that this classifier was registered.
	CreationTime *time.Time `type:"timestamp"`

	// The time that this classifier was last updated.
	LastUpdated *time.Time `type:"timestamp"`

	// The name of the classifier.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The XML tag designating the element that contains each record in an XML document
	// being parsed. This can't identify a self-closing element (closed by />).
	// An empty row element that contains only attributes can be parsed as long
	// as it ends with a closing tag (for example, <row item_a="A" item_b="B"></row>
	// is okay, but <row item_a="A" item_b="B" /> is not).
	RowTag *string `type:"string"`

	// The version of this classifier.
	Version *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 XMLClassifier) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s XMLClassifier) GoString() string {
	return s.String()
}

// SetClassification sets the Classification field's value.
func (s *XMLClassifier) SetClassification(v string) *XMLClassifier {
	s.Classification = &v
	return s
}

// SetCreationTime sets the CreationTime field's value.
func (s *XMLClassifier) SetCreationTime(v time.Time) *XMLClassifier {
	s.CreationTime = &v
	return s
}

// SetLastUpdated sets the LastUpdated field's value.
func (s *XMLClassifier) SetLastUpdated(v time.Time) *XMLClassifier {
	s.LastUpdated = &v
	return s
}

// SetName sets the Name field's value.
func (s *XMLClassifier) SetName(v string) *XMLClassifier {
	s.Name = &v
	return s
}

// SetRowTag sets the RowTag field's value.
func (s *XMLClassifier) SetRowTag(v string) *XMLClassifier {
	s.RowTag = &v
	return s
}

// SetVersion sets the Version field's value.
func (s *XMLClassifier) SetVersion(v int64) *XMLClassifier {
	s.Version = &v
	return s
}

const (
	// AdditionalOptionKeysPerformanceTuningCaching is a AdditionalOptionKeys enum value
	AdditionalOptionKeysPerformanceTuningCaching = "performanceTuning.caching"

	// AdditionalOptionKeysObservationsScope is a AdditionalOptionKeys enum value
	AdditionalOptionKeysObservationsScope = "observations.scope"
)

// AdditionalOptionKeys_Values returns all elements of the AdditionalOptionKeys enum
func AdditionalOptionKeys_Values() []string {
	return []string{
		AdditionalOptionKeysPerformanceTuningCaching,
		AdditionalOptionKeysObservationsScope,
	}
}

const (
	// AggFunctionAvg is a AggFunction enum value
	AggFunctionAvg = "avg"

	// AggFunctionCountDistinct is a AggFunction enum value
	AggFunctionCountDistinct = "countDistinct"

	// AggFunctionCount is a AggFunction enum value
	AggFunctionCount = "count"

	// AggFunctionFirst is a AggFunction enum value
	AggFunctionFirst = "first"

	// AggFunctionLast is a AggFunction enum value
	AggFunctionLast = "last"

	// AggFunctionKurtosis is a AggFunction enum value
	AggFunctionKurtosis = "kurtosis"

	// AggFunctionMax is a AggFunction enum value
	AggFunctionMax = "max"

	// AggFunctionMin is a AggFunction enum value
	AggFunctionMin = "min"

	// AggFunctionSkewness is a AggFunction enum value
	AggFunctionSkewness = "skewness"

	// AggFunctionStddevSamp is a AggFunction enum value
	AggFunctionStddevSamp = "stddev_samp"

	// AggFunctionStddevPop is a AggFunction enum value
	AggFunctionStddevPop = "stddev_pop"

	// AggFunctionSum is a AggFunction enum value
	AggFunctionSum = "sum"

	// AggFunctionSumDistinct is a AggFunction enum value
	AggFunctionSumDistinct = "sumDistinct"

	// AggFunctionVarSamp is a AggFunction enum value
	AggFunctionVarSamp = "var_samp"

	// AggFunctionVarPop is a AggFunction enum value
	AggFunctionVarPop = "var_pop"
)

// AggFunction_Values returns all elements of the AggFunction enum
func AggFunction_Values() []string {
	return []string{
		AggFunctionAvg,
		AggFunctionCountDistinct,
		AggFunctionCount,
		AggFunctionFirst,
		AggFunctionLast,
		AggFunctionKurtosis,
		AggFunctionMax,
		AggFunctionMin,
		AggFunctionSkewness,
		AggFunctionStddevSamp,
		AggFunctionStddevPop,
		AggFunctionSum,
		AggFunctionSumDistinct,
		AggFunctionVarSamp,
		AggFunctionVarPop,
	}
}

const (
	// AuthenticationTypeBasic is a AuthenticationType enum value
	AuthenticationTypeBasic = "BASIC"

	// AuthenticationTypeOauth2 is a AuthenticationType enum value
	AuthenticationTypeOauth2 = "OAUTH2"

	// AuthenticationTypeCustom is a AuthenticationType enum value
	AuthenticationTypeCustom = "CUSTOM"
)

// AuthenticationType_Values returns all elements of the AuthenticationType enum
func AuthenticationType_Values() []string {
	return []string{
		AuthenticationTypeBasic,
		AuthenticationTypeOauth2,
		AuthenticationTypeCustom,
	}
}

const (
	// BackfillErrorCodeEncryptedPartitionError is a BackfillErrorCode enum value
	BackfillErrorCodeEncryptedPartitionError = "ENCRYPTED_PARTITION_ERROR"

	// BackfillErrorCodeInternalError is a BackfillErrorCode enum value
	BackfillErrorCodeInternalError = "INTERNAL_ERROR"

	// BackfillErrorCodeInvalidPartitionTypeDataError is a BackfillErrorCode enum value
	BackfillErrorCodeInvalidPartitionTypeDataError = "INVALID_PARTITION_TYPE_DATA_ERROR"

	// BackfillErrorCodeMissingPartitionValueError is a BackfillErrorCode enum value
	BackfillErrorCodeMissingPartitionValueError = "MISSING_PARTITION_VALUE_ERROR"

	// BackfillErrorCodeUnsupportedPartitionCharacterError is a BackfillErrorCode enum value
	BackfillErrorCodeUnsupportedPartitionCharacterError = "UNSUPPORTED_PARTITION_CHARACTER_ERROR"
)

// BackfillErrorCode_Values returns all elements of the BackfillErrorCode enum
func BackfillErrorCode_Values() []string {
	return []string{
		BackfillErrorCodeEncryptedPartitionError,
		BackfillErrorCodeInternalError,
		BackfillErrorCodeInvalidPartitionTypeDataError,
		BackfillErrorCodeMissingPartitionValueError,
		BackfillErrorCodeUnsupportedPartitionCharacterError,
	}
}

const (
	// BlueprintRunStateRunning is a BlueprintRunState enum value
	BlueprintRunStateRunning = "RUNNING"

	// BlueprintRunStateSucceeded is a BlueprintRunState enum value
	BlueprintRunStateSucceeded = "SUCCEEDED"

	// BlueprintRunStateFailed is a BlueprintRunState enum value
	BlueprintRunStateFailed = "FAILED"

	// BlueprintRunStateRollingBack is a BlueprintRunState enum value
	BlueprintRunStateRollingBack = "ROLLING_BACK"
)

// BlueprintRunState_Values returns all elements of the BlueprintRunState enum
func BlueprintRunState_Values() []string {
	return []string{
		BlueprintRunStateRunning,
		BlueprintRunStateSucceeded,
		BlueprintRunStateFailed,
		BlueprintRunStateRollingBack,
	}
}

const (
	// BlueprintStatusCreating is a BlueprintStatus enum value
	BlueprintStatusCreating = "CREATING"

	// BlueprintStatusActive is a BlueprintStatus enum value
	BlueprintStatusActive = "ACTIVE"

	// BlueprintStatusUpdating is a BlueprintStatus enum value
	BlueprintStatusUpdating = "UPDATING"

	// BlueprintStatusFailed is a BlueprintStatus enum value
	BlueprintStatusFailed = "FAILED"
)

// BlueprintStatus_Values returns all elements of the BlueprintStatus enum
func BlueprintStatus_Values() []string {
	return []string{
		BlueprintStatusCreating,
		BlueprintStatusActive,
		BlueprintStatusUpdating,
		BlueprintStatusFailed,
	}
}

const (
	// CatalogEncryptionModeDisabled is a CatalogEncryptionMode enum value
	CatalogEncryptionModeDisabled = "DISABLED"

	// CatalogEncryptionModeSseKms is a CatalogEncryptionMode enum value
	CatalogEncryptionModeSseKms = "SSE-KMS"

	// CatalogEncryptionModeSseKmsWithServiceRole is a CatalogEncryptionMode enum value
	CatalogEncryptionModeSseKmsWithServiceRole = "SSE-KMS-WITH-SERVICE-ROLE"
)

// CatalogEncryptionMode_Values returns all elements of the CatalogEncryptionMode enum
func CatalogEncryptionMode_Values() []string {
	return []string{
		CatalogEncryptionModeDisabled,
		CatalogEncryptionModeSseKms,
		CatalogEncryptionModeSseKmsWithServiceRole,
	}
}

const (
	// CloudWatchEncryptionModeDisabled is a CloudWatchEncryptionMode enum value
	CloudWatchEncryptionModeDisabled = "DISABLED"

	// CloudWatchEncryptionModeSseKms is a CloudWatchEncryptionMode enum value
	CloudWatchEncryptionModeSseKms = "SSE-KMS"
)

// CloudWatchEncryptionMode_Values returns all elements of the CloudWatchEncryptionMode enum
func CloudWatchEncryptionMode_Values() []string {
	return []string{
		CloudWatchEncryptionModeDisabled,
		CloudWatchEncryptionModeSseKms,
	}
}

const (
	// ColumnStatisticsStateStarting is a ColumnStatisticsState enum value
	ColumnStatisticsStateStarting = "STARTING"

	// ColumnStatisticsStateRunning is a ColumnStatisticsState enum value
	ColumnStatisticsStateRunning = "RUNNING"

	// ColumnStatisticsStateSucceeded is a ColumnStatisticsState enum value
	ColumnStatisticsStateSucceeded = "SUCCEEDED"

	// ColumnStatisticsStateFailed is a ColumnStatisticsState enum value
	ColumnStatisticsStateFailed = "FAILED"

	// ColumnStatisticsStateStopped is a ColumnStatisticsState enum value
	ColumnStatisticsStateStopped = "STOPPED"
)

// ColumnStatisticsState_Values returns all elements of the ColumnStatisticsState enum
func ColumnStatisticsState_Values() []string {
	return []string{
		ColumnStatisticsStateStarting,
		ColumnStatisticsStateRunning,
		ColumnStatisticsStateSucceeded,
		ColumnStatisticsStateFailed,
		ColumnStatisticsStateStopped,
	}
}

const (
	// ColumnStatisticsTypeBoolean is a ColumnStatisticsType enum value
	ColumnStatisticsTypeBoolean = "BOOLEAN"

	// ColumnStatisticsTypeDate is a ColumnStatisticsType enum value
	ColumnStatisticsTypeDate = "DATE"

	// ColumnStatisticsTypeDecimal is a ColumnStatisticsType enum value
	ColumnStatisticsTypeDecimal = "DECIMAL"

	// ColumnStatisticsTypeDouble is a ColumnStatisticsType enum value
	ColumnStatisticsTypeDouble = "DOUBLE"

	// ColumnStatisticsTypeLong is a ColumnStatisticsType enum value
	ColumnStatisticsTypeLong = "LONG"

	// ColumnStatisticsTypeString is a ColumnStatisticsType enum value
	ColumnStatisticsTypeString = "STRING"

	// ColumnStatisticsTypeBinary is a ColumnStatisticsType enum value
	ColumnStatisticsTypeBinary = "BINARY"
)

// ColumnStatisticsType_Values returns all elements of the ColumnStatisticsType enum
func ColumnStatisticsType_Values() []string {
	return []string{
		ColumnStatisticsTypeBoolean,
		ColumnStatisticsTypeDate,
		ColumnStatisticsTypeDecimal,
		ColumnStatisticsTypeDouble,
		ColumnStatisticsTypeLong,
		ColumnStatisticsTypeString,
		ColumnStatisticsTypeBinary,
	}
}

const (
	// ComparatorEquals is a Comparator enum value
	ComparatorEquals = "EQUALS"

	// ComparatorGreaterThan is a Comparator enum value
	ComparatorGreaterThan = "GREATER_THAN"

	// ComparatorLessThan is a Comparator enum value
	ComparatorLessThan = "LESS_THAN"

	// ComparatorGreaterThanEquals is a Comparator enum value
	ComparatorGreaterThanEquals = "GREATER_THAN_EQUALS"

	// ComparatorLessThanEquals is a Comparator enum value
	ComparatorLessThanEquals = "LESS_THAN_EQUALS"
)

// Comparator_Values returns all elements of the Comparator enum
func Comparator_Values() []string {
	return []string{
		ComparatorEquals,
		ComparatorGreaterThan,
		ComparatorLessThan,
		ComparatorGreaterThanEquals,
		ComparatorLessThanEquals,
	}
}

const (
	// CompatibilityNone is a Compatibility enum value
	CompatibilityNone = "NONE"

	// CompatibilityDisabled is a Compatibility enum value
	CompatibilityDisabled = "DISABLED"

	// CompatibilityBackward is a Compatibility enum value
	CompatibilityBackward = "BACKWARD"

	// CompatibilityBackwardAll is a Compatibility enum value
	CompatibilityBackwardAll = "BACKWARD_ALL"

	// CompatibilityForward is a Compatibility enum value
	CompatibilityForward = "FORWARD"

	// CompatibilityForwardAll is a Compatibility enum value
	CompatibilityForwardAll = "FORWARD_ALL"

	// CompatibilityFull is a Compatibility enum value
	CompatibilityFull = "FULL"

	// CompatibilityFullAll is a Compatibility enum value
	CompatibilityFullAll = "FULL_ALL"
)

// Compatibility_Values returns all elements of the Compatibility enum
func Compatibility_Values() []string {
	return []string{
		CompatibilityNone,
		CompatibilityDisabled,
		CompatibilityBackward,
		CompatibilityBackwardAll,
		CompatibilityForward,
		CompatibilityForwardAll,
		CompatibilityFull,
		CompatibilityFullAll,
	}
}

const (
	// CompressionTypeGzip is a CompressionType enum value
	CompressionTypeGzip = "gzip"

	// CompressionTypeBzip2 is a CompressionType enum value
	CompressionTypeBzip2 = "bzip2"
)

// CompressionType_Values returns all elements of the CompressionType enum
func CompressionType_Values() []string {
	return []string{
		CompressionTypeGzip,
		CompressionTypeBzip2,
	}
}

const (
	// ConnectionPropertyKeyHost is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyHost = "HOST"

	// ConnectionPropertyKeyPort is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyPort = "PORT"

	// ConnectionPropertyKeyUsername is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyUsername = "USERNAME"

	// ConnectionPropertyKeyPassword is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyPassword = "PASSWORD"

	// ConnectionPropertyKeyEncryptedPassword is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyEncryptedPassword = "ENCRYPTED_PASSWORD"

	// ConnectionPropertyKeyJdbcDriverJarUri is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyJdbcDriverJarUri = "JDBC_DRIVER_JAR_URI"

	// ConnectionPropertyKeyJdbcDriverClassName is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyJdbcDriverClassName = "JDBC_DRIVER_CLASS_NAME"

	// ConnectionPropertyKeyJdbcEngine is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyJdbcEngine = "JDBC_ENGINE"

	// ConnectionPropertyKeyJdbcEngineVersion is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyJdbcEngineVersion = "JDBC_ENGINE_VERSION"

	// ConnectionPropertyKeyConfigFiles is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyConfigFiles = "CONFIG_FILES"

	// ConnectionPropertyKeyInstanceId is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyInstanceId = "INSTANCE_ID"

	// ConnectionPropertyKeyJdbcConnectionUrl is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyJdbcConnectionUrl = "JDBC_CONNECTION_URL"

	// ConnectionPropertyKeyJdbcEnforceSsl is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyJdbcEnforceSsl = "JDBC_ENFORCE_SSL"

	// ConnectionPropertyKeyCustomJdbcCert is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyCustomJdbcCert = "CUSTOM_JDBC_CERT"

	// ConnectionPropertyKeySkipCustomJdbcCertValidation is a ConnectionPropertyKey enum value
	ConnectionPropertyKeySkipCustomJdbcCertValidation = "SKIP_CUSTOM_JDBC_CERT_VALIDATION"

	// ConnectionPropertyKeyCustomJdbcCertString is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyCustomJdbcCertString = "CUSTOM_JDBC_CERT_STRING"

	// ConnectionPropertyKeyConnectionUrl is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyConnectionUrl = "CONNECTION_URL"

	// ConnectionPropertyKeyKafkaBootstrapServers is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaBootstrapServers = "KAFKA_BOOTSTRAP_SERVERS"

	// ConnectionPropertyKeyKafkaSslEnabled is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaSslEnabled = "KAFKA_SSL_ENABLED"

	// ConnectionPropertyKeyKafkaCustomCert is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaCustomCert = "KAFKA_CUSTOM_CERT"

	// ConnectionPropertyKeyKafkaSkipCustomCertValidation is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaSkipCustomCertValidation = "KAFKA_SKIP_CUSTOM_CERT_VALIDATION"

	// ConnectionPropertyKeyKafkaClientKeystore is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaClientKeystore = "KAFKA_CLIENT_KEYSTORE"

	// ConnectionPropertyKeyKafkaClientKeystorePassword is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaClientKeystorePassword = "KAFKA_CLIENT_KEYSTORE_PASSWORD"

	// ConnectionPropertyKeyKafkaClientKeyPassword is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaClientKeyPassword = "KAFKA_CLIENT_KEY_PASSWORD"

	// ConnectionPropertyKeyEncryptedKafkaClientKeystorePassword is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyEncryptedKafkaClientKeystorePassword = "ENCRYPTED_KAFKA_CLIENT_KEYSTORE_PASSWORD"

	// ConnectionPropertyKeyEncryptedKafkaClientKeyPassword is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyEncryptedKafkaClientKeyPassword = "ENCRYPTED_KAFKA_CLIENT_KEY_PASSWORD"

	// ConnectionPropertyKeySecretId is a ConnectionPropertyKey enum value
	ConnectionPropertyKeySecretId = "SECRET_ID"

	// ConnectionPropertyKeyConnectorUrl is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyConnectorUrl = "CONNECTOR_URL"

	// ConnectionPropertyKeyConnectorType is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyConnectorType = "CONNECTOR_TYPE"

	// ConnectionPropertyKeyConnectorClassName is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyConnectorClassName = "CONNECTOR_CLASS_NAME"

	// ConnectionPropertyKeyKafkaSaslMechanism is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaSaslMechanism = "KAFKA_SASL_MECHANISM"

	// ConnectionPropertyKeyKafkaSaslPlainUsername is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaSaslPlainUsername = "KAFKA_SASL_PLAIN_USERNAME"

	// ConnectionPropertyKeyKafkaSaslPlainPassword is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaSaslPlainPassword = "KAFKA_SASL_PLAIN_PASSWORD"

	// ConnectionPropertyKeyEncryptedKafkaSaslPlainPassword is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyEncryptedKafkaSaslPlainPassword = "ENCRYPTED_KAFKA_SASL_PLAIN_PASSWORD"

	// ConnectionPropertyKeyKafkaSaslScramUsername is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaSaslScramUsername = "KAFKA_SASL_SCRAM_USERNAME"

	// ConnectionPropertyKeyKafkaSaslScramPassword is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaSaslScramPassword = "KAFKA_SASL_SCRAM_PASSWORD"

	// ConnectionPropertyKeyKafkaSaslScramSecretsArn is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaSaslScramSecretsArn = "KAFKA_SASL_SCRAM_SECRETS_ARN"

	// ConnectionPropertyKeyEncryptedKafkaSaslScramPassword is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyEncryptedKafkaSaslScramPassword = "ENCRYPTED_KAFKA_SASL_SCRAM_PASSWORD"

	// ConnectionPropertyKeyKafkaSaslGssapiKeytab is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaSaslGssapiKeytab = "KAFKA_SASL_GSSAPI_KEYTAB"

	// ConnectionPropertyKeyKafkaSaslGssapiKrb5Conf is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaSaslGssapiKrb5Conf = "KAFKA_SASL_GSSAPI_KRB5_CONF"

	// ConnectionPropertyKeyKafkaSaslGssapiService is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaSaslGssapiService = "KAFKA_SASL_GSSAPI_SERVICE"

	// ConnectionPropertyKeyKafkaSaslGssapiPrincipal is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyKafkaSaslGssapiPrincipal = "KAFKA_SASL_GSSAPI_PRINCIPAL"

	// ConnectionPropertyKeyRoleArn is a ConnectionPropertyKey enum value
	ConnectionPropertyKeyRoleArn = "ROLE_ARN"
)

// ConnectionPropertyKey_Values returns all elements of the ConnectionPropertyKey enum
func ConnectionPropertyKey_Values() []string {
	return []string{
		ConnectionPropertyKeyHost,
		ConnectionPropertyKeyPort,
		ConnectionPropertyKeyUsername,
		ConnectionPropertyKeyPassword,
		ConnectionPropertyKeyEncryptedPassword,
		ConnectionPropertyKeyJdbcDriverJarUri,
		ConnectionPropertyKeyJdbcDriverClassName,
		ConnectionPropertyKeyJdbcEngine,
		ConnectionPropertyKeyJdbcEngineVersion,
		ConnectionPropertyKeyConfigFiles,
		ConnectionPropertyKeyInstanceId,
		ConnectionPropertyKeyJdbcConnectionUrl,
		ConnectionPropertyKeyJdbcEnforceSsl,
		ConnectionPropertyKeyCustomJdbcCert,
		ConnectionPropertyKeySkipCustomJdbcCertValidation,
		ConnectionPropertyKeyCustomJdbcCertString,
		ConnectionPropertyKeyConnectionUrl,
		ConnectionPropertyKeyKafkaBootstrapServers,
		ConnectionPropertyKeyKafkaSslEnabled,
		ConnectionPropertyKeyKafkaCustomCert,
		ConnectionPropertyKeyKafkaSkipCustomCertValidation,
		ConnectionPropertyKeyKafkaClientKeystore,
		ConnectionPropertyKeyKafkaClientKeystorePassword,
		ConnectionPropertyKeyKafkaClientKeyPassword,
		ConnectionPropertyKeyEncryptedKafkaClientKeystorePassword,
		ConnectionPropertyKeyEncryptedKafkaClientKeyPassword,
		ConnectionPropertyKeySecretId,
		ConnectionPropertyKeyConnectorUrl,
		ConnectionPropertyKeyConnectorType,
		ConnectionPropertyKeyConnectorClassName,
		ConnectionPropertyKeyKafkaSaslMechanism,
		ConnectionPropertyKeyKafkaSaslPlainUsername,
		ConnectionPropertyKeyKafkaSaslPlainPassword,
		ConnectionPropertyKeyEncryptedKafkaSaslPlainPassword,
		ConnectionPropertyKeyKafkaSaslScramUsername,
		ConnectionPropertyKeyKafkaSaslScramPassword,
		ConnectionPropertyKeyKafkaSaslScramSecretsArn,
		ConnectionPropertyKeyEncryptedKafkaSaslScramPassword,
		ConnectionPropertyKeyKafkaSaslGssapiKeytab,
		ConnectionPropertyKeyKafkaSaslGssapiKrb5Conf,
		ConnectionPropertyKeyKafkaSaslGssapiService,
		ConnectionPropertyKeyKafkaSaslGssapiPrincipal,
		ConnectionPropertyKeyRoleArn,
	}
}

const (
	// ConnectionStatusReady is a ConnectionStatus enum value
	ConnectionStatusReady = "READY"

	// ConnectionStatusInProgress is a ConnectionStatus enum value
	ConnectionStatusInProgress = "IN_PROGRESS"

	// ConnectionStatusFailed is a ConnectionStatus enum value
	ConnectionStatusFailed = "FAILED"
)

// ConnectionStatus_Values returns all elements of the ConnectionStatus enum
func ConnectionStatus_Values() []string {
	return []string{
		ConnectionStatusReady,
		ConnectionStatusInProgress,
		ConnectionStatusFailed,
	}
}

const (
	// ConnectionTypeJdbc is a ConnectionType enum value
	ConnectionTypeJdbc = "JDBC"

	// ConnectionTypeSftp is a ConnectionType enum value
	ConnectionTypeSftp = "SFTP"

	// ConnectionTypeMongodb is a ConnectionType enum value
	ConnectionTypeMongodb = "MONGODB"

	// ConnectionTypeKafka is a ConnectionType enum value
	ConnectionTypeKafka = "KAFKA"

	// ConnectionTypeNetwork is a ConnectionType enum value
	ConnectionTypeNetwork = "NETWORK"

	// ConnectionTypeMarketplace is a ConnectionType enum value
	ConnectionTypeMarketplace = "MARKETPLACE"

	// ConnectionTypeCustom is a ConnectionType enum value
	ConnectionTypeCustom = "CUSTOM"

	// ConnectionTypeSalesforce is a ConnectionType enum value
	ConnectionTypeSalesforce = "SALESFORCE"
)

// ConnectionType_Values returns all elements of the ConnectionType enum
func ConnectionType_Values() []string {
	return []string{
		ConnectionTypeJdbc,
		ConnectionTypeSftp,
		ConnectionTypeMongodb,
		ConnectionTypeKafka,
		ConnectionTypeNetwork,
		ConnectionTypeMarketplace,
		ConnectionTypeCustom,
		ConnectionTypeSalesforce,
	}
}

const (
	// CrawlStateRunning is a CrawlState enum value
	CrawlStateRunning = "RUNNING"

	// CrawlStateCancelling is a CrawlState enum value
	CrawlStateCancelling = "CANCELLING"

	// CrawlStateCancelled is a CrawlState enum value
	CrawlStateCancelled = "CANCELLED"

	// CrawlStateSucceeded is a CrawlState enum value
	CrawlStateSucceeded = "SUCCEEDED"

	// CrawlStateFailed is a CrawlState enum value
	CrawlStateFailed = "FAILED"

	// CrawlStateError is a CrawlState enum value
	CrawlStateError = "ERROR"
)

// CrawlState_Values returns all elements of the CrawlState enum
func CrawlState_Values() []string {
	return []string{
		CrawlStateRunning,
		CrawlStateCancelling,
		CrawlStateCancelled,
		CrawlStateSucceeded,
		CrawlStateFailed,
		CrawlStateError,
	}
}

const (
	// CrawlerHistoryStateRunning is a CrawlerHistoryState enum value
	CrawlerHistoryStateRunning = "RUNNING"

	// CrawlerHistoryStateCompleted is a CrawlerHistoryState enum value
	CrawlerHistoryStateCompleted = "COMPLETED"

	// CrawlerHistoryStateFailed is a CrawlerHistoryState enum value
	CrawlerHistoryStateFailed = "FAILED"

	// CrawlerHistoryStateStopped is a CrawlerHistoryState enum value
	CrawlerHistoryStateStopped = "STOPPED"
)

// CrawlerHistoryState_Values returns all elements of the CrawlerHistoryState enum
func CrawlerHistoryState_Values() []string {
	return []string{
		CrawlerHistoryStateRunning,
		CrawlerHistoryStateCompleted,
		CrawlerHistoryStateFailed,
		CrawlerHistoryStateStopped,
	}
}

const (
	// CrawlerLineageSettingsEnable is a CrawlerLineageSettings enum value
	CrawlerLineageSettingsEnable = "ENABLE"

	// CrawlerLineageSettingsDisable is a CrawlerLineageSettings enum value
	CrawlerLineageSettingsDisable = "DISABLE"
)

// CrawlerLineageSettings_Values returns all elements of the CrawlerLineageSettings enum
func CrawlerLineageSettings_Values() []string {
	return []string{
		CrawlerLineageSettingsEnable,
		CrawlerLineageSettingsDisable,
	}
}

const (
	// CrawlerStateReady is a CrawlerState enum value
	CrawlerStateReady = "READY"

	// CrawlerStateRunning is a CrawlerState enum value
	CrawlerStateRunning = "RUNNING"

	// CrawlerStateStopping is a CrawlerState enum value
	CrawlerStateStopping = "STOPPING"
)

// CrawlerState_Values returns all elements of the CrawlerState enum
func CrawlerState_Values() []string {
	return []string{
		CrawlerStateReady,
		CrawlerStateRunning,
		CrawlerStateStopping,
	}
}

const (
	// CsvHeaderOptionUnknown is a CsvHeaderOption enum value
	CsvHeaderOptionUnknown = "UNKNOWN"

	// CsvHeaderOptionPresent is a CsvHeaderOption enum value
	CsvHeaderOptionPresent = "PRESENT"

	// CsvHeaderOptionAbsent is a CsvHeaderOption enum value
	CsvHeaderOptionAbsent = "ABSENT"
)

// CsvHeaderOption_Values returns all elements of the CsvHeaderOption enum
func CsvHeaderOption_Values() []string {
	return []string{
		CsvHeaderOptionUnknown,
		CsvHeaderOptionPresent,
		CsvHeaderOptionAbsent,
	}
}

const (
	// CsvSerdeOptionOpenCsvserDe is a CsvSerdeOption enum value
	CsvSerdeOptionOpenCsvserDe = "OpenCSVSerDe"

	// CsvSerdeOptionLazySimpleSerDe is a CsvSerdeOption enum value
	CsvSerdeOptionLazySimpleSerDe = "LazySimpleSerDe"

	// CsvSerdeOptionNone is a CsvSerdeOption enum value
	CsvSerdeOptionNone = "None"
)

// CsvSerdeOption_Values returns all elements of the CsvSerdeOption enum
func CsvSerdeOption_Values() []string {
	return []string{
		CsvSerdeOptionOpenCsvserDe,
		CsvSerdeOptionLazySimpleSerDe,
		CsvSerdeOptionNone,
	}
}

const (
	// DQCompositeRuleEvaluationMethodColumn is a DQCompositeRuleEvaluationMethod enum value
	DQCompositeRuleEvaluationMethodColumn = "COLUMN"

	// DQCompositeRuleEvaluationMethodRow is a DQCompositeRuleEvaluationMethod enum value
	DQCompositeRuleEvaluationMethodRow = "ROW"
)

// DQCompositeRuleEvaluationMethod_Values returns all elements of the DQCompositeRuleEvaluationMethod enum
func DQCompositeRuleEvaluationMethod_Values() []string {
	return []string{
		DQCompositeRuleEvaluationMethodColumn,
		DQCompositeRuleEvaluationMethodRow,
	}
}

const (
	// DQStopJobOnFailureTimingImmediate is a DQStopJobOnFailureTiming enum value
	DQStopJobOnFailureTimingImmediate = "Immediate"

	// DQStopJobOnFailureTimingAfterDataLoad is a DQStopJobOnFailureTiming enum value
	DQStopJobOnFailureTimingAfterDataLoad = "AfterDataLoad"
)

// DQStopJobOnFailureTiming_Values returns all elements of the DQStopJobOnFailureTiming enum
func DQStopJobOnFailureTiming_Values() []string {
	return []string{
		DQStopJobOnFailureTimingImmediate,
		DQStopJobOnFailureTimingAfterDataLoad,
	}
}

const (
	// DQTransformOutputPrimaryInput is a DQTransformOutput_ enum value
	DQTransformOutputPrimaryInput = "PrimaryInput"

	// DQTransformOutputEvaluationResults is a DQTransformOutput_ enum value
	DQTransformOutputEvaluationResults = "EvaluationResults"
)

// DQTransformOutput__Values returns all elements of the DQTransformOutput_ enum
func DQTransformOutput__Values() []string {
	return []string{
		DQTransformOutputPrimaryInput,
		DQTransformOutputEvaluationResults,
	}
}

const (
	// DataFormatAvro is a DataFormat enum value
	DataFormatAvro = "AVRO"

	// DataFormatJson is a DataFormat enum value
	DataFormatJson = "JSON"

	// DataFormatProtobuf is a DataFormat enum value
	DataFormatProtobuf = "PROTOBUF"
)

// DataFormat_Values returns all elements of the DataFormat enum
func DataFormat_Values() []string {
	return []string{
		DataFormatAvro,
		DataFormatJson,
		DataFormatProtobuf,
	}
}

const (
	// DataQualityRuleResultStatusPass is a DataQualityRuleResultStatus enum value
	DataQualityRuleResultStatusPass = "PASS"

	// DataQualityRuleResultStatusFail is a DataQualityRuleResultStatus enum value
	DataQualityRuleResultStatusFail = "FAIL"

	// DataQualityRuleResultStatusError is a DataQualityRuleResultStatus enum value
	DataQualityRuleResultStatusError = "ERROR"
)

// DataQualityRuleResultStatus_Values returns all elements of the DataQualityRuleResultStatus enum
func DataQualityRuleResultStatus_Values() []string {
	return []string{
		DataQualityRuleResultStatusPass,
		DataQualityRuleResultStatusFail,
		DataQualityRuleResultStatusError,
	}
}

const (
	// DeleteBehaviorLog is a DeleteBehavior enum value
	DeleteBehaviorLog = "LOG"

	// DeleteBehaviorDeleteFromDatabase is a DeleteBehavior enum value
	DeleteBehaviorDeleteFromDatabase = "DELETE_FROM_DATABASE"

	// DeleteBehaviorDeprecateInDatabase is a DeleteBehavior enum value
	DeleteBehaviorDeprecateInDatabase = "DEPRECATE_IN_DATABASE"
)

// DeleteBehavior_Values returns all elements of the DeleteBehavior enum
func DeleteBehavior_Values() []string {
	return []string{
		DeleteBehaviorLog,
		DeleteBehaviorDeleteFromDatabase,
		DeleteBehaviorDeprecateInDatabase,
	}
}

const (
	// DeltaTargetCompressionTypeUncompressed is a DeltaTargetCompressionType enum value
	DeltaTargetCompressionTypeUncompressed = "uncompressed"

	// DeltaTargetCompressionTypeSnappy is a DeltaTargetCompressionType enum value
	DeltaTargetCompressionTypeSnappy = "snappy"
)

// DeltaTargetCompressionType_Values returns all elements of the DeltaTargetCompressionType enum
func DeltaTargetCompressionType_Values() []string {
	return []string{
		DeltaTargetCompressionTypeUncompressed,
		DeltaTargetCompressionTypeSnappy,
	}
}

const (
	// EnableHybridValuesTrue is a EnableHybridValues enum value
	EnableHybridValuesTrue = "TRUE"

	// EnableHybridValuesFalse is a EnableHybridValues enum value
	EnableHybridValuesFalse = "FALSE"
)

// EnableHybridValues_Values returns all elements of the EnableHybridValues enum
func EnableHybridValues_Values() []string {
	return []string{
		EnableHybridValuesTrue,
		EnableHybridValuesFalse,
	}
}

const (
	// ExecutionClassFlex is a ExecutionClass enum value
	ExecutionClassFlex = "FLEX"

	// ExecutionClassStandard is a ExecutionClass enum value
	ExecutionClassStandard = "STANDARD"
)

// ExecutionClass_Values returns all elements of the ExecutionClass enum
func ExecutionClass_Values() []string {
	return []string{
		ExecutionClassFlex,
		ExecutionClassStandard,
	}
}

const (
	// ExistConditionMustExist is a ExistCondition enum value
	ExistConditionMustExist = "MUST_EXIST"

	// ExistConditionNotExist is a ExistCondition enum value
	ExistConditionNotExist = "NOT_EXIST"

	// ExistConditionNone is a ExistCondition enum value
	ExistConditionNone = "NONE"
)

// ExistCondition_Values returns all elements of the ExistCondition enum
func ExistCondition_Values() []string {
	return []string{
		ExistConditionMustExist,
		ExistConditionNotExist,
		ExistConditionNone,
	}
}

const (
	// FederationSourceErrorCodeAccessDeniedException is a FederationSourceErrorCode enum value
	FederationSourceErrorCodeAccessDeniedException = "AccessDeniedException"

	// FederationSourceErrorCodeEntityNotFoundException is a FederationSourceErrorCode enum value
	FederationSourceErrorCodeEntityNotFoundException = "EntityNotFoundException"

	// FederationSourceErrorCodeInvalidCredentialsException is a FederationSourceErrorCode enum value
	FederationSourceErrorCodeInvalidCredentialsException = "InvalidCredentialsException"

	// FederationSourceErrorCodeInvalidInputException is a FederationSourceErrorCode enum value
	FederationSourceErrorCodeInvalidInputException = "InvalidInputException"

	// FederationSourceErrorCodeInvalidResponseException is a FederationSourceErrorCode enum value
	FederationSourceErrorCodeInvalidResponseException = "InvalidResponseException"

	// FederationSourceErrorCodeOperationTimeoutException is a FederationSourceErrorCode enum value
	FederationSourceErrorCodeOperationTimeoutException = "OperationTimeoutException"

	// FederationSourceErrorCodeOperationNotSupportedException is a FederationSourceErrorCode enum value
	FederationSourceErrorCodeOperationNotSupportedException = "OperationNotSupportedException"

	// FederationSourceErrorCodeInternalServiceException is a FederationSourceErrorCode enum value
	FederationSourceErrorCodeInternalServiceException = "InternalServiceException"

	// FederationSourceErrorCodePartialFailureException is a FederationSourceErrorCode enum value
	FederationSourceErrorCodePartialFailureException = "PartialFailureException"

	// FederationSourceErrorCodeThrottlingException is a FederationSourceErrorCode enum value
	FederationSourceErrorCodeThrottlingException = "ThrottlingException"
)

// FederationSourceErrorCode_Values returns all elements of the FederationSourceErrorCode enum
func FederationSourceErrorCode_Values() []string {
	return []string{
		FederationSourceErrorCodeAccessDeniedException,
		FederationSourceErrorCodeEntityNotFoundException,
		FederationSourceErrorCodeInvalidCredentialsException,
		FederationSourceErrorCodeInvalidInputException,
		FederationSourceErrorCodeInvalidResponseException,
		FederationSourceErrorCodeOperationTimeoutException,
		FederationSourceErrorCodeOperationNotSupportedException,
		FederationSourceErrorCodeInternalServiceException,
		FederationSourceErrorCodePartialFailureException,
		FederationSourceErrorCodeThrottlingException,
	}
}

const (
	// FieldNameCrawlId is a FieldName enum value
	FieldNameCrawlId = "CRAWL_ID"

	// FieldNameState is a FieldName enum value
	FieldNameState = "STATE"

	// FieldNameStartTime is a FieldName enum value
	FieldNameStartTime = "START_TIME"

	// FieldNameEndTime is a FieldName enum value
	FieldNameEndTime = "END_TIME"

	// FieldNameDpuHour is a FieldName enum value
	FieldNameDpuHour = "DPU_HOUR"
)

// FieldName_Values returns all elements of the FieldName enum
func FieldName_Values() []string {
	return []string{
		FieldNameCrawlId,
		FieldNameState,
		FieldNameStartTime,
		FieldNameEndTime,
		FieldNameDpuHour,
	}
}

const (
	// FilterLogicalOperatorAnd is a FilterLogicalOperator enum value
	FilterLogicalOperatorAnd = "AND"

	// FilterLogicalOperatorOr is a FilterLogicalOperator enum value
	FilterLogicalOperatorOr = "OR"
)

// FilterLogicalOperator_Values returns all elements of the FilterLogicalOperator enum
func FilterLogicalOperator_Values() []string {
	return []string{
		FilterLogicalOperatorAnd,
		FilterLogicalOperatorOr,
	}
}

const (
	// FilterOperationEq is a FilterOperation enum value
	FilterOperationEq = "EQ"

	// FilterOperationLt is a FilterOperation enum value
	FilterOperationLt = "LT"

	// FilterOperationGt is a FilterOperation enum value
	FilterOperationGt = "GT"

	// FilterOperationLte is a FilterOperation enum value
	FilterOperationLte = "LTE"

	// FilterOperationGte is a FilterOperation enum value
	FilterOperationGte = "GTE"

	// FilterOperationRegex is a FilterOperation enum value
	FilterOperationRegex = "REGEX"

	// FilterOperationIsnull is a FilterOperation enum value
	FilterOperationIsnull = "ISNULL"
)

// FilterOperation_Values returns all elements of the FilterOperation enum
func FilterOperation_Values() []string {
	return []string{
		FilterOperationEq,
		FilterOperationLt,
		FilterOperationGt,
		FilterOperationLte,
		FilterOperationGte,
		FilterOperationRegex,
		FilterOperationIsnull,
	}
}

const (
	// FilterOperatorGt is a FilterOperator enum value
	FilterOperatorGt = "GT"

	// FilterOperatorGe is a FilterOperator enum value
	FilterOperatorGe = "GE"

	// FilterOperatorLt is a FilterOperator enum value
	FilterOperatorLt = "LT"

	// FilterOperatorLe is a FilterOperator enum value
	FilterOperatorLe = "LE"

	// FilterOperatorEq is a FilterOperator enum value
	FilterOperatorEq = "EQ"

	// FilterOperatorNe is a FilterOperator enum value
	FilterOperatorNe = "NE"
)

// FilterOperator_Values returns all elements of the FilterOperator enum
func FilterOperator_Values() []string {
	return []string{
		FilterOperatorGt,
		FilterOperatorGe,
		FilterOperatorLt,
		FilterOperatorLe,
		FilterOperatorEq,
		FilterOperatorNe,
	}
}

const (
	// FilterValueTypeColumnextracted is a FilterValueType enum value
	FilterValueTypeColumnextracted = "COLUMNEXTRACTED"

	// FilterValueTypeConstant is a FilterValueType enum value
	FilterValueTypeConstant = "CONSTANT"
)

// FilterValueType_Values returns all elements of the FilterValueType enum
func FilterValueType_Values() []string {
	return []string{
		FilterValueTypeColumnextracted,
		FilterValueTypeConstant,
	}
}

const (
	// GlueRecordTypeDate is a GlueRecordType enum value
	GlueRecordTypeDate = "DATE"

	// GlueRecordTypeString is a GlueRecordType enum value
	GlueRecordTypeString = "STRING"

	// GlueRecordTypeTimestamp is a GlueRecordType enum value
	GlueRecordTypeTimestamp = "TIMESTAMP"

	// GlueRecordTypeInt is a GlueRecordType enum value
	GlueRecordTypeInt = "INT"

	// GlueRecordTypeFloat is a GlueRecordType enum value
	GlueRecordTypeFloat = "FLOAT"

	// GlueRecordTypeLong is a GlueRecordType enum value
	GlueRecordTypeLong = "LONG"

	// GlueRecordTypeBigdecimal is a GlueRecordType enum value
	GlueRecordTypeBigdecimal = "BIGDECIMAL"

	// GlueRecordTypeByte is a GlueRecordType enum value
	GlueRecordTypeByte = "BYTE"

	// GlueRecordTypeShort is a GlueRecordType enum value
	GlueRecordTypeShort = "SHORT"

	// GlueRecordTypeDouble is a GlueRecordType enum value
	GlueRecordTypeDouble = "DOUBLE"
)

// GlueRecordType_Values returns all elements of the GlueRecordType enum
func GlueRecordType_Values() []string {
	return []string{
		GlueRecordTypeDate,
		GlueRecordTypeString,
		GlueRecordTypeTimestamp,
		GlueRecordTypeInt,
		GlueRecordTypeFloat,
		GlueRecordTypeLong,
		GlueRecordTypeBigdecimal,
		GlueRecordTypeByte,
		GlueRecordTypeShort,
		GlueRecordTypeDouble,
	}
}

const (
	// HudiTargetCompressionTypeGzip is a HudiTargetCompressionType enum value
	HudiTargetCompressionTypeGzip = "gzip"

	// HudiTargetCompressionTypeLzo is a HudiTargetCompressionType enum value
	HudiTargetCompressionTypeLzo = "lzo"

	// HudiTargetCompressionTypeUncompressed is a HudiTargetCompressionType enum value
	HudiTargetCompressionTypeUncompressed = "uncompressed"

	// HudiTargetCompressionTypeSnappy is a HudiTargetCompressionType enum value
	HudiTargetCompressionTypeSnappy = "snappy"
)

// HudiTargetCompressionType_Values returns all elements of the HudiTargetCompressionType enum
func HudiTargetCompressionType_Values() []string {
	return []string{
		HudiTargetCompressionTypeGzip,
		HudiTargetCompressionTypeLzo,
		HudiTargetCompressionTypeUncompressed,
		HudiTargetCompressionTypeSnappy,
	}
}

const (
	// JDBCConnectionTypeSqlserver is a JDBCConnectionType enum value
	JDBCConnectionTypeSqlserver = "sqlserver"

	// JDBCConnectionTypeMysql is a JDBCConnectionType enum value
	JDBCConnectionTypeMysql = "mysql"

	// JDBCConnectionTypeOracle is a JDBCConnectionType enum value
	JDBCConnectionTypeOracle = "oracle"

	// JDBCConnectionTypePostgresql is a JDBCConnectionType enum value
	JDBCConnectionTypePostgresql = "postgresql"

	// JDBCConnectionTypeRedshift is a JDBCConnectionType enum value
	JDBCConnectionTypeRedshift = "redshift"
)

// JDBCConnectionType_Values returns all elements of the JDBCConnectionType enum
func JDBCConnectionType_Values() []string {
	return []string{
		JDBCConnectionTypeSqlserver,
		JDBCConnectionTypeMysql,
		JDBCConnectionTypeOracle,
		JDBCConnectionTypePostgresql,
		JDBCConnectionTypeRedshift,
	}
}

const (
	// JDBCDataTypeArray is a JDBCDataType enum value
	JDBCDataTypeArray = "ARRAY"

	// JDBCDataTypeBigint is a JDBCDataType enum value
	JDBCDataTypeBigint = "BIGINT"

	// JDBCDataTypeBinary is a JDBCDataType enum value
	JDBCDataTypeBinary = "BINARY"

	// JDBCDataTypeBit is a JDBCDataType enum value
	JDBCDataTypeBit = "BIT"

	// JDBCDataTypeBlob is a JDBCDataType enum value
	JDBCDataTypeBlob = "BLOB"

	// JDBCDataTypeBoolean is a JDBCDataType enum value
	JDBCDataTypeBoolean = "BOOLEAN"

	// JDBCDataTypeChar is a JDBCDataType enum value
	JDBCDataTypeChar = "CHAR"

	// JDBCDataTypeClob is a JDBCDataType enum value
	JDBCDataTypeClob = "CLOB"

	// JDBCDataTypeDatalink is a JDBCDataType enum value
	JDBCDataTypeDatalink = "DATALINK"

	// JDBCDataTypeDate is a JDBCDataType enum value
	JDBCDataTypeDate = "DATE"

	// JDBCDataTypeDecimal is a JDBCDataType enum value
	JDBCDataTypeDecimal = "DECIMAL"

	// JDBCDataTypeDistinct is a JDBCDataType enum value
	JDBCDataTypeDistinct = "DISTINCT"

	// JDBCDataTypeDouble is a JDBCDataType enum value
	JDBCDataTypeDouble = "DOUBLE"

	// JDBCDataTypeFloat is a JDBCDataType enum value
	JDBCDataTypeFloat = "FLOAT"

	// JDBCDataTypeInteger is a JDBCDataType enum value
	JDBCDataTypeInteger = "INTEGER"

	// JDBCDataTypeJavaObject is a JDBCDataType enum value
	JDBCDataTypeJavaObject = "JAVA_OBJECT"

	// JDBCDataTypeLongnvarchar is a JDBCDataType enum value
	JDBCDataTypeLongnvarchar = "LONGNVARCHAR"

	// JDBCDataTypeLongvarbinary is a JDBCDataType enum value
	JDBCDataTypeLongvarbinary = "LONGVARBINARY"

	// JDBCDataTypeLongvarchar is a JDBCDataType enum value
	JDBCDataTypeLongvarchar = "LONGVARCHAR"

	// JDBCDataTypeNchar is a JDBCDataType enum value
	JDBCDataTypeNchar = "NCHAR"

	// JDBCDataTypeNclob is a JDBCDataType enum value
	JDBCDataTypeNclob = "NCLOB"

	// JDBCDataTypeNull is a JDBCDataType enum value
	JDBCDataTypeNull = "NULL"

	// JDBCDataTypeNumeric is a JDBCDataType enum value
	JDBCDataTypeNumeric = "NUMERIC"

	// JDBCDataTypeNvarchar is a JDBCDataType enum value
	JDBCDataTypeNvarchar = "NVARCHAR"

	// JDBCDataTypeOther is a JDBCDataType enum value
	JDBCDataTypeOther = "OTHER"

	// JDBCDataTypeReal is a JDBCDataType enum value
	JDBCDataTypeReal = "REAL"

	// JDBCDataTypeRef is a JDBCDataType enum value
	JDBCDataTypeRef = "REF"

	// JDBCDataTypeRefCursor is a JDBCDataType enum value
	JDBCDataTypeRefCursor = "REF_CURSOR"

	// JDBCDataTypeRowid is a JDBCDataType enum value
	JDBCDataTypeRowid = "ROWID"

	// JDBCDataTypeSmallint is a JDBCDataType enum value
	JDBCDataTypeSmallint = "SMALLINT"

	// JDBCDataTypeSqlxml is a JDBCDataType enum value
	JDBCDataTypeSqlxml = "SQLXML"

	// JDBCDataTypeStruct is a JDBCDataType enum value
	JDBCDataTypeStruct = "STRUCT"

	// JDBCDataTypeTime is a JDBCDataType enum value
	JDBCDataTypeTime = "TIME"

	// JDBCDataTypeTimeWithTimezone is a JDBCDataType enum value
	JDBCDataTypeTimeWithTimezone = "TIME_WITH_TIMEZONE"

	// JDBCDataTypeTimestamp is a JDBCDataType enum value
	JDBCDataTypeTimestamp = "TIMESTAMP"

	// JDBCDataTypeTimestampWithTimezone is a JDBCDataType enum value
	JDBCDataTypeTimestampWithTimezone = "TIMESTAMP_WITH_TIMEZONE"

	// JDBCDataTypeTinyint is a JDBCDataType enum value
	JDBCDataTypeTinyint = "TINYINT"

	// JDBCDataTypeVarbinary is a JDBCDataType enum value
	JDBCDataTypeVarbinary = "VARBINARY"

	// JDBCDataTypeVarchar is a JDBCDataType enum value
	JDBCDataTypeVarchar = "VARCHAR"
)

// JDBCDataType_Values returns all elements of the JDBCDataType enum
func JDBCDataType_Values() []string {
	return []string{
		JDBCDataTypeArray,
		JDBCDataTypeBigint,
		JDBCDataTypeBinary,
		JDBCDataTypeBit,
		JDBCDataTypeBlob,
		JDBCDataTypeBoolean,
		JDBCDataTypeChar,
		JDBCDataTypeClob,
		JDBCDataTypeDatalink,
		JDBCDataTypeDate,
		JDBCDataTypeDecimal,
		JDBCDataTypeDistinct,
		JDBCDataTypeDouble,
		JDBCDataTypeFloat,
		JDBCDataTypeInteger,
		JDBCDataTypeJavaObject,
		JDBCDataTypeLongnvarchar,
		JDBCDataTypeLongvarbinary,
		JDBCDataTypeLongvarchar,
		JDBCDataTypeNchar,
		JDBCDataTypeNclob,
		JDBCDataTypeNull,
		JDBCDataTypeNumeric,
		JDBCDataTypeNvarchar,
		JDBCDataTypeOther,
		JDBCDataTypeReal,
		JDBCDataTypeRef,
		JDBCDataTypeRefCursor,
		JDBCDataTypeRowid,
		JDBCDataTypeSmallint,
		JDBCDataTypeSqlxml,
		JDBCDataTypeStruct,
		JDBCDataTypeTime,
		JDBCDataTypeTimeWithTimezone,
		JDBCDataTypeTimestamp,
		JDBCDataTypeTimestampWithTimezone,
		JDBCDataTypeTinyint,
		JDBCDataTypeVarbinary,
		JDBCDataTypeVarchar,
	}
}

const (
	// JdbcMetadataEntryComments is a JdbcMetadataEntry enum value
	JdbcMetadataEntryComments = "COMMENTS"

	// JdbcMetadataEntryRawtypes is a JdbcMetadataEntry enum value
	JdbcMetadataEntryRawtypes = "RAWTYPES"
)

// JdbcMetadataEntry_Values returns all elements of the JdbcMetadataEntry enum
func JdbcMetadataEntry_Values() []string {
	return []string{
		JdbcMetadataEntryComments,
		JdbcMetadataEntryRawtypes,
	}
}

const (
	// JobBookmarksEncryptionModeDisabled is a JobBookmarksEncryptionMode enum value
	JobBookmarksEncryptionModeDisabled = "DISABLED"

	// JobBookmarksEncryptionModeCseKms is a JobBookmarksEncryptionMode enum value
	JobBookmarksEncryptionModeCseKms = "CSE-KMS"
)

// JobBookmarksEncryptionMode_Values returns all elements of the JobBookmarksEncryptionMode enum
func JobBookmarksEncryptionMode_Values() []string {
	return []string{
		JobBookmarksEncryptionModeDisabled,
		JobBookmarksEncryptionModeCseKms,
	}
}

const (
	// JobModeScript is a JobMode enum value
	JobModeScript = "SCRIPT"

	// JobModeVisual is a JobMode enum value
	JobModeVisual = "VISUAL"

	// JobModeNotebook is a JobMode enum value
	JobModeNotebook = "NOTEBOOK"
)

// JobMode_Values returns all elements of the JobMode enum
func JobMode_Values() []string {
	return []string{
		JobModeScript,
		JobModeVisual,
		JobModeNotebook,
	}
}

const (
	// JobRunStateStarting is a JobRunState enum value
	JobRunStateStarting = "STARTING"

	// JobRunStateRunning is a JobRunState enum value
	JobRunStateRunning = "RUNNING"

	// JobRunStateStopping is a JobRunState enum value
	JobRunStateStopping = "STOPPING"

	// JobRunStateStopped is a JobRunState enum value
	JobRunStateStopped = "STOPPED"

	// JobRunStateSucceeded is a JobRunState enum value
	JobRunStateSucceeded = "SUCCEEDED"

	// JobRunStateFailed is a JobRunState enum value
	JobRunStateFailed = "FAILED"

	// JobRunStateTimeout is a JobRunState enum value
	JobRunStateTimeout = "TIMEOUT"

	// JobRunStateError is a JobRunState enum value
	JobRunStateError = "ERROR"

	// JobRunStateWaiting is a JobRunState enum value
	JobRunStateWaiting = "WAITING"

	// JobRunStateExpired is a JobRunState enum value
	JobRunStateExpired = "EXPIRED"
)

// JobRunState_Values returns all elements of the JobRunState enum
func JobRunState_Values() []string {
	return []string{
		JobRunStateStarting,
		JobRunStateRunning,
		JobRunStateStopping,
		JobRunStateStopped,
		JobRunStateSucceeded,
		JobRunStateFailed,
		JobRunStateTimeout,
		JobRunStateError,
		JobRunStateWaiting,
		JobRunStateExpired,
	}
}

const (
	// JoinTypeEquijoin is a JoinType enum value
	JoinTypeEquijoin = "equijoin"

	// JoinTypeLeft is a JoinType enum value
	JoinTypeLeft = "left"

	// JoinTypeRight is a JoinType enum value
	JoinTypeRight = "right"

	// JoinTypeOuter is a JoinType enum value
	JoinTypeOuter = "outer"

	// JoinTypeLeftsemi is a JoinType enum value
	JoinTypeLeftsemi = "leftsemi"

	// JoinTypeLeftanti is a JoinType enum value
	JoinTypeLeftanti = "leftanti"
)

// JoinType_Values returns all elements of the JoinType enum
func JoinType_Values() []string {
	return []string{
		JoinTypeEquijoin,
		JoinTypeLeft,
		JoinTypeRight,
		JoinTypeOuter,
		JoinTypeLeftsemi,
		JoinTypeLeftanti,
	}
}

const (
	// LanguagePython is a Language enum value
	LanguagePython = "PYTHON"

	// LanguageScala is a Language enum value
	LanguageScala = "SCALA"
)

// Language_Values returns all elements of the Language enum
func Language_Values() []string {
	return []string{
		LanguagePython,
		LanguageScala,
	}
}

const (
	// LastCrawlStatusSucceeded is a LastCrawlStatus enum value
	LastCrawlStatusSucceeded = "SUCCEEDED"

	// LastCrawlStatusCancelled is a LastCrawlStatus enum value
	LastCrawlStatusCancelled = "CANCELLED"

	// LastCrawlStatusFailed is a LastCrawlStatus enum value
	LastCrawlStatusFailed = "FAILED"
)

// LastCrawlStatus_Values returns all elements of the LastCrawlStatus enum
func LastCrawlStatus_Values() []string {
	return []string{
		LastCrawlStatusSucceeded,
		LastCrawlStatusCancelled,
		LastCrawlStatusFailed,
	}
}

const (
	// LogicalAnd is a Logical enum value
	LogicalAnd = "AND"

	// LogicalAny is a Logical enum value
	LogicalAny = "ANY"
)

// Logical_Values returns all elements of the Logical enum
func Logical_Values() []string {
	return []string{
		LogicalAnd,
		LogicalAny,
	}
}

const (
	// LogicalOperatorEquals is a LogicalOperator enum value
	LogicalOperatorEquals = "EQUALS"
)

// LogicalOperator_Values returns all elements of the LogicalOperator enum
func LogicalOperator_Values() []string {
	return []string{
		LogicalOperatorEquals,
	}
}

const (
	// MLUserDataEncryptionModeStringDisabled is a MLUserDataEncryptionModeString enum value
	MLUserDataEncryptionModeStringDisabled = "DISABLED"

	// MLUserDataEncryptionModeStringSseKms is a MLUserDataEncryptionModeString enum value
	MLUserDataEncryptionModeStringSseKms = "SSE-KMS"
)

// MLUserDataEncryptionModeString_Values returns all elements of the MLUserDataEncryptionModeString enum
func MLUserDataEncryptionModeString_Values() []string {
	return []string{
		MLUserDataEncryptionModeStringDisabled,
		MLUserDataEncryptionModeStringSseKms,
	}
}

const (
	// MetadataOperationCreate is a MetadataOperation enum value
	MetadataOperationCreate = "CREATE"
)

// MetadataOperation_Values returns all elements of the MetadataOperation enum
func MetadataOperation_Values() []string {
	return []string{
		MetadataOperationCreate,
	}
}

const (
	// NodeTypeCrawler is a NodeType enum value
	NodeTypeCrawler = "CRAWLER"

	// NodeTypeJob is a NodeType enum value
	NodeTypeJob = "JOB"

	// NodeTypeTrigger is a NodeType enum value
	NodeTypeTrigger = "TRIGGER"
)

// NodeType_Values returns all elements of the NodeType enum
func NodeType_Values() []string {
	return []string{
		NodeTypeCrawler,
		NodeTypeJob,
		NodeTypeTrigger,
	}
}

const (
	// OAuth2GrantTypeAuthorizationCode is a OAuth2GrantType enum value
	OAuth2GrantTypeAuthorizationCode = "AUTHORIZATION_CODE"

	// OAuth2GrantTypeClientCredentials is a OAuth2GrantType enum value
	OAuth2GrantTypeClientCredentials = "CLIENT_CREDENTIALS"

	// OAuth2GrantTypeJwtBearer is a OAuth2GrantType enum value
	OAuth2GrantTypeJwtBearer = "JWT_BEARER"
)

// OAuth2GrantType_Values returns all elements of the OAuth2GrantType enum
func OAuth2GrantType_Values() []string {
	return []string{
		OAuth2GrantTypeAuthorizationCode,
		OAuth2GrantTypeClientCredentials,
		OAuth2GrantTypeJwtBearer,
	}
}

const (
	// ParamTypeStr is a ParamType enum value
	ParamTypeStr = "str"

	// ParamTypeInt is a ParamType enum value
	ParamTypeInt = "int"

	// ParamTypeFloat is a ParamType enum value
	ParamTypeFloat = "float"

	// ParamTypeComplex is a ParamType enum value
	ParamTypeComplex = "complex"

	// ParamTypeBool is a ParamType enum value
	ParamTypeBool = "bool"

	// ParamTypeList is a ParamType enum value
	ParamTypeList = "list"

	// ParamTypeNull is a ParamType enum value
	ParamTypeNull = "null"
)

// ParamType_Values returns all elements of the ParamType enum
func ParamType_Values() []string {
	return []string{
		ParamTypeStr,
		ParamTypeInt,
		ParamTypeFloat,
		ParamTypeComplex,
		ParamTypeBool,
		ParamTypeList,
		ParamTypeNull,
	}
}

const (
	// ParquetCompressionTypeSnappy is a ParquetCompressionType enum value
	ParquetCompressionTypeSnappy = "snappy"

	// ParquetCompressionTypeLzo is a ParquetCompressionType enum value
	ParquetCompressionTypeLzo = "lzo"

	// ParquetCompressionTypeGzip is a ParquetCompressionType enum value
	ParquetCompressionTypeGzip = "gzip"

	// ParquetCompressionTypeUncompressed is a ParquetCompressionType enum value
	ParquetCompressionTypeUncompressed = "uncompressed"

	// ParquetCompressionTypeNone is a ParquetCompressionType enum value
	ParquetCompressionTypeNone = "none"
)

// ParquetCompressionType_Values returns all elements of the ParquetCompressionType enum
func ParquetCompressionType_Values() []string {
	return []string{
		ParquetCompressionTypeSnappy,
		ParquetCompressionTypeLzo,
		ParquetCompressionTypeGzip,
		ParquetCompressionTypeUncompressed,
		ParquetCompressionTypeNone,
	}
}

const (
	// PartitionIndexStatusCreating is a PartitionIndexStatus enum value
	PartitionIndexStatusCreating = "CREATING"

	// PartitionIndexStatusActive is a PartitionIndexStatus enum value
	PartitionIndexStatusActive = "ACTIVE"

	// PartitionIndexStatusDeleting is a PartitionIndexStatus enum value
	PartitionIndexStatusDeleting = "DELETING"

	// PartitionIndexStatusFailed is a PartitionIndexStatus enum value
	PartitionIndexStatusFailed = "FAILED"
)

// PartitionIndexStatus_Values returns all elements of the PartitionIndexStatus enum
func PartitionIndexStatus_Values() []string {
	return []string{
		PartitionIndexStatusCreating,
		PartitionIndexStatusActive,
		PartitionIndexStatusDeleting,
		PartitionIndexStatusFailed,
	}
}

const (
	// PermissionAll is a Permission enum value
	PermissionAll = "ALL"

	// PermissionSelect is a Permission enum value
	PermissionSelect = "SELECT"

	// PermissionAlter is a Permission enum value
	PermissionAlter = "ALTER"

	// PermissionDrop is a Permission enum value
	PermissionDrop = "DROP"

	// PermissionDelete is a Permission enum value
	PermissionDelete = "DELETE"

	// PermissionInsert is a Permission enum value
	PermissionInsert = "INSERT"

	// PermissionCreateDatabase is a Permission enum value
	PermissionCreateDatabase = "CREATE_DATABASE"

	// PermissionCreateTable is a Permission enum value
	PermissionCreateTable = "CREATE_TABLE"

	// PermissionDataLocationAccess is a Permission enum value
	PermissionDataLocationAccess = "DATA_LOCATION_ACCESS"
)

// Permission_Values returns all elements of the Permission enum
func Permission_Values() []string {
	return []string{
		PermissionAll,
		PermissionSelect,
		PermissionAlter,
		PermissionDrop,
		PermissionDelete,
		PermissionInsert,
		PermissionCreateDatabase,
		PermissionCreateTable,
		PermissionDataLocationAccess,
	}
}

const (
	// PermissionTypeColumnPermission is a PermissionType enum value
	PermissionTypeColumnPermission = "COLUMN_PERMISSION"

	// PermissionTypeCellFilterPermission is a PermissionType enum value
	PermissionTypeCellFilterPermission = "CELL_FILTER_PERMISSION"

	// PermissionTypeNestedPermission is a PermissionType enum value
	PermissionTypeNestedPermission = "NESTED_PERMISSION"

	// PermissionTypeNestedCellPermission is a PermissionType enum value
	PermissionTypeNestedCellPermission = "NESTED_CELL_PERMISSION"
)

// PermissionType_Values returns all elements of the PermissionType enum
func PermissionType_Values() []string {
	return []string{
		PermissionTypeColumnPermission,
		PermissionTypeCellFilterPermission,
		PermissionTypeNestedPermission,
		PermissionTypeNestedCellPermission,
	}
}

const (
	// PiiTypeRowAudit is a PiiType enum value
	PiiTypeRowAudit = "RowAudit"

	// PiiTypeRowMasking is a PiiType enum value
	PiiTypeRowMasking = "RowMasking"

	// PiiTypeColumnAudit is a PiiType enum value
	PiiTypeColumnAudit = "ColumnAudit"

	// PiiTypeColumnMasking is a PiiType enum value
	PiiTypeColumnMasking = "ColumnMasking"
)

// PiiType_Values returns all elements of the PiiType enum
func PiiType_Values() []string {
	return []string{
		PiiTypeRowAudit,
		PiiTypeRowMasking,
		PiiTypeColumnAudit,
		PiiTypeColumnMasking,
	}
}

const (
	// PrincipalTypeUser is a PrincipalType enum value
	PrincipalTypeUser = "USER"

	// PrincipalTypeRole is a PrincipalType enum value
	PrincipalTypeRole = "ROLE"

	// PrincipalTypeGroup is a PrincipalType enum value
	PrincipalTypeGroup = "GROUP"
)

// PrincipalType_Values returns all elements of the PrincipalType enum
func PrincipalType_Values() []string {
	return []string{
		PrincipalTypeUser,
		PrincipalTypeRole,
		PrincipalTypeGroup,
	}
}

const (
	// QuoteCharQuote is a QuoteChar enum value
	QuoteCharQuote = "quote"

	// QuoteCharQuillemet is a QuoteChar enum value
	QuoteCharQuillemet = "quillemet"

	// QuoteCharSingleQuote is a QuoteChar enum value
	QuoteCharSingleQuote = "single_quote"

	// QuoteCharDisabled is a QuoteChar enum value
	QuoteCharDisabled = "disabled"
)

// QuoteChar_Values returns all elements of the QuoteChar enum
func QuoteChar_Values() []string {
	return []string{
		QuoteCharQuote,
		QuoteCharQuillemet,
		QuoteCharSingleQuote,
		QuoteCharDisabled,
	}
}

const (
	// RecrawlBehaviorCrawlEverything is a RecrawlBehavior enum value
	RecrawlBehaviorCrawlEverything = "CRAWL_EVERYTHING"

	// RecrawlBehaviorCrawlNewFoldersOnly is a RecrawlBehavior enum value
	RecrawlBehaviorCrawlNewFoldersOnly = "CRAWL_NEW_FOLDERS_ONLY"

	// RecrawlBehaviorCrawlEventMode is a RecrawlBehavior enum value
	RecrawlBehaviorCrawlEventMode = "CRAWL_EVENT_MODE"
)

// RecrawlBehavior_Values returns all elements of the RecrawlBehavior enum
func RecrawlBehavior_Values() []string {
	return []string{
		RecrawlBehaviorCrawlEverything,
		RecrawlBehaviorCrawlNewFoldersOnly,
		RecrawlBehaviorCrawlEventMode,
	}
}

const (
	// RegistryStatusAvailable is a RegistryStatus enum value
	RegistryStatusAvailable = "AVAILABLE"

	// RegistryStatusDeleting is a RegistryStatus enum value
	RegistryStatusDeleting = "DELETING"
)

// RegistryStatus_Values returns all elements of the RegistryStatus enum
func RegistryStatus_Values() []string {
	return []string{
		RegistryStatusAvailable,
		RegistryStatusDeleting,
	}
}

const (
	// ResourceShareTypeForeign is a ResourceShareType enum value
	ResourceShareTypeForeign = "FOREIGN"

	// ResourceShareTypeAll is a ResourceShareType enum value
	ResourceShareTypeAll = "ALL"

	// ResourceShareTypeFederated is a ResourceShareType enum value
	ResourceShareTypeFederated = "FEDERATED"
)

// ResourceShareType_Values returns all elements of the ResourceShareType enum
func ResourceShareType_Values() []string {
	return []string{
		ResourceShareTypeForeign,
		ResourceShareTypeAll,
		ResourceShareTypeFederated,
	}
}

const (
	// ResourceTypeJar is a ResourceType enum value
	ResourceTypeJar = "JAR"

	// ResourceTypeFile is a ResourceType enum value
	ResourceTypeFile = "FILE"

	// ResourceTypeArchive is a ResourceType enum value
	ResourceTypeArchive = "ARCHIVE"
)

// ResourceType_Values returns all elements of the ResourceType enum
func ResourceType_Values() []string {
	return []string{
		ResourceTypeJar,
		ResourceTypeFile,
		ResourceTypeArchive,
	}
}

const (
	// S3EncryptionModeDisabled is a S3EncryptionMode enum value
	S3EncryptionModeDisabled = "DISABLED"

	// S3EncryptionModeSseKms is a S3EncryptionMode enum value
	S3EncryptionModeSseKms = "SSE-KMS"

	// S3EncryptionModeSseS3 is a S3EncryptionMode enum value
	S3EncryptionModeSseS3 = "SSE-S3"
)

// S3EncryptionMode_Values returns all elements of the S3EncryptionMode enum
func S3EncryptionMode_Values() []string {
	return []string{
		S3EncryptionModeDisabled,
		S3EncryptionModeSseKms,
		S3EncryptionModeSseS3,
	}
}

const (
	// ScheduleStateScheduled is a ScheduleState enum value
	ScheduleStateScheduled = "SCHEDULED"

	// ScheduleStateNotScheduled is a ScheduleState enum value
	ScheduleStateNotScheduled = "NOT_SCHEDULED"

	// ScheduleStateTransitioning is a ScheduleState enum value
	ScheduleStateTransitioning = "TRANSITIONING"
)

// ScheduleState_Values returns all elements of the ScheduleState enum
func ScheduleState_Values() []string {
	return []string{
		ScheduleStateScheduled,
		ScheduleStateNotScheduled,
		ScheduleStateTransitioning,
	}
}

const (
	// SchemaDiffTypeSyntaxDiff is a SchemaDiffType enum value
	SchemaDiffTypeSyntaxDiff = "SYNTAX_DIFF"
)

// SchemaDiffType_Values returns all elements of the SchemaDiffType enum
func SchemaDiffType_Values() []string {
	return []string{
		SchemaDiffTypeSyntaxDiff,
	}
}

const (
	// SchemaStatusAvailable is a SchemaStatus enum value
	SchemaStatusAvailable = "AVAILABLE"

	// SchemaStatusPending is a SchemaStatus enum value
	SchemaStatusPending = "PENDING"

	// SchemaStatusDeleting is a SchemaStatus enum value
	SchemaStatusDeleting = "DELETING"
)

// SchemaStatus_Values returns all elements of the SchemaStatus enum
func SchemaStatus_Values() []string {
	return []string{
		SchemaStatusAvailable,
		SchemaStatusPending,
		SchemaStatusDeleting,
	}
}

const (
	// SchemaVersionStatusAvailable is a SchemaVersionStatus enum value
	SchemaVersionStatusAvailable = "AVAILABLE"

	// SchemaVersionStatusPending is a SchemaVersionStatus enum value
	SchemaVersionStatusPending = "PENDING"

	// SchemaVersionStatusFailure is a SchemaVersionStatus enum value
	SchemaVersionStatusFailure = "FAILURE"

	// SchemaVersionStatusDeleting is a SchemaVersionStatus enum value
	SchemaVersionStatusDeleting = "DELETING"
)

// SchemaVersionStatus_Values returns all elements of the SchemaVersionStatus enum
func SchemaVersionStatus_Values() []string {
	return []string{
		SchemaVersionStatusAvailable,
		SchemaVersionStatusPending,
		SchemaVersionStatusFailure,
		SchemaVersionStatusDeleting,
	}
}

const (
	// SeparatorComma is a Separator enum value
	SeparatorComma = "comma"

	// SeparatorCtrla is a Separator enum value
	SeparatorCtrla = "ctrla"

	// SeparatorPipe is a Separator enum value
	SeparatorPipe = "pipe"

	// SeparatorSemicolon is a Separator enum value
	SeparatorSemicolon = "semicolon"

	// SeparatorTab is a Separator enum value
	SeparatorTab = "tab"
)

// Separator_Values returns all elements of the Separator enum
func Separator_Values() []string {
	return []string{
		SeparatorComma,
		SeparatorCtrla,
		SeparatorPipe,
		SeparatorSemicolon,
		SeparatorTab,
	}
}

const (
	// SessionStatusProvisioning is a SessionStatus enum value
	SessionStatusProvisioning = "PROVISIONING"

	// SessionStatusReady is a SessionStatus enum value
	SessionStatusReady = "READY"

	// SessionStatusFailed is a SessionStatus enum value
	SessionStatusFailed = "FAILED"

	// SessionStatusTimeout is a SessionStatus enum value
	SessionStatusTimeout = "TIMEOUT"

	// SessionStatusStopping is a SessionStatus enum value
	SessionStatusStopping = "STOPPING"

	// SessionStatusStopped is a SessionStatus enum value
	SessionStatusStopped = "STOPPED"
)

// SessionStatus_Values returns all elements of the SessionStatus enum
func SessionStatus_Values() []string {
	return []string{
		SessionStatusProvisioning,
		SessionStatusReady,
		SessionStatusFailed,
		SessionStatusTimeout,
		SessionStatusStopping,
		SessionStatusStopped,
	}
}

const (
	// SortAsc is a Sort enum value
	SortAsc = "ASC"

	// SortDesc is a Sort enum value
	SortDesc = "DESC"
)

// Sort_Values returns all elements of the Sort enum
func Sort_Values() []string {
	return []string{
		SortAsc,
		SortDesc,
	}
}

const (
	// SortDirectionTypeDescending is a SortDirectionType enum value
	SortDirectionTypeDescending = "DESCENDING"

	// SortDirectionTypeAscending is a SortDirectionType enum value
	SortDirectionTypeAscending = "ASCENDING"
)

// SortDirectionType_Values returns all elements of the SortDirectionType enum
func SortDirectionType_Values() []string {
	return []string{
		SortDirectionTypeDescending,
		SortDirectionTypeAscending,
	}
}

const (
	// SourceControlAuthStrategyPersonalAccessToken is a SourceControlAuthStrategy enum value
	SourceControlAuthStrategyPersonalAccessToken = "PERSONAL_ACCESS_TOKEN"

	// SourceControlAuthStrategyAwsSecretsManager is a SourceControlAuthStrategy enum value
	SourceControlAuthStrategyAwsSecretsManager = "AWS_SECRETS_MANAGER"
)

// SourceControlAuthStrategy_Values returns all elements of the SourceControlAuthStrategy enum
func SourceControlAuthStrategy_Values() []string {
	return []string{
		SourceControlAuthStrategyPersonalAccessToken,
		SourceControlAuthStrategyAwsSecretsManager,
	}
}

const (
	// SourceControlProviderGithub is a SourceControlProvider enum value
	SourceControlProviderGithub = "GITHUB"

	// SourceControlProviderGitlab is a SourceControlProvider enum value
	SourceControlProviderGitlab = "GITLAB"

	// SourceControlProviderBitbucket is a SourceControlProvider enum value
	SourceControlProviderBitbucket = "BITBUCKET"

	// SourceControlProviderAwsCodeCommit is a SourceControlProvider enum value
	SourceControlProviderAwsCodeCommit = "AWS_CODE_COMMIT"
)

// SourceControlProvider_Values returns all elements of the SourceControlProvider enum
func SourceControlProvider_Values() []string {
	return []string{
		SourceControlProviderGithub,
		SourceControlProviderGitlab,
		SourceControlProviderBitbucket,
		SourceControlProviderAwsCodeCommit,
	}
}

const (
	// StartingPositionLatest is a StartingPosition enum value
	StartingPositionLatest = "latest"

	// StartingPositionTrimHorizon is a StartingPosition enum value
	StartingPositionTrimHorizon = "trim_horizon"

	// StartingPositionEarliest is a StartingPosition enum value
	StartingPositionEarliest = "earliest"

	// StartingPositionTimestamp is a StartingPosition enum value
	StartingPositionTimestamp = "timestamp"
)

// StartingPosition_Values returns all elements of the StartingPosition enum
func StartingPosition_Values() []string {
	return []string{
		StartingPositionLatest,
		StartingPositionTrimHorizon,
		StartingPositionEarliest,
		StartingPositionTimestamp,
	}
}

const (
	// StatementStateWaiting is a StatementState enum value
	StatementStateWaiting = "WAITING"

	// StatementStateRunning is a StatementState enum value
	StatementStateRunning = "RUNNING"

	// StatementStateAvailable is a StatementState enum value
	StatementStateAvailable = "AVAILABLE"

	// StatementStateCancelling is a StatementState enum value
	StatementStateCancelling = "CANCELLING"

	// StatementStateCancelled is a StatementState enum value
	StatementStateCancelled = "CANCELLED"

	// StatementStateError is a StatementState enum value
	StatementStateError = "ERROR"
)

// StatementState_Values returns all elements of the StatementState enum
func StatementState_Values() []string {
	return []string{
		StatementStateWaiting,
		StatementStateRunning,
		StatementStateAvailable,
		StatementStateCancelling,
		StatementStateCancelled,
		StatementStateError,
	}
}

const (
	// TableOptimizerEventTypeStarting is a TableOptimizerEventType enum value
	TableOptimizerEventTypeStarting = "starting"

	// TableOptimizerEventTypeCompleted is a TableOptimizerEventType enum value
	TableOptimizerEventTypeCompleted = "completed"

	// TableOptimizerEventTypeFailed is a TableOptimizerEventType enum value
	TableOptimizerEventTypeFailed = "failed"

	// TableOptimizerEventTypeInProgress is a TableOptimizerEventType enum value
	TableOptimizerEventTypeInProgress = "in_progress"
)

// TableOptimizerEventType_Values returns all elements of the TableOptimizerEventType enum
func TableOptimizerEventType_Values() []string {
	return []string{
		TableOptimizerEventTypeStarting,
		TableOptimizerEventTypeCompleted,
		TableOptimizerEventTypeFailed,
		TableOptimizerEventTypeInProgress,
	}
}

const (
	// TableOptimizerTypeCompaction is a TableOptimizerType enum value
	TableOptimizerTypeCompaction = "compaction"
)

// TableOptimizerType_Values returns all elements of the TableOptimizerType enum
func TableOptimizerType_Values() []string {
	return []string{
		TableOptimizerTypeCompaction,
	}
}

const (
	// TargetFormatJson is a TargetFormat enum value
	TargetFormatJson = "json"

	// TargetFormatCsv is a TargetFormat enum value
	TargetFormatCsv = "csv"

	// TargetFormatAvro is a TargetFormat enum value
	TargetFormatAvro = "avro"

	// TargetFormatOrc is a TargetFormat enum value
	TargetFormatOrc = "orc"

	// TargetFormatParquet is a TargetFormat enum value
	TargetFormatParquet = "parquet"

	// TargetFormatHudi is a TargetFormat enum value
	TargetFormatHudi = "hudi"

	// TargetFormatDelta is a TargetFormat enum value
	TargetFormatDelta = "delta"
)

// TargetFormat_Values returns all elements of the TargetFormat enum
func TargetFormat_Values() []string {
	return []string{
		TargetFormatJson,
		TargetFormatCsv,
		TargetFormatAvro,
		TargetFormatOrc,
		TargetFormatParquet,
		TargetFormatHudi,
		TargetFormatDelta,
	}
}

const (
	// TaskRunSortColumnTypeTaskRunType is a TaskRunSortColumnType enum value
	TaskRunSortColumnTypeTaskRunType = "TASK_RUN_TYPE"

	// TaskRunSortColumnTypeStatus is a TaskRunSortColumnType enum value
	TaskRunSortColumnTypeStatus = "STATUS"

	// TaskRunSortColumnTypeStarted is a TaskRunSortColumnType enum value
	TaskRunSortColumnTypeStarted = "STARTED"
)

// TaskRunSortColumnType_Values returns all elements of the TaskRunSortColumnType enum
func TaskRunSortColumnType_Values() []string {
	return []string{
		TaskRunSortColumnTypeTaskRunType,
		TaskRunSortColumnTypeStatus,
		TaskRunSortColumnTypeStarted,
	}
}

const (
	// TaskStatusTypeStarting is a TaskStatusType enum value
	TaskStatusTypeStarting = "STARTING"

	// TaskStatusTypeRunning is a TaskStatusType enum value
	TaskStatusTypeRunning = "RUNNING"

	// TaskStatusTypeStopping is a TaskStatusType enum value
	TaskStatusTypeStopping = "STOPPING"

	// TaskStatusTypeStopped is a TaskStatusType enum value
	TaskStatusTypeStopped = "STOPPED"

	// TaskStatusTypeSucceeded is a TaskStatusType enum value
	TaskStatusTypeSucceeded = "SUCCEEDED"

	// TaskStatusTypeFailed is a TaskStatusType enum value
	TaskStatusTypeFailed = "FAILED"

	// TaskStatusTypeTimeout is a TaskStatusType enum value
	TaskStatusTypeTimeout = "TIMEOUT"
)

// TaskStatusType_Values returns all elements of the TaskStatusType enum
func TaskStatusType_Values() []string {
	return []string{
		TaskStatusTypeStarting,
		TaskStatusTypeRunning,
		TaskStatusTypeStopping,
		TaskStatusTypeStopped,
		TaskStatusTypeSucceeded,
		TaskStatusTypeFailed,
		TaskStatusTypeTimeout,
	}
}

const (
	// TaskTypeEvaluation is a TaskType enum value
	TaskTypeEvaluation = "EVALUATION"

	// TaskTypeLabelingSetGeneration is a TaskType enum value
	TaskTypeLabelingSetGeneration = "LABELING_SET_GENERATION"

	// TaskTypeImportLabels is a TaskType enum value
	TaskTypeImportLabels = "IMPORT_LABELS"

	// TaskTypeExportLabels is a TaskType enum value
	TaskTypeExportLabels = "EXPORT_LABELS"

	// TaskTypeFindMatches is a TaskType enum value
	TaskTypeFindMatches = "FIND_MATCHES"
)

// TaskType_Values returns all elements of the TaskType enum
func TaskType_Values() []string {
	return []string{
		TaskTypeEvaluation,
		TaskTypeLabelingSetGeneration,
		TaskTypeImportLabels,
		TaskTypeExportLabels,
		TaskTypeFindMatches,
	}
}

const (
	// TransformSortColumnTypeName is a TransformSortColumnType enum value
	TransformSortColumnTypeName = "NAME"

	// TransformSortColumnTypeTransformType is a TransformSortColumnType enum value
	TransformSortColumnTypeTransformType = "TRANSFORM_TYPE"

	// TransformSortColumnTypeStatus is a TransformSortColumnType enum value
	TransformSortColumnTypeStatus = "STATUS"

	// TransformSortColumnTypeCreated is a TransformSortColumnType enum value
	TransformSortColumnTypeCreated = "CREATED"

	// TransformSortColumnTypeLastModified is a TransformSortColumnType enum value
	TransformSortColumnTypeLastModified = "LAST_MODIFIED"
)

// TransformSortColumnType_Values returns all elements of the TransformSortColumnType enum
func TransformSortColumnType_Values() []string {
	return []string{
		TransformSortColumnTypeName,
		TransformSortColumnTypeTransformType,
		TransformSortColumnTypeStatus,
		TransformSortColumnTypeCreated,
		TransformSortColumnTypeLastModified,
	}
}

const (
	// TransformStatusTypeNotReady is a TransformStatusType enum value
	TransformStatusTypeNotReady = "NOT_READY"

	// TransformStatusTypeReady is a TransformStatusType enum value
	TransformStatusTypeReady = "READY"

	// TransformStatusTypeDeleting is a TransformStatusType enum value
	TransformStatusTypeDeleting = "DELETING"
)

// TransformStatusType_Values returns all elements of the TransformStatusType enum
func TransformStatusType_Values() []string {
	return []string{
		TransformStatusTypeNotReady,
		TransformStatusTypeReady,
		TransformStatusTypeDeleting,
	}
}

const (
	// TransformTypeFindMatches is a TransformType enum value
	TransformTypeFindMatches = "FIND_MATCHES"
)

// TransformType_Values returns all elements of the TransformType enum
func TransformType_Values() []string {
	return []string{
		TransformTypeFindMatches,
	}
}

const (
	// TriggerStateCreating is a TriggerState enum value
	TriggerStateCreating = "CREATING"

	// TriggerStateCreated is a TriggerState enum value
	TriggerStateCreated = "CREATED"

	// TriggerStateActivating is a TriggerState enum value
	TriggerStateActivating = "ACTIVATING"

	// TriggerStateActivated is a TriggerState enum value
	TriggerStateActivated = "ACTIVATED"

	// TriggerStateDeactivating is a TriggerState enum value
	TriggerStateDeactivating = "DEACTIVATING"

	// TriggerStateDeactivated is a TriggerState enum value
	TriggerStateDeactivated = "DEACTIVATED"

	// TriggerStateDeleting is a TriggerState enum value
	TriggerStateDeleting = "DELETING"

	// TriggerStateUpdating is a TriggerState enum value
	TriggerStateUpdating = "UPDATING"
)

// TriggerState_Values returns all elements of the TriggerState enum
func TriggerState_Values() []string {
	return []string{
		TriggerStateCreating,
		TriggerStateCreated,
		TriggerStateActivating,
		TriggerStateActivated,
		TriggerStateDeactivating,
		TriggerStateDeactivated,
		TriggerStateDeleting,
		TriggerStateUpdating,
	}
}

const (
	// TriggerTypeScheduled is a TriggerType enum value
	TriggerTypeScheduled = "SCHEDULED"

	// TriggerTypeConditional is a TriggerType enum value
	TriggerTypeConditional = "CONDITIONAL"

	// TriggerTypeOnDemand is a TriggerType enum value
	TriggerTypeOnDemand = "ON_DEMAND"

	// TriggerTypeEvent is a TriggerType enum value
	TriggerTypeEvent = "EVENT"
)

// TriggerType_Values returns all elements of the TriggerType enum
func TriggerType_Values() []string {
	return []string{
		TriggerTypeScheduled,
		TriggerTypeConditional,
		TriggerTypeOnDemand,
		TriggerTypeEvent,
	}
}

const (
	// UnionTypeAll is a UnionType enum value
	UnionTypeAll = "ALL"

	// UnionTypeDistinct is a UnionType enum value
	UnionTypeDistinct = "DISTINCT"
)

// UnionType_Values returns all elements of the UnionType enum
func UnionType_Values() []string {
	return []string{
		UnionTypeAll,
		UnionTypeDistinct,
	}
}

const (
	// UpdateBehaviorLog is a UpdateBehavior enum value
	UpdateBehaviorLog = "LOG"

	// UpdateBehaviorUpdateInDatabase is a UpdateBehavior enum value
	UpdateBehaviorUpdateInDatabase = "UPDATE_IN_DATABASE"
)

// UpdateBehavior_Values returns all elements of the UpdateBehavior enum
func UpdateBehavior_Values() []string {
	return []string{
		UpdateBehaviorLog,
		UpdateBehaviorUpdateInDatabase,
	}
}

const (
	// UpdateCatalogBehaviorUpdateInDatabase is a UpdateCatalogBehavior enum value
	UpdateCatalogBehaviorUpdateInDatabase = "UPDATE_IN_DATABASE"

	// UpdateCatalogBehaviorLog is a UpdateCatalogBehavior enum value
	UpdateCatalogBehaviorLog = "LOG"
)

// UpdateCatalogBehavior_Values returns all elements of the UpdateCatalogBehavior enum
func UpdateCatalogBehavior_Values() []string {
	return []string{
		UpdateCatalogBehaviorUpdateInDatabase,
		UpdateCatalogBehaviorLog,
	}
}

const (
	// ViewDialectRedshift is a ViewDialect enum value
	ViewDialectRedshift = "REDSHIFT"

	// ViewDialectAthena is a ViewDialect enum value
	ViewDialectAthena = "ATHENA"

	// ViewDialectSpark is a ViewDialect enum value
	ViewDialectSpark = "SPARK"
)

// ViewDialect_Values returns all elements of the ViewDialect enum
func ViewDialect_Values() []string {
	return []string{
		ViewDialectRedshift,
		ViewDialectAthena,
		ViewDialectSpark,
	}
}

const (
	// ViewUpdateActionAdd is a ViewUpdateAction enum value
	ViewUpdateActionAdd = "ADD"

	// ViewUpdateActionReplace is a ViewUpdateAction enum value
	ViewUpdateActionReplace = "REPLACE"

	// ViewUpdateActionAddOrReplace is a ViewUpdateAction enum value
	ViewUpdateActionAddOrReplace = "ADD_OR_REPLACE"

	// ViewUpdateActionDrop is a ViewUpdateAction enum value
	ViewUpdateActionDrop = "DROP"
)

// ViewUpdateAction_Values returns all elements of the ViewUpdateAction enum
func ViewUpdateAction_Values() []string {
	return []string{
		ViewUpdateActionAdd,
		ViewUpdateActionReplace,
		ViewUpdateActionAddOrReplace,
		ViewUpdateActionDrop,
	}
}

const (
	// WorkerTypeStandard is a WorkerType enum value
	WorkerTypeStandard = "Standard"

	// WorkerTypeG1x is a WorkerType enum value
	WorkerTypeG1x = "G.1X"

	// WorkerTypeG2x is a WorkerType enum value
	WorkerTypeG2x = "G.2X"

	// WorkerTypeG025x is a WorkerType enum value
	WorkerTypeG025x = "G.025X"

	// WorkerTypeG4x is a WorkerType enum value
	WorkerTypeG4x = "G.4X"

	// WorkerTypeG8x is a WorkerType enum value
	WorkerTypeG8x = "G.8X"

	// WorkerTypeZ2x is a WorkerType enum value
	WorkerTypeZ2x = "Z.2X"
)

// WorkerType_Values returns all elements of the WorkerType enum
func WorkerType_Values() []string {
	return []string{
		WorkerTypeStandard,
		WorkerTypeG1x,
		WorkerTypeG2x,
		WorkerTypeG025x,
		WorkerTypeG4x,
		WorkerTypeG8x,
		WorkerTypeZ2x,
	}
}

const (
	// WorkflowRunStatusRunning is a WorkflowRunStatus enum value
	WorkflowRunStatusRunning = "RUNNING"

	// WorkflowRunStatusCompleted is a WorkflowRunStatus enum value
	WorkflowRunStatusCompleted = "COMPLETED"

	// WorkflowRunStatusStopping is a WorkflowRunStatus enum value
	WorkflowRunStatusStopping = "STOPPING"

	// WorkflowRunStatusStopped is a WorkflowRunStatus enum value
	WorkflowRunStatusStopped = "STOPPED"

	// WorkflowRunStatusError is a WorkflowRunStatus enum value
	WorkflowRunStatusError = "ERROR"
)

// WorkflowRunStatus_Values returns all elements of the WorkflowRunStatus enum
func WorkflowRunStatus_Values() []string {
	return []string{
		WorkflowRunStatusRunning,
		WorkflowRunStatusCompleted,
		WorkflowRunStatusStopping,
		WorkflowRunStatusStopped,
		WorkflowRunStatusError,
	}
}
