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

package datazone

import (
	"fmt"
	"time"

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

const opAcceptPredictions = "AcceptPredictions"

// AcceptPredictionsRequest generates a "aws/request.Request" representing the
// client's request for the AcceptPredictions operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See AcceptPredictions for more information on using the AcceptPredictions
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the AcceptPredictionsRequest method.
//	req, resp := client.AcceptPredictionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/AcceptPredictions
func (c *DataZone) AcceptPredictionsRequest(input *AcceptPredictionsInput) (req *request.Request, output *AcceptPredictionsOutput) {
	op := &request.Operation{
		Name:       opAcceptPredictions,
		HTTPMethod: "PUT",
		HTTPPath:   "/v2/domains/{domainIdentifier}/assets/{identifier}/accept-predictions",
	}

	if input == nil {
		input = &AcceptPredictionsInput{}
	}

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

// AcceptPredictions API operation for Amazon DataZone.
//
// Accepts automatically generated business-friendly metadata for your Amazon
// DataZone assets.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation AcceptPredictions for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/AcceptPredictions
func (c *DataZone) AcceptPredictions(input *AcceptPredictionsInput) (*AcceptPredictionsOutput, error) {
	req, out := c.AcceptPredictionsRequest(input)
	return out, req.Send()
}

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

const opAcceptSubscriptionRequest = "AcceptSubscriptionRequest"

// AcceptSubscriptionRequestRequest generates a "aws/request.Request" representing the
// client's request for the AcceptSubscriptionRequest operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See AcceptSubscriptionRequest for more information on using the AcceptSubscriptionRequest
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the AcceptSubscriptionRequestRequest method.
//	req, resp := client.AcceptSubscriptionRequestRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/AcceptSubscriptionRequest
func (c *DataZone) AcceptSubscriptionRequestRequest(input *AcceptSubscriptionRequestInput) (req *request.Request, output *AcceptSubscriptionRequestOutput) {
	op := &request.Operation{
		Name:       opAcceptSubscriptionRequest,
		HTTPMethod: "PUT",
		HTTPPath:   "/v2/domains/{domainIdentifier}/subscription-requests/{identifier}/accept",
	}

	if input == nil {
		input = &AcceptSubscriptionRequestInput{}
	}

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

// AcceptSubscriptionRequest API operation for Amazon DataZone.
//
// Accepts a subscription request to a specific asset.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation AcceptSubscriptionRequest for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/AcceptSubscriptionRequest
func (c *DataZone) AcceptSubscriptionRequest(input *AcceptSubscriptionRequestInput) (*AcceptSubscriptionRequestOutput, error) {
	req, out := c.AcceptSubscriptionRequestRequest(input)
	return out, req.Send()
}

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

const opCancelSubscription = "CancelSubscription"

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

	if input == nil {
		input = &CancelSubscriptionInput{}
	}

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

// CancelSubscription API operation for Amazon DataZone.
//
// Cancels the subscription to the specified asset.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation CancelSubscription for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CancelSubscription
func (c *DataZone) CancelSubscription(input *CancelSubscriptionInput) (*CancelSubscriptionOutput, error) {
	req, out := c.CancelSubscriptionRequest(input)
	return out, req.Send()
}

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

const opCreateAsset = "CreateAsset"

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

	if input == nil {
		input = &CreateAssetInput{}
	}

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

// CreateAsset API operation for Amazon DataZone.
//
// Creates an asset in Amazon DataZone 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 Amazon DataZone's
// API operation CreateAsset for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateAsset
func (c *DataZone) CreateAsset(input *CreateAssetInput) (*CreateAssetOutput, error) {
	req, out := c.CreateAssetRequest(input)
	return out, req.Send()
}

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

const opCreateAssetRevision = "CreateAssetRevision"

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

	if input == nil {
		input = &CreateAssetRevisionInput{}
	}

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

// CreateAssetRevision API operation for Amazon DataZone.
//
// Creates a revision of the asset.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation CreateAssetRevision for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateAssetRevision
func (c *DataZone) CreateAssetRevision(input *CreateAssetRevisionInput) (*CreateAssetRevisionOutput, error) {
	req, out := c.CreateAssetRevisionRequest(input)
	return out, req.Send()
}

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

const opCreateAssetType = "CreateAssetType"

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

	if input == nil {
		input = &CreateAssetTypeInput{}
	}

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

// CreateAssetType API operation for Amazon DataZone.
//
// Creates a custom asset 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 Amazon DataZone's
// API operation CreateAssetType for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateAssetType
func (c *DataZone) CreateAssetType(input *CreateAssetTypeInput) (*CreateAssetTypeOutput, error) {
	req, out := c.CreateAssetTypeRequest(input)
	return out, req.Send()
}

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

const opCreateDataSource = "CreateDataSource"

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

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

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

// CreateDataSource API operation for Amazon DataZone.
//
// Creates an Amazon DataZone data source.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation CreateDataSource for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateDataSource
func (c *DataZone) CreateDataSource(input *CreateDataSourceInput) (*CreateDataSourceOutput, error) {
	req, out := c.CreateDataSourceRequest(input)
	return out, req.Send()
}

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

const opCreateDomain = "CreateDomain"

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

	if input == nil {
		input = &CreateDomainInput{}
	}

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

// CreateDomain API operation for Amazon DataZone.
//
// Creates an Amazon DataZone domain.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation CreateDomain for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateDomain
func (c *DataZone) CreateDomain(input *CreateDomainInput) (*CreateDomainOutput, error) {
	req, out := c.CreateDomainRequest(input)
	return out, req.Send()
}

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

const opCreateEnvironment = "CreateEnvironment"

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

	if input == nil {
		input = &CreateEnvironmentInput{}
	}

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

// CreateEnvironment API operation for Amazon DataZone.
//
// Create an Amazon DataZone environment.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation CreateEnvironment for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateEnvironment
func (c *DataZone) CreateEnvironment(input *CreateEnvironmentInput) (*CreateEnvironmentOutput, error) {
	req, out := c.CreateEnvironmentRequest(input)
	return out, req.Send()
}

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

const opCreateEnvironmentProfile = "CreateEnvironmentProfile"

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

	if input == nil {
		input = &CreateEnvironmentProfileInput{}
	}

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

// CreateEnvironmentProfile API operation for Amazon DataZone.
//
// Creates an Amazon DataZone environment 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 Amazon DataZone's
// API operation CreateEnvironmentProfile for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateEnvironmentProfile
func (c *DataZone) CreateEnvironmentProfile(input *CreateEnvironmentProfileInput) (*CreateEnvironmentProfileOutput, error) {
	req, out := c.CreateEnvironmentProfileRequest(input)
	return out, req.Send()
}

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

const opCreateFormType = "CreateFormType"

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

	if input == nil {
		input = &CreateFormTypeInput{}
	}

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

// CreateFormType API operation for Amazon DataZone.
//
// Creates a metadata form 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 Amazon DataZone's
// API operation CreateFormType for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateFormType
func (c *DataZone) CreateFormType(input *CreateFormTypeInput) (*CreateFormTypeOutput, error) {
	req, out := c.CreateFormTypeRequest(input)
	return out, req.Send()
}

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

const opCreateGlossary = "CreateGlossary"

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

	if input == nil {
		input = &CreateGlossaryInput{}
	}

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

// CreateGlossary API operation for Amazon DataZone.
//
// Creates an Amazon DataZone business glossary.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation CreateGlossary for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateGlossary
func (c *DataZone) CreateGlossary(input *CreateGlossaryInput) (*CreateGlossaryOutput, error) {
	req, out := c.CreateGlossaryRequest(input)
	return out, req.Send()
}

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

const opCreateGlossaryTerm = "CreateGlossaryTerm"

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

	if input == nil {
		input = &CreateGlossaryTermInput{}
	}

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

// CreateGlossaryTerm API operation for Amazon DataZone.
//
// Creates a business glossary term.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation CreateGlossaryTerm for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateGlossaryTerm
func (c *DataZone) CreateGlossaryTerm(input *CreateGlossaryTermInput) (*CreateGlossaryTermOutput, error) {
	req, out := c.CreateGlossaryTermRequest(input)
	return out, req.Send()
}

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

const opCreateGroupProfile = "CreateGroupProfile"

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

	if input == nil {
		input = &CreateGroupProfileInput{}
	}

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

// CreateGroupProfile API operation for Amazon DataZone.
//
// Creates a group profile in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation CreateGroupProfile for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateGroupProfile
func (c *DataZone) CreateGroupProfile(input *CreateGroupProfileInput) (*CreateGroupProfileOutput, error) {
	req, out := c.CreateGroupProfileRequest(input)
	return out, req.Send()
}

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

const opCreateListingChangeSet = "CreateListingChangeSet"

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

	if input == nil {
		input = &CreateListingChangeSetInput{}
	}

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

// CreateListingChangeSet API operation for Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation CreateListingChangeSet for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateListingChangeSet
func (c *DataZone) CreateListingChangeSet(input *CreateListingChangeSetInput) (*CreateListingChangeSetOutput, error) {
	req, out := c.CreateListingChangeSetRequest(input)
	return out, req.Send()
}

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

const opCreateProject = "CreateProject"

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

	if input == nil {
		input = &CreateProjectInput{}
	}

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

// CreateProject API operation for Amazon DataZone.
//
// Creates an Amazon DataZone project.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation CreateProject for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateProject
func (c *DataZone) CreateProject(input *CreateProjectInput) (*CreateProjectOutput, error) {
	req, out := c.CreateProjectRequest(input)
	return out, req.Send()
}

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

const opCreateProjectMembership = "CreateProjectMembership"

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

	if input == nil {
		input = &CreateProjectMembershipInput{}
	}

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

// CreateProjectMembership API operation for Amazon DataZone.
//
// Creates a project membership in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation CreateProjectMembership for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateProjectMembership
func (c *DataZone) CreateProjectMembership(input *CreateProjectMembershipInput) (*CreateProjectMembershipOutput, error) {
	req, out := c.CreateProjectMembershipRequest(input)
	return out, req.Send()
}

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

const opCreateSubscriptionGrant = "CreateSubscriptionGrant"

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

	if input == nil {
		input = &CreateSubscriptionGrantInput{}
	}

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

// CreateSubscriptionGrant API operation for Amazon DataZone.
//
// Creates a subsscription grant in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation CreateSubscriptionGrant for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateSubscriptionGrant
func (c *DataZone) CreateSubscriptionGrant(input *CreateSubscriptionGrantInput) (*CreateSubscriptionGrantOutput, error) {
	req, out := c.CreateSubscriptionGrantRequest(input)
	return out, req.Send()
}

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

const opCreateSubscriptionRequest = "CreateSubscriptionRequest"

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

	if input == nil {
		input = &CreateSubscriptionRequestInput{}
	}

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

// CreateSubscriptionRequest API operation for Amazon DataZone.
//
// Creates a subscription request in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation CreateSubscriptionRequest for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateSubscriptionRequest
func (c *DataZone) CreateSubscriptionRequest(input *CreateSubscriptionRequestInput) (*CreateSubscriptionRequestOutput, error) {
	req, out := c.CreateSubscriptionRequestRequest(input)
	return out, req.Send()
}

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

const opCreateSubscriptionTarget = "CreateSubscriptionTarget"

// CreateSubscriptionTargetRequest generates a "aws/request.Request" representing the
// client's request for the CreateSubscriptionTarget operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See CreateSubscriptionTarget for more information on using the CreateSubscriptionTarget
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the CreateSubscriptionTargetRequest method.
//	req, resp := client.CreateSubscriptionTargetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateSubscriptionTarget
func (c *DataZone) CreateSubscriptionTargetRequest(input *CreateSubscriptionTargetInput) (req *request.Request, output *CreateSubscriptionTargetOutput) {
	op := &request.Operation{
		Name:       opCreateSubscriptionTarget,
		HTTPMethod: "POST",
		HTTPPath:   "/v2/domains/{domainIdentifier}/environments/{environmentIdentifier}/subscription-targets",
	}

	if input == nil {
		input = &CreateSubscriptionTargetInput{}
	}

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

// CreateSubscriptionTarget API operation for Amazon DataZone.
//
// Creates a subscription target in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation CreateSubscriptionTarget for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateSubscriptionTarget
func (c *DataZone) CreateSubscriptionTarget(input *CreateSubscriptionTargetInput) (*CreateSubscriptionTargetOutput, error) {
	req, out := c.CreateSubscriptionTargetRequest(input)
	return out, req.Send()
}

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

const opCreateUserProfile = "CreateUserProfile"

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

	if input == nil {
		input = &CreateUserProfileInput{}
	}

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

// CreateUserProfile API operation for Amazon DataZone.
//
// Creates a user profile in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation CreateUserProfile for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/CreateUserProfile
func (c *DataZone) CreateUserProfile(input *CreateUserProfileInput) (*CreateUserProfileOutput, error) {
	req, out := c.CreateUserProfileRequest(input)
	return out, req.Send()
}

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

const opDeleteAsset = "DeleteAsset"

// DeleteAssetRequest generates a "aws/request.Request" representing the
// client's request for the DeleteAsset operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteAsset for more information on using the DeleteAsset
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteAssetRequest method.
//	req, resp := client.DeleteAssetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteAsset
func (c *DataZone) DeleteAssetRequest(input *DeleteAssetInput) (req *request.Request, output *DeleteAssetOutput) {
	op := &request.Operation{
		Name:       opDeleteAsset,
		HTTPMethod: "DELETE",
		HTTPPath:   "/v2/domains/{domainIdentifier}/assets/{identifier}",
	}

	if input == nil {
		input = &DeleteAssetInput{}
	}

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

// DeleteAsset API operation for Amazon DataZone.
//
// Delets an asset in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation DeleteAsset for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteAsset
func (c *DataZone) DeleteAsset(input *DeleteAssetInput) (*DeleteAssetOutput, error) {
	req, out := c.DeleteAssetRequest(input)
	return out, req.Send()
}

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

const opDeleteAssetType = "DeleteAssetType"

// DeleteAssetTypeRequest generates a "aws/request.Request" representing the
// client's request for the DeleteAssetType operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteAssetType for more information on using the DeleteAssetType
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteAssetTypeRequest method.
//	req, resp := client.DeleteAssetTypeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteAssetType
func (c *DataZone) DeleteAssetTypeRequest(input *DeleteAssetTypeInput) (req *request.Request, output *DeleteAssetTypeOutput) {
	op := &request.Operation{
		Name:       opDeleteAssetType,
		HTTPMethod: "DELETE",
		HTTPPath:   "/v2/domains/{domainIdentifier}/asset-types/{identifier}",
	}

	if input == nil {
		input = &DeleteAssetTypeInput{}
	}

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

// DeleteAssetType API operation for Amazon DataZone.
//
// Deletes an asset type in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation DeleteAssetType for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteAssetType
func (c *DataZone) DeleteAssetType(input *DeleteAssetTypeInput) (*DeleteAssetTypeOutput, error) {
	req, out := c.DeleteAssetTypeRequest(input)
	return out, req.Send()
}

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

const opDeleteDataSource = "DeleteDataSource"

// DeleteDataSourceRequest generates a "aws/request.Request" representing the
// client's request for the DeleteDataSource operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteDataSource for more information on using the DeleteDataSource
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteDataSourceRequest method.
//	req, resp := client.DeleteDataSourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteDataSource
func (c *DataZone) DeleteDataSourceRequest(input *DeleteDataSourceInput) (req *request.Request, output *DeleteDataSourceOutput) {
	op := &request.Operation{
		Name:       opDeleteDataSource,
		HTTPMethod: "DELETE",
		HTTPPath:   "/v2/domains/{domainIdentifier}/data-sources/{identifier}",
	}

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

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

// DeleteDataSource API operation for Amazon DataZone.
//
// Deletes a data source in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation DeleteDataSource for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteDataSource
func (c *DataZone) DeleteDataSource(input *DeleteDataSourceInput) (*DeleteDataSourceOutput, error) {
	req, out := c.DeleteDataSourceRequest(input)
	return out, req.Send()
}

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

const opDeleteDomain = "DeleteDomain"

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

	if input == nil {
		input = &DeleteDomainInput{}
	}

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

// DeleteDomain API operation for Amazon DataZone.
//
// Deletes a Amazon DataZone domain.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation DeleteDomain for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteDomain
func (c *DataZone) DeleteDomain(input *DeleteDomainInput) (*DeleteDomainOutput, error) {
	req, out := c.DeleteDomainRequest(input)
	return out, req.Send()
}

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

const opDeleteEnvironment = "DeleteEnvironment"

// DeleteEnvironmentRequest generates a "aws/request.Request" representing the
// client's request for the DeleteEnvironment operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteEnvironment for more information on using the DeleteEnvironment
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteEnvironmentRequest method.
//	req, resp := client.DeleteEnvironmentRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteEnvironment
func (c *DataZone) DeleteEnvironmentRequest(input *DeleteEnvironmentInput) (req *request.Request, output *DeleteEnvironmentOutput) {
	op := &request.Operation{
		Name:       opDeleteEnvironment,
		HTTPMethod: "DELETE",
		HTTPPath:   "/v2/domains/{domainIdentifier}/environments/{identifier}",
	}

	if input == nil {
		input = &DeleteEnvironmentInput{}
	}

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

// DeleteEnvironment API operation for Amazon DataZone.
//
// Deletes an environment in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation DeleteEnvironment for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteEnvironment
func (c *DataZone) DeleteEnvironment(input *DeleteEnvironmentInput) (*DeleteEnvironmentOutput, error) {
	req, out := c.DeleteEnvironmentRequest(input)
	return out, req.Send()
}

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

const opDeleteEnvironmentBlueprintConfiguration = "DeleteEnvironmentBlueprintConfiguration"

// DeleteEnvironmentBlueprintConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the DeleteEnvironmentBlueprintConfiguration operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteEnvironmentBlueprintConfiguration for more information on using the DeleteEnvironmentBlueprintConfiguration
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteEnvironmentBlueprintConfigurationRequest method.
//	req, resp := client.DeleteEnvironmentBlueprintConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteEnvironmentBlueprintConfiguration
func (c *DataZone) DeleteEnvironmentBlueprintConfigurationRequest(input *DeleteEnvironmentBlueprintConfigurationInput) (req *request.Request, output *DeleteEnvironmentBlueprintConfigurationOutput) {
	op := &request.Operation{
		Name:       opDeleteEnvironmentBlueprintConfiguration,
		HTTPMethod: "DELETE",
		HTTPPath:   "/v2/domains/{domainIdentifier}/environment-blueprint-configurations/{environmentBlueprintIdentifier}",
	}

	if input == nil {
		input = &DeleteEnvironmentBlueprintConfigurationInput{}
	}

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

// DeleteEnvironmentBlueprintConfiguration API operation for Amazon DataZone.
//
// Deletes the blueprint configuration in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation DeleteEnvironmentBlueprintConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteEnvironmentBlueprintConfiguration
func (c *DataZone) DeleteEnvironmentBlueprintConfiguration(input *DeleteEnvironmentBlueprintConfigurationInput) (*DeleteEnvironmentBlueprintConfigurationOutput, error) {
	req, out := c.DeleteEnvironmentBlueprintConfigurationRequest(input)
	return out, req.Send()
}

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

const opDeleteEnvironmentProfile = "DeleteEnvironmentProfile"

// DeleteEnvironmentProfileRequest generates a "aws/request.Request" representing the
// client's request for the DeleteEnvironmentProfile operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteEnvironmentProfile for more information on using the DeleteEnvironmentProfile
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteEnvironmentProfileRequest method.
//	req, resp := client.DeleteEnvironmentProfileRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteEnvironmentProfile
func (c *DataZone) DeleteEnvironmentProfileRequest(input *DeleteEnvironmentProfileInput) (req *request.Request, output *DeleteEnvironmentProfileOutput) {
	op := &request.Operation{
		Name:       opDeleteEnvironmentProfile,
		HTTPMethod: "DELETE",
		HTTPPath:   "/v2/domains/{domainIdentifier}/environment-profiles/{identifier}",
	}

	if input == nil {
		input = &DeleteEnvironmentProfileInput{}
	}

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

// DeleteEnvironmentProfile API operation for Amazon DataZone.
//
// Deletes an environment profile in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation DeleteEnvironmentProfile for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteEnvironmentProfile
func (c *DataZone) DeleteEnvironmentProfile(input *DeleteEnvironmentProfileInput) (*DeleteEnvironmentProfileOutput, error) {
	req, out := c.DeleteEnvironmentProfileRequest(input)
	return out, req.Send()
}

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

const opDeleteFormType = "DeleteFormType"

// DeleteFormTypeRequest generates a "aws/request.Request" representing the
// client's request for the DeleteFormType operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteFormType for more information on using the DeleteFormType
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteFormTypeRequest method.
//	req, resp := client.DeleteFormTypeRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteFormType
func (c *DataZone) DeleteFormTypeRequest(input *DeleteFormTypeInput) (req *request.Request, output *DeleteFormTypeOutput) {
	op := &request.Operation{
		Name:       opDeleteFormType,
		HTTPMethod: "DELETE",
		HTTPPath:   "/v2/domains/{domainIdentifier}/form-types/{formTypeIdentifier}",
	}

	if input == nil {
		input = &DeleteFormTypeInput{}
	}

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

// DeleteFormType API operation for Amazon DataZone.
//
// Delets and metadata form type in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation DeleteFormType for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteFormType
func (c *DataZone) DeleteFormType(input *DeleteFormTypeInput) (*DeleteFormTypeOutput, error) {
	req, out := c.DeleteFormTypeRequest(input)
	return out, req.Send()
}

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

const opDeleteGlossary = "DeleteGlossary"

// DeleteGlossaryRequest generates a "aws/request.Request" representing the
// client's request for the DeleteGlossary operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteGlossary for more information on using the DeleteGlossary
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteGlossaryRequest method.
//	req, resp := client.DeleteGlossaryRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteGlossary
func (c *DataZone) DeleteGlossaryRequest(input *DeleteGlossaryInput) (req *request.Request, output *DeleteGlossaryOutput) {
	op := &request.Operation{
		Name:       opDeleteGlossary,
		HTTPMethod: "DELETE",
		HTTPPath:   "/v2/domains/{domainIdentifier}/glossaries/{identifier}",
	}

	if input == nil {
		input = &DeleteGlossaryInput{}
	}

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

// DeleteGlossary API operation for Amazon DataZone.
//
// Deletes a business glossary in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation DeleteGlossary for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteGlossary
func (c *DataZone) DeleteGlossary(input *DeleteGlossaryInput) (*DeleteGlossaryOutput, error) {
	req, out := c.DeleteGlossaryRequest(input)
	return out, req.Send()
}

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

const opDeleteGlossaryTerm = "DeleteGlossaryTerm"

// DeleteGlossaryTermRequest generates a "aws/request.Request" representing the
// client's request for the DeleteGlossaryTerm operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteGlossaryTerm for more information on using the DeleteGlossaryTerm
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteGlossaryTermRequest method.
//	req, resp := client.DeleteGlossaryTermRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteGlossaryTerm
func (c *DataZone) DeleteGlossaryTermRequest(input *DeleteGlossaryTermInput) (req *request.Request, output *DeleteGlossaryTermOutput) {
	op := &request.Operation{
		Name:       opDeleteGlossaryTerm,
		HTTPMethod: "DELETE",
		HTTPPath:   "/v2/domains/{domainIdentifier}/glossary-terms/{identifier}",
	}

	if input == nil {
		input = &DeleteGlossaryTermInput{}
	}

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

// DeleteGlossaryTerm API operation for Amazon DataZone.
//
// Deletes a business glossary term in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation DeleteGlossaryTerm for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteGlossaryTerm
func (c *DataZone) DeleteGlossaryTerm(input *DeleteGlossaryTermInput) (*DeleteGlossaryTermOutput, error) {
	req, out := c.DeleteGlossaryTermRequest(input)
	return out, req.Send()
}

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

const opDeleteListing = "DeleteListing"

// DeleteListingRequest generates a "aws/request.Request" representing the
// client's request for the DeleteListing operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteListing for more information on using the DeleteListing
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteListingRequest method.
//	req, resp := client.DeleteListingRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteListing
func (c *DataZone) DeleteListingRequest(input *DeleteListingInput) (req *request.Request, output *DeleteListingOutput) {
	op := &request.Operation{
		Name:       opDeleteListing,
		HTTPMethod: "DELETE",
		HTTPPath:   "/v2/domains/{domainIdentifier}/listings/{identifier}",
	}

	if input == nil {
		input = &DeleteListingInput{}
	}

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

// DeleteListing API operation for Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation DeleteListing for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteListing
func (c *DataZone) DeleteListing(input *DeleteListingInput) (*DeleteListingOutput, error) {
	req, out := c.DeleteListingRequest(input)
	return out, req.Send()
}

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

const opDeleteProject = "DeleteProject"

// DeleteProjectRequest generates a "aws/request.Request" representing the
// client's request for the DeleteProject operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteProject for more information on using the DeleteProject
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteProjectRequest method.
//	req, resp := client.DeleteProjectRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteProject
func (c *DataZone) DeleteProjectRequest(input *DeleteProjectInput) (req *request.Request, output *DeleteProjectOutput) {
	op := &request.Operation{
		Name:       opDeleteProject,
		HTTPMethod: "DELETE",
		HTTPPath:   "/v2/domains/{domainIdentifier}/projects/{identifier}",
	}

	if input == nil {
		input = &DeleteProjectInput{}
	}

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

// DeleteProject API operation for Amazon DataZone.
//
// Deletes a project in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation DeleteProject for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteProject
func (c *DataZone) DeleteProject(input *DeleteProjectInput) (*DeleteProjectOutput, error) {
	req, out := c.DeleteProjectRequest(input)
	return out, req.Send()
}

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

const opDeleteProjectMembership = "DeleteProjectMembership"

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

	if input == nil {
		input = &DeleteProjectMembershipInput{}
	}

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

// DeleteProjectMembership API operation for Amazon DataZone.
//
// Deletes project membership in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation DeleteProjectMembership for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteProjectMembership
func (c *DataZone) DeleteProjectMembership(input *DeleteProjectMembershipInput) (*DeleteProjectMembershipOutput, error) {
	req, out := c.DeleteProjectMembershipRequest(input)
	return out, req.Send()
}

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

const opDeleteSubscriptionGrant = "DeleteSubscriptionGrant"

// DeleteSubscriptionGrantRequest generates a "aws/request.Request" representing the
// client's request for the DeleteSubscriptionGrant operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteSubscriptionGrant for more information on using the DeleteSubscriptionGrant
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteSubscriptionGrantRequest method.
//	req, resp := client.DeleteSubscriptionGrantRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteSubscriptionGrant
func (c *DataZone) DeleteSubscriptionGrantRequest(input *DeleteSubscriptionGrantInput) (req *request.Request, output *DeleteSubscriptionGrantOutput) {
	op := &request.Operation{
		Name:       opDeleteSubscriptionGrant,
		HTTPMethod: "DELETE",
		HTTPPath:   "/v2/domains/{domainIdentifier}/subscription-grants/{identifier}",
	}

	if input == nil {
		input = &DeleteSubscriptionGrantInput{}
	}

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

// DeleteSubscriptionGrant API operation for Amazon DataZone.
//
// Deletes and subscription grant in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation DeleteSubscriptionGrant for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteSubscriptionGrant
func (c *DataZone) DeleteSubscriptionGrant(input *DeleteSubscriptionGrantInput) (*DeleteSubscriptionGrantOutput, error) {
	req, out := c.DeleteSubscriptionGrantRequest(input)
	return out, req.Send()
}

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

const opDeleteSubscriptionRequest = "DeleteSubscriptionRequest"

// DeleteSubscriptionRequestRequest generates a "aws/request.Request" representing the
// client's request for the DeleteSubscriptionRequest operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteSubscriptionRequest for more information on using the DeleteSubscriptionRequest
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteSubscriptionRequestRequest method.
//	req, resp := client.DeleteSubscriptionRequestRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteSubscriptionRequest
func (c *DataZone) DeleteSubscriptionRequestRequest(input *DeleteSubscriptionRequestInput) (req *request.Request, output *DeleteSubscriptionRequestOutput) {
	op := &request.Operation{
		Name:       opDeleteSubscriptionRequest,
		HTTPMethod: "DELETE",
		HTTPPath:   "/v2/domains/{domainIdentifier}/subscription-requests/{identifier}",
	}

	if input == nil {
		input = &DeleteSubscriptionRequestInput{}
	}

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

// DeleteSubscriptionRequest API operation for Amazon DataZone.
//
// Deletes a subscription request in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation DeleteSubscriptionRequest for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteSubscriptionRequest
func (c *DataZone) DeleteSubscriptionRequest(input *DeleteSubscriptionRequestInput) (*DeleteSubscriptionRequestOutput, error) {
	req, out := c.DeleteSubscriptionRequestRequest(input)
	return out, req.Send()
}

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

const opDeleteSubscriptionTarget = "DeleteSubscriptionTarget"

// DeleteSubscriptionTargetRequest generates a "aws/request.Request" representing the
// client's request for the DeleteSubscriptionTarget operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteSubscriptionTarget for more information on using the DeleteSubscriptionTarget
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteSubscriptionTargetRequest method.
//	req, resp := client.DeleteSubscriptionTargetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteSubscriptionTarget
func (c *DataZone) DeleteSubscriptionTargetRequest(input *DeleteSubscriptionTargetInput) (req *request.Request, output *DeleteSubscriptionTargetOutput) {
	op := &request.Operation{
		Name:       opDeleteSubscriptionTarget,
		HTTPMethod: "DELETE",
		HTTPPath:   "/v2/domains/{domainIdentifier}/environments/{environmentIdentifier}/subscription-targets/{identifier}",
	}

	if input == nil {
		input = &DeleteSubscriptionTargetInput{}
	}

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

// DeleteSubscriptionTarget API operation for Amazon DataZone.
//
// Deletes a subscription target in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation DeleteSubscriptionTarget for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/DeleteSubscriptionTarget
func (c *DataZone) DeleteSubscriptionTarget(input *DeleteSubscriptionTargetInput) (*DeleteSubscriptionTargetOutput, error) {
	req, out := c.DeleteSubscriptionTargetRequest(input)
	return out, req.Send()
}

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

const opGetAsset = "GetAsset"

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

	if input == nil {
		input = &GetAssetInput{}
	}

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

// GetAsset API operation for Amazon DataZone.
//
// Gets an Amazon DataZone asset.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetAsset for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetAsset
func (c *DataZone) GetAsset(input *GetAssetInput) (*GetAssetOutput, error) {
	req, out := c.GetAssetRequest(input)
	return out, req.Send()
}

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

const opGetAssetType = "GetAssetType"

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

	if input == nil {
		input = &GetAssetTypeInput{}
	}

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

// GetAssetType API operation for Amazon DataZone.
//
// Gets an Amazon DataZone asset 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 Amazon DataZone's
// API operation GetAssetType for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetAssetType
func (c *DataZone) GetAssetType(input *GetAssetTypeInput) (*GetAssetTypeOutput, error) {
	req, out := c.GetAssetTypeRequest(input)
	return out, req.Send()
}

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

const opGetDataSource = "GetDataSource"

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

	if input == nil {
		input = &GetDataSourceInput{}
	}

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

// GetDataSource API operation for Amazon DataZone.
//
// Gets an Amazon DataZone data source.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetDataSource for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetDataSource
func (c *DataZone) GetDataSource(input *GetDataSourceInput) (*GetDataSourceOutput, error) {
	req, out := c.GetDataSourceRequest(input)
	return out, req.Send()
}

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

const opGetDataSourceRun = "GetDataSourceRun"

// GetDataSourceRunRequest generates a "aws/request.Request" representing the
// client's request for the GetDataSourceRun operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetDataSourceRun for more information on using the GetDataSourceRun
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetDataSourceRunRequest method.
//	req, resp := client.GetDataSourceRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetDataSourceRun
func (c *DataZone) GetDataSourceRunRequest(input *GetDataSourceRunInput) (req *request.Request, output *GetDataSourceRunOutput) {
	op := &request.Operation{
		Name:       opGetDataSourceRun,
		HTTPMethod: "GET",
		HTTPPath:   "/v2/domains/{domainIdentifier}/data-source-runs/{identifier}",
	}

	if input == nil {
		input = &GetDataSourceRunInput{}
	}

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

// GetDataSourceRun API operation for Amazon DataZone.
//
// Gets an Amazon DataZone data source 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 Amazon DataZone's
// API operation GetDataSourceRun for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetDataSourceRun
func (c *DataZone) GetDataSourceRun(input *GetDataSourceRunInput) (*GetDataSourceRunOutput, error) {
	req, out := c.GetDataSourceRunRequest(input)
	return out, req.Send()
}

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

const opGetDomain = "GetDomain"

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

	if input == nil {
		input = &GetDomainInput{}
	}

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

// GetDomain API operation for Amazon DataZone.
//
// Gets an Amazon DataZone domain.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetDomain for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetDomain
func (c *DataZone) GetDomain(input *GetDomainInput) (*GetDomainOutput, error) {
	req, out := c.GetDomainRequest(input)
	return out, req.Send()
}

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

const opGetEnvironment = "GetEnvironment"

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

	if input == nil {
		input = &GetEnvironmentInput{}
	}

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

// GetEnvironment API operation for Amazon DataZone.
//
// Gets an Amazon DataZone environment.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetEnvironment for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetEnvironment
func (c *DataZone) GetEnvironment(input *GetEnvironmentInput) (*GetEnvironmentOutput, error) {
	req, out := c.GetEnvironmentRequest(input)
	return out, req.Send()
}

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

const opGetEnvironmentBlueprint = "GetEnvironmentBlueprint"

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

	if input == nil {
		input = &GetEnvironmentBlueprintInput{}
	}

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

// GetEnvironmentBlueprint API operation for Amazon DataZone.
//
// Gets an Amazon DataZone 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 Amazon DataZone's
// API operation GetEnvironmentBlueprint for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetEnvironmentBlueprint
func (c *DataZone) GetEnvironmentBlueprint(input *GetEnvironmentBlueprintInput) (*GetEnvironmentBlueprintOutput, error) {
	req, out := c.GetEnvironmentBlueprintRequest(input)
	return out, req.Send()
}

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

const opGetEnvironmentBlueprintConfiguration = "GetEnvironmentBlueprintConfiguration"

// GetEnvironmentBlueprintConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the GetEnvironmentBlueprintConfiguration operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetEnvironmentBlueprintConfiguration for more information on using the GetEnvironmentBlueprintConfiguration
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetEnvironmentBlueprintConfigurationRequest method.
//	req, resp := client.GetEnvironmentBlueprintConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetEnvironmentBlueprintConfiguration
func (c *DataZone) GetEnvironmentBlueprintConfigurationRequest(input *GetEnvironmentBlueprintConfigurationInput) (req *request.Request, output *GetEnvironmentBlueprintConfigurationOutput) {
	op := &request.Operation{
		Name:       opGetEnvironmentBlueprintConfiguration,
		HTTPMethod: "GET",
		HTTPPath:   "/v2/domains/{domainIdentifier}/environment-blueprint-configurations/{environmentBlueprintIdentifier}",
	}

	if input == nil {
		input = &GetEnvironmentBlueprintConfigurationInput{}
	}

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

// GetEnvironmentBlueprintConfiguration API operation for Amazon DataZone.
//
// Gets the blueprint configuration in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetEnvironmentBlueprintConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetEnvironmentBlueprintConfiguration
func (c *DataZone) GetEnvironmentBlueprintConfiguration(input *GetEnvironmentBlueprintConfigurationInput) (*GetEnvironmentBlueprintConfigurationOutput, error) {
	req, out := c.GetEnvironmentBlueprintConfigurationRequest(input)
	return out, req.Send()
}

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

const opGetEnvironmentProfile = "GetEnvironmentProfile"

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

	if input == nil {
		input = &GetEnvironmentProfileInput{}
	}

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

// GetEnvironmentProfile API operation for Amazon DataZone.
//
// Gets an evinronment profile in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetEnvironmentProfile for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetEnvironmentProfile
func (c *DataZone) GetEnvironmentProfile(input *GetEnvironmentProfileInput) (*GetEnvironmentProfileOutput, error) {
	req, out := c.GetEnvironmentProfileRequest(input)
	return out, req.Send()
}

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

const opGetFormType = "GetFormType"

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

	if input == nil {
		input = &GetFormTypeInput{}
	}

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

// GetFormType API operation for Amazon DataZone.
//
// Gets a metadata form type in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetFormType for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetFormType
func (c *DataZone) GetFormType(input *GetFormTypeInput) (*GetFormTypeOutput, error) {
	req, out := c.GetFormTypeRequest(input)
	return out, req.Send()
}

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

const opGetGlossary = "GetGlossary"

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

	if input == nil {
		input = &GetGlossaryInput{}
	}

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

// GetGlossary API operation for Amazon DataZone.
//
// Gets a business glossary in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetGlossary for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetGlossary
func (c *DataZone) GetGlossary(input *GetGlossaryInput) (*GetGlossaryOutput, error) {
	req, out := c.GetGlossaryRequest(input)
	return out, req.Send()
}

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

const opGetGlossaryTerm = "GetGlossaryTerm"

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

	if input == nil {
		input = &GetGlossaryTermInput{}
	}

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

// GetGlossaryTerm API operation for Amazon DataZone.
//
// Gets a business glossary term in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetGlossaryTerm for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetGlossaryTerm
func (c *DataZone) GetGlossaryTerm(input *GetGlossaryTermInput) (*GetGlossaryTermOutput, error) {
	req, out := c.GetGlossaryTermRequest(input)
	return out, req.Send()
}

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

const opGetGroupProfile = "GetGroupProfile"

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

	if input == nil {
		input = &GetGroupProfileInput{}
	}

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

// GetGroupProfile API operation for Amazon DataZone.
//
// Gets a group profile in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetGroupProfile for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetGroupProfile
func (c *DataZone) GetGroupProfile(input *GetGroupProfileInput) (*GetGroupProfileOutput, error) {
	req, out := c.GetGroupProfileRequest(input)
	return out, req.Send()
}

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

const opGetIamPortalLoginUrl = "GetIamPortalLoginUrl"

// GetIamPortalLoginUrlRequest generates a "aws/request.Request" representing the
// client's request for the GetIamPortalLoginUrl operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetIamPortalLoginUrl for more information on using the GetIamPortalLoginUrl
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetIamPortalLoginUrlRequest method.
//	req, resp := client.GetIamPortalLoginUrlRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetIamPortalLoginUrl
func (c *DataZone) GetIamPortalLoginUrlRequest(input *GetIamPortalLoginUrlInput) (req *request.Request, output *GetIamPortalLoginUrlOutput) {
	op := &request.Operation{
		Name:       opGetIamPortalLoginUrl,
		HTTPMethod: "POST",
		HTTPPath:   "/v2/domains/{domainIdentifier}/get-portal-login-url",
	}

	if input == nil {
		input = &GetIamPortalLoginUrlInput{}
	}

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

// GetIamPortalLoginUrl API operation for Amazon DataZone.
//
// Gets the data portal URL for the specified Amazon DataZone domain.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetIamPortalLoginUrl for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetIamPortalLoginUrl
func (c *DataZone) GetIamPortalLoginUrl(input *GetIamPortalLoginUrlInput) (*GetIamPortalLoginUrlOutput, error) {
	req, out := c.GetIamPortalLoginUrlRequest(input)
	return out, req.Send()
}

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

const opGetListing = "GetListing"

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

	if input == nil {
		input = &GetListingInput{}
	}

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

// GetListing API operation for Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetListing for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetListing
func (c *DataZone) GetListing(input *GetListingInput) (*GetListingOutput, error) {
	req, out := c.GetListingRequest(input)
	return out, req.Send()
}

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

const opGetProject = "GetProject"

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

	if input == nil {
		input = &GetProjectInput{}
	}

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

// GetProject API operation for Amazon DataZone.
//
// Gets a project in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetProject for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetProject
func (c *DataZone) GetProject(input *GetProjectInput) (*GetProjectOutput, error) {
	req, out := c.GetProjectRequest(input)
	return out, req.Send()
}

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

const opGetSubscription = "GetSubscription"

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

	if input == nil {
		input = &GetSubscriptionInput{}
	}

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

// GetSubscription API operation for Amazon DataZone.
//
// Gets a subscription in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetSubscription for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetSubscription
func (c *DataZone) GetSubscription(input *GetSubscriptionInput) (*GetSubscriptionOutput, error) {
	req, out := c.GetSubscriptionRequest(input)
	return out, req.Send()
}

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

const opGetSubscriptionGrant = "GetSubscriptionGrant"

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

	if input == nil {
		input = &GetSubscriptionGrantInput{}
	}

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

// GetSubscriptionGrant API operation for Amazon DataZone.
//
// Gets the subscription grant in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetSubscriptionGrant for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetSubscriptionGrant
func (c *DataZone) GetSubscriptionGrant(input *GetSubscriptionGrantInput) (*GetSubscriptionGrantOutput, error) {
	req, out := c.GetSubscriptionGrantRequest(input)
	return out, req.Send()
}

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

const opGetSubscriptionRequestDetails = "GetSubscriptionRequestDetails"

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

	if input == nil {
		input = &GetSubscriptionRequestDetailsInput{}
	}

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

// GetSubscriptionRequestDetails API operation for Amazon DataZone.
//
// Gets the details of the specified subscription 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 Amazon DataZone's
// API operation GetSubscriptionRequestDetails for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetSubscriptionRequestDetails
func (c *DataZone) GetSubscriptionRequestDetails(input *GetSubscriptionRequestDetailsInput) (*GetSubscriptionRequestDetailsOutput, error) {
	req, out := c.GetSubscriptionRequestDetailsRequest(input)
	return out, req.Send()
}

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

const opGetSubscriptionTarget = "GetSubscriptionTarget"

// GetSubscriptionTargetRequest generates a "aws/request.Request" representing the
// client's request for the GetSubscriptionTarget operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetSubscriptionTarget for more information on using the GetSubscriptionTarget
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetSubscriptionTargetRequest method.
//	req, resp := client.GetSubscriptionTargetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetSubscriptionTarget
func (c *DataZone) GetSubscriptionTargetRequest(input *GetSubscriptionTargetInput) (req *request.Request, output *GetSubscriptionTargetOutput) {
	op := &request.Operation{
		Name:       opGetSubscriptionTarget,
		HTTPMethod: "GET",
		HTTPPath:   "/v2/domains/{domainIdentifier}/environments/{environmentIdentifier}/subscription-targets/{identifier}",
	}

	if input == nil {
		input = &GetSubscriptionTargetInput{}
	}

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

// GetSubscriptionTarget API operation for Amazon DataZone.
//
// Gets the subscription target in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetSubscriptionTarget for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetSubscriptionTarget
func (c *DataZone) GetSubscriptionTarget(input *GetSubscriptionTargetInput) (*GetSubscriptionTargetOutput, error) {
	req, out := c.GetSubscriptionTargetRequest(input)
	return out, req.Send()
}

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

const opGetUserProfile = "GetUserProfile"

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

	if input == nil {
		input = &GetUserProfileInput{}
	}

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

// GetUserProfile API operation for Amazon DataZone.
//
// Gets a user profile in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation GetUserProfile for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/GetUserProfile
func (c *DataZone) GetUserProfile(input *GetUserProfileInput) (*GetUserProfileOutput, error) {
	req, out := c.GetUserProfileRequest(input)
	return out, req.Send()
}

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

const opListAssetRevisions = "ListAssetRevisions"

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

	if input == nil {
		input = &ListAssetRevisionsInput{}
	}

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

// ListAssetRevisions API operation for Amazon DataZone.
//
// Lists the revisions for the asset.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation ListAssetRevisions for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListAssetRevisions
func (c *DataZone) ListAssetRevisions(input *ListAssetRevisionsInput) (*ListAssetRevisionsOutput, error) {
	req, out := c.ListAssetRevisionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListDataSourceRunActivities = "ListDataSourceRunActivities"

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

	if input == nil {
		input = &ListDataSourceRunActivitiesInput{}
	}

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

// ListDataSourceRunActivities API operation for Amazon DataZone.
//
// Lists data source run activities.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation ListDataSourceRunActivities for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListDataSourceRunActivities
func (c *DataZone) ListDataSourceRunActivities(input *ListDataSourceRunActivitiesInput) (*ListDataSourceRunActivitiesOutput, error) {
	req, out := c.ListDataSourceRunActivitiesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListDataSourceRuns = "ListDataSourceRuns"

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

	if input == nil {
		input = &ListDataSourceRunsInput{}
	}

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

// ListDataSourceRuns API operation for Amazon DataZone.
//
// Lists data source runs in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation ListDataSourceRuns for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListDataSourceRuns
func (c *DataZone) ListDataSourceRuns(input *ListDataSourceRunsInput) (*ListDataSourceRunsOutput, error) {
	req, out := c.ListDataSourceRunsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListDataSources = "ListDataSources"

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

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

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

// ListDataSources API operation for Amazon DataZone.
//
// Lists data sources in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation ListDataSources for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListDataSources
func (c *DataZone) ListDataSources(input *ListDataSourcesInput) (*ListDataSourcesOutput, error) {
	req, out := c.ListDataSourcesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListDomains = "ListDomains"

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

	if input == nil {
		input = &ListDomainsInput{}
	}

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

// ListDomains API operation for Amazon DataZone.
//
// Lists Amazon DataZone domains.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation ListDomains for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListDomains
func (c *DataZone) ListDomains(input *ListDomainsInput) (*ListDomainsOutput, error) {
	req, out := c.ListDomainsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListEnvironmentBlueprintConfigurations = "ListEnvironmentBlueprintConfigurations"

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

	if input == nil {
		input = &ListEnvironmentBlueprintConfigurationsInput{}
	}

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

// ListEnvironmentBlueprintConfigurations API operation for Amazon DataZone.
//
// Lists blueprint configurations for a Amazon DataZone environment.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation ListEnvironmentBlueprintConfigurations for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListEnvironmentBlueprintConfigurations
func (c *DataZone) ListEnvironmentBlueprintConfigurations(input *ListEnvironmentBlueprintConfigurationsInput) (*ListEnvironmentBlueprintConfigurationsOutput, error) {
	req, out := c.ListEnvironmentBlueprintConfigurationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListEnvironmentBlueprints = "ListEnvironmentBlueprints"

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

	if input == nil {
		input = &ListEnvironmentBlueprintsInput{}
	}

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

// ListEnvironmentBlueprints API operation for Amazon DataZone.
//
// Lists blueprints in an Amazon DataZone environment.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation ListEnvironmentBlueprints for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListEnvironmentBlueprints
func (c *DataZone) ListEnvironmentBlueprints(input *ListEnvironmentBlueprintsInput) (*ListEnvironmentBlueprintsOutput, error) {
	req, out := c.ListEnvironmentBlueprintsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListEnvironmentProfiles = "ListEnvironmentProfiles"

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

	if input == nil {
		input = &ListEnvironmentProfilesInput{}
	}

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

// ListEnvironmentProfiles API operation for Amazon DataZone.
//
// Lists Amazon DataZone environment 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 Amazon DataZone's
// API operation ListEnvironmentProfiles for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListEnvironmentProfiles
func (c *DataZone) ListEnvironmentProfiles(input *ListEnvironmentProfilesInput) (*ListEnvironmentProfilesOutput, error) {
	req, out := c.ListEnvironmentProfilesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListEnvironments = "ListEnvironments"

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

	if input == nil {
		input = &ListEnvironmentsInput{}
	}

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

// ListEnvironments API operation for Amazon DataZone.
//
// Lists Amazon DataZone environments.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation ListEnvironments for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListEnvironments
func (c *DataZone) ListEnvironments(input *ListEnvironmentsInput) (*ListEnvironmentsOutput, error) {
	req, out := c.ListEnvironmentsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListNotifications = "ListNotifications"

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

	if input == nil {
		input = &ListNotificationsInput{}
	}

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

// ListNotifications API operation for Amazon DataZone.
//
// Lists all Amazon DataZone notifications.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation ListNotifications for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListNotifications
func (c *DataZone) ListNotifications(input *ListNotificationsInput) (*ListNotificationsOutput, error) {
	req, out := c.ListNotificationsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListProjectMemberships = "ListProjectMemberships"

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

	if input == nil {
		input = &ListProjectMembershipsInput{}
	}

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

// ListProjectMemberships API operation for Amazon DataZone.
//
// Lists all members of the specified project.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation ListProjectMemberships for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListProjectMemberships
func (c *DataZone) ListProjectMemberships(input *ListProjectMembershipsInput) (*ListProjectMembershipsOutput, error) {
	req, out := c.ListProjectMembershipsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListProjects = "ListProjects"

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

	if input == nil {
		input = &ListProjectsInput{}
	}

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

// ListProjects API operation for Amazon DataZone.
//
// Lists Amazon DataZone projects.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation ListProjects for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListProjects
func (c *DataZone) ListProjects(input *ListProjectsInput) (*ListProjectsOutput, error) {
	req, out := c.ListProjectsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListSubscriptionGrants = "ListSubscriptionGrants"

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

	if input == nil {
		input = &ListSubscriptionGrantsInput{}
	}

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

// ListSubscriptionGrants API operation for Amazon DataZone.
//
// Lists subscription grants.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation ListSubscriptionGrants for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListSubscriptionGrants
func (c *DataZone) ListSubscriptionGrants(input *ListSubscriptionGrantsInput) (*ListSubscriptionGrantsOutput, error) {
	req, out := c.ListSubscriptionGrantsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListSubscriptionRequests = "ListSubscriptionRequests"

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

	if input == nil {
		input = &ListSubscriptionRequestsInput{}
	}

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

// ListSubscriptionRequests API operation for Amazon DataZone.
//
// Lists Amazon DataZone subscription requests.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation ListSubscriptionRequests for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListSubscriptionRequests
func (c *DataZone) ListSubscriptionRequests(input *ListSubscriptionRequestsInput) (*ListSubscriptionRequestsOutput, error) {
	req, out := c.ListSubscriptionRequestsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListSubscriptionTargets = "ListSubscriptionTargets"

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

	if input == nil {
		input = &ListSubscriptionTargetsInput{}
	}

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

// ListSubscriptionTargets API operation for Amazon DataZone.
//
// Lists subscription targets in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation ListSubscriptionTargets for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListSubscriptionTargets
func (c *DataZone) ListSubscriptionTargets(input *ListSubscriptionTargetsInput) (*ListSubscriptionTargetsOutput, error) {
	req, out := c.ListSubscriptionTargetsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListSubscriptions = "ListSubscriptions"

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

	if input == nil {
		input = &ListSubscriptionsInput{}
	}

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

// ListSubscriptions API operation for Amazon DataZone.
//
// Lists subscriptions in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation ListSubscriptions for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListSubscriptions
func (c *DataZone) ListSubscriptions(input *ListSubscriptionsInput) (*ListSubscriptionsOutput, error) {
	req, out := c.ListSubscriptionsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opListTagsForResource = "ListTagsForResource"

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

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

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

// ListTagsForResource API operation for Amazon DataZone.
//
// Lists tags for the specified resource in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation ListTagsForResource for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/ListTagsForResource
func (c *DataZone) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {
	req, out := c.ListTagsForResourceRequest(input)
	return out, req.Send()
}

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

const opPutEnvironmentBlueprintConfiguration = "PutEnvironmentBlueprintConfiguration"

// PutEnvironmentBlueprintConfigurationRequest generates a "aws/request.Request" representing the
// client's request for the PutEnvironmentBlueprintConfiguration operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See PutEnvironmentBlueprintConfiguration for more information on using the PutEnvironmentBlueprintConfiguration
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the PutEnvironmentBlueprintConfigurationRequest method.
//	req, resp := client.PutEnvironmentBlueprintConfigurationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/PutEnvironmentBlueprintConfiguration
func (c *DataZone) PutEnvironmentBlueprintConfigurationRequest(input *PutEnvironmentBlueprintConfigurationInput) (req *request.Request, output *PutEnvironmentBlueprintConfigurationOutput) {
	op := &request.Operation{
		Name:       opPutEnvironmentBlueprintConfiguration,
		HTTPMethod: "PUT",
		HTTPPath:   "/v2/domains/{domainIdentifier}/environment-blueprint-configurations/{environmentBlueprintIdentifier}",
	}

	if input == nil {
		input = &PutEnvironmentBlueprintConfigurationInput{}
	}

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

// PutEnvironmentBlueprintConfiguration API operation for Amazon DataZone.
//
// Writes the configuration for the specified environment blueprint in Amazon
// DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation PutEnvironmentBlueprintConfiguration for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/PutEnvironmentBlueprintConfiguration
func (c *DataZone) PutEnvironmentBlueprintConfiguration(input *PutEnvironmentBlueprintConfigurationInput) (*PutEnvironmentBlueprintConfigurationOutput, error) {
	req, out := c.PutEnvironmentBlueprintConfigurationRequest(input)
	return out, req.Send()
}

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

const opRejectPredictions = "RejectPredictions"

// RejectPredictionsRequest generates a "aws/request.Request" representing the
// client's request for the RejectPredictions operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See RejectPredictions for more information on using the RejectPredictions
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the RejectPredictionsRequest method.
//	req, resp := client.RejectPredictionsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/RejectPredictions
func (c *DataZone) RejectPredictionsRequest(input *RejectPredictionsInput) (req *request.Request, output *RejectPredictionsOutput) {
	op := &request.Operation{
		Name:       opRejectPredictions,
		HTTPMethod: "PUT",
		HTTPPath:   "/v2/domains/{domainIdentifier}/assets/{identifier}/reject-predictions",
	}

	if input == nil {
		input = &RejectPredictionsInput{}
	}

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

// RejectPredictions API operation for Amazon DataZone.
//
// Rejects automatically generated business-friendly metadata for your Amazon
// DataZone assets.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation RejectPredictions for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/RejectPredictions
func (c *DataZone) RejectPredictions(input *RejectPredictionsInput) (*RejectPredictionsOutput, error) {
	req, out := c.RejectPredictionsRequest(input)
	return out, req.Send()
}

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

const opRejectSubscriptionRequest = "RejectSubscriptionRequest"

// RejectSubscriptionRequestRequest generates a "aws/request.Request" representing the
// client's request for the RejectSubscriptionRequest operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See RejectSubscriptionRequest for more information on using the RejectSubscriptionRequest
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the RejectSubscriptionRequestRequest method.
//	req, resp := client.RejectSubscriptionRequestRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/RejectSubscriptionRequest
func (c *DataZone) RejectSubscriptionRequestRequest(input *RejectSubscriptionRequestInput) (req *request.Request, output *RejectSubscriptionRequestOutput) {
	op := &request.Operation{
		Name:       opRejectSubscriptionRequest,
		HTTPMethod: "PUT",
		HTTPPath:   "/v2/domains/{domainIdentifier}/subscription-requests/{identifier}/reject",
	}

	if input == nil {
		input = &RejectSubscriptionRequestInput{}
	}

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

// RejectSubscriptionRequest API operation for Amazon DataZone.
//
// Rejects the specified subscription 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 Amazon DataZone's
// API operation RejectSubscriptionRequest for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/RejectSubscriptionRequest
func (c *DataZone) RejectSubscriptionRequest(input *RejectSubscriptionRequestInput) (*RejectSubscriptionRequestOutput, error) {
	req, out := c.RejectSubscriptionRequestRequest(input)
	return out, req.Send()
}

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

const opRevokeSubscription = "RevokeSubscription"

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

	if input == nil {
		input = &RevokeSubscriptionInput{}
	}

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

// RevokeSubscription API operation for Amazon DataZone.
//
// Revokes a specified subscription in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation RevokeSubscription for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/RevokeSubscription
func (c *DataZone) RevokeSubscription(input *RevokeSubscriptionInput) (*RevokeSubscriptionOutput, error) {
	req, out := c.RevokeSubscriptionRequest(input)
	return out, req.Send()
}

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

const opSearch = "Search"

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

	if input == nil {
		input = &SearchInput{}
	}

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

// Search API operation for Amazon DataZone.
//
// Searches for assets in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation Search for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/Search
func (c *DataZone) Search(input *SearchInput) (*SearchOutput, error) {
	req, out := c.SearchRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchGroupProfiles = "SearchGroupProfiles"

// SearchGroupProfilesRequest generates a "aws/request.Request" representing the
// client's request for the SearchGroupProfiles operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See SearchGroupProfiles for more information on using the SearchGroupProfiles
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the SearchGroupProfilesRequest method.
//	req, resp := client.SearchGroupProfilesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/SearchGroupProfiles
func (c *DataZone) SearchGroupProfilesRequest(input *SearchGroupProfilesInput) (req *request.Request, output *SearchGroupProfilesOutput) {
	op := &request.Operation{
		Name:       opSearchGroupProfiles,
		HTTPMethod: "POST",
		HTTPPath:   "/v2/domains/{domainIdentifier}/search-group-profiles",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &SearchGroupProfilesInput{}
	}

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

// SearchGroupProfiles API operation for Amazon DataZone.
//
// Searches group profiles in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation SearchGroupProfiles for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/SearchGroupProfiles
func (c *DataZone) SearchGroupProfiles(input *SearchGroupProfilesInput) (*SearchGroupProfilesOutput, error) {
	req, out := c.SearchGroupProfilesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchListings = "SearchListings"

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

	if input == nil {
		input = &SearchListingsInput{}
	}

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

// SearchListings API operation for Amazon DataZone.
//
// Searches listings in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation SearchListings for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/SearchListings
func (c *DataZone) SearchListings(input *SearchListingsInput) (*SearchListingsOutput, error) {
	req, out := c.SearchListingsRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchTypes = "SearchTypes"

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

	if input == nil {
		input = &SearchTypesInput{}
	}

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

// SearchTypes API operation for Amazon DataZone.
//
// Searches for types in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation SearchTypes for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/SearchTypes
func (c *DataZone) SearchTypes(input *SearchTypesInput) (*SearchTypesOutput, error) {
	req, out := c.SearchTypesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opSearchUserProfiles = "SearchUserProfiles"

// SearchUserProfilesRequest generates a "aws/request.Request" representing the
// client's request for the SearchUserProfiles operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See SearchUserProfiles for more information on using the SearchUserProfiles
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the SearchUserProfilesRequest method.
//	req, resp := client.SearchUserProfilesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/SearchUserProfiles
func (c *DataZone) SearchUserProfilesRequest(input *SearchUserProfilesInput) (req *request.Request, output *SearchUserProfilesOutput) {
	op := &request.Operation{
		Name:       opSearchUserProfiles,
		HTTPMethod: "POST",
		HTTPPath:   "/v2/domains/{domainIdentifier}/search-user-profiles",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &SearchUserProfilesInput{}
	}

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

// SearchUserProfiles API operation for Amazon DataZone.
//
// Searches user profiles in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation SearchUserProfiles for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/SearchUserProfiles
func (c *DataZone) SearchUserProfiles(input *SearchUserProfilesInput) (*SearchUserProfilesOutput, error) {
	req, out := c.SearchUserProfilesRequest(input)
	return out, req.Send()
}

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

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

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

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

	return p.Err()
}

const opStartDataSourceRun = "StartDataSourceRun"

// StartDataSourceRunRequest generates a "aws/request.Request" representing the
// client's request for the StartDataSourceRun operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See StartDataSourceRun for more information on using the StartDataSourceRun
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the StartDataSourceRunRequest method.
//	req, resp := client.StartDataSourceRunRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/StartDataSourceRun
func (c *DataZone) StartDataSourceRunRequest(input *StartDataSourceRunInput) (req *request.Request, output *StartDataSourceRunOutput) {
	op := &request.Operation{
		Name:       opStartDataSourceRun,
		HTTPMethod: "POST",
		HTTPPath:   "/v2/domains/{domainIdentifier}/data-sources/{dataSourceIdentifier}/runs",
	}

	if input == nil {
		input = &StartDataSourceRunInput{}
	}

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

// StartDataSourceRun API operation for Amazon DataZone.
//
// Start the run of the specified data source in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation StartDataSourceRun for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/StartDataSourceRun
func (c *DataZone) StartDataSourceRun(input *StartDataSourceRunInput) (*StartDataSourceRunOutput, error) {
	req, out := c.StartDataSourceRunRequest(input)
	return out, req.Send()
}

// StartDataSourceRunWithContext is the same as StartDataSourceRun with the addition of
// the ability to pass a context and additional request options.
//
// See StartDataSourceRun for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *DataZone) StartDataSourceRunWithContext(ctx aws.Context, input *StartDataSourceRunInput, opts ...request.Option) (*StartDataSourceRunOutput, error) {
	req, out := c.StartDataSourceRunRequest(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/datazone-2018-05-10/TagResource
func (c *DataZone) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
	op := &request.Operation{
		Name:       opTagResource,
		HTTPMethod: "POST",
		HTTPPath:   "/tags/{resourceArn}",
	}

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

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

// TagResource API operation for Amazon DataZone.
//
// Tags a resource in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation TagResource for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/TagResource
func (c *DataZone) 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 *DataZone) 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/datazone-2018-05-10/UntagResource
func (c *DataZone) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
	op := &request.Operation{
		Name:       opUntagResource,
		HTTPMethod: "DELETE",
		HTTPPath:   "/tags/{resourceArn}",
	}

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

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

// UntagResource API operation for Amazon DataZone.
//
// Untags a resource in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation UntagResource for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UntagResource
func (c *DataZone) 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 *DataZone) 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 opUpdateDataSource = "UpdateDataSource"

// UpdateDataSourceRequest generates a "aws/request.Request" representing the
// client's request for the UpdateDataSource operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateDataSource for more information on using the UpdateDataSource
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateDataSourceRequest method.
//	req, resp := client.UpdateDataSourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateDataSource
func (c *DataZone) UpdateDataSourceRequest(input *UpdateDataSourceInput) (req *request.Request, output *UpdateDataSourceOutput) {
	op := &request.Operation{
		Name:       opUpdateDataSource,
		HTTPMethod: "PATCH",
		HTTPPath:   "/v2/domains/{domainIdentifier}/data-sources/{identifier}",
	}

	if input == nil {
		input = &UpdateDataSourceInput{}
	}

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

// UpdateDataSource API operation for Amazon DataZone.
//
// Updates the specified data source in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation UpdateDataSource for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateDataSource
func (c *DataZone) UpdateDataSource(input *UpdateDataSourceInput) (*UpdateDataSourceOutput, error) {
	req, out := c.UpdateDataSourceRequest(input)
	return out, req.Send()
}

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

const opUpdateDomain = "UpdateDomain"

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

	if input == nil {
		input = &UpdateDomainInput{}
	}

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

// UpdateDomain API operation for Amazon DataZone.
//
// Updates a Amazon DataZone domain.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation UpdateDomain for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateDomain
func (c *DataZone) UpdateDomain(input *UpdateDomainInput) (*UpdateDomainOutput, error) {
	req, out := c.UpdateDomainRequest(input)
	return out, req.Send()
}

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

const opUpdateEnvironment = "UpdateEnvironment"

// UpdateEnvironmentRequest generates a "aws/request.Request" representing the
// client's request for the UpdateEnvironment operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateEnvironment for more information on using the UpdateEnvironment
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateEnvironmentRequest method.
//	req, resp := client.UpdateEnvironmentRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateEnvironment
func (c *DataZone) UpdateEnvironmentRequest(input *UpdateEnvironmentInput) (req *request.Request, output *UpdateEnvironmentOutput) {
	op := &request.Operation{
		Name:       opUpdateEnvironment,
		HTTPMethod: "PATCH",
		HTTPPath:   "/v2/domains/{domainIdentifier}/environments/{identifier}",
	}

	if input == nil {
		input = &UpdateEnvironmentInput{}
	}

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

// UpdateEnvironment API operation for Amazon DataZone.
//
// Updates the specified environment in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation UpdateEnvironment for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateEnvironment
func (c *DataZone) UpdateEnvironment(input *UpdateEnvironmentInput) (*UpdateEnvironmentOutput, error) {
	req, out := c.UpdateEnvironmentRequest(input)
	return out, req.Send()
}

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

const opUpdateEnvironmentProfile = "UpdateEnvironmentProfile"

// UpdateEnvironmentProfileRequest generates a "aws/request.Request" representing the
// client's request for the UpdateEnvironmentProfile operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateEnvironmentProfile for more information on using the UpdateEnvironmentProfile
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateEnvironmentProfileRequest method.
//	req, resp := client.UpdateEnvironmentProfileRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateEnvironmentProfile
func (c *DataZone) UpdateEnvironmentProfileRequest(input *UpdateEnvironmentProfileInput) (req *request.Request, output *UpdateEnvironmentProfileOutput) {
	op := &request.Operation{
		Name:       opUpdateEnvironmentProfile,
		HTTPMethod: "PATCH",
		HTTPPath:   "/v2/domains/{domainIdentifier}/environment-profiles/{identifier}",
	}

	if input == nil {
		input = &UpdateEnvironmentProfileInput{}
	}

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

// UpdateEnvironmentProfile API operation for Amazon DataZone.
//
// Updates the specified environment profile in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation UpdateEnvironmentProfile for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateEnvironmentProfile
func (c *DataZone) UpdateEnvironmentProfile(input *UpdateEnvironmentProfileInput) (*UpdateEnvironmentProfileOutput, error) {
	req, out := c.UpdateEnvironmentProfileRequest(input)
	return out, req.Send()
}

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

const opUpdateGlossary = "UpdateGlossary"

// UpdateGlossaryRequest generates a "aws/request.Request" representing the
// client's request for the UpdateGlossary operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateGlossary for more information on using the UpdateGlossary
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateGlossaryRequest method.
//	req, resp := client.UpdateGlossaryRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateGlossary
func (c *DataZone) UpdateGlossaryRequest(input *UpdateGlossaryInput) (req *request.Request, output *UpdateGlossaryOutput) {
	op := &request.Operation{
		Name:       opUpdateGlossary,
		HTTPMethod: "PATCH",
		HTTPPath:   "/v2/domains/{domainIdentifier}/glossaries/{identifier}",
	}

	if input == nil {
		input = &UpdateGlossaryInput{}
	}

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

// UpdateGlossary API operation for Amazon DataZone.
//
// Updates the business glossary in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation UpdateGlossary for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateGlossary
func (c *DataZone) UpdateGlossary(input *UpdateGlossaryInput) (*UpdateGlossaryOutput, error) {
	req, out := c.UpdateGlossaryRequest(input)
	return out, req.Send()
}

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

const opUpdateGlossaryTerm = "UpdateGlossaryTerm"

// UpdateGlossaryTermRequest generates a "aws/request.Request" representing the
// client's request for the UpdateGlossaryTerm operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateGlossaryTerm for more information on using the UpdateGlossaryTerm
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateGlossaryTermRequest method.
//	req, resp := client.UpdateGlossaryTermRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateGlossaryTerm
func (c *DataZone) UpdateGlossaryTermRequest(input *UpdateGlossaryTermInput) (req *request.Request, output *UpdateGlossaryTermOutput) {
	op := &request.Operation{
		Name:       opUpdateGlossaryTerm,
		HTTPMethod: "PATCH",
		HTTPPath:   "/v2/domains/{domainIdentifier}/glossary-terms/{identifier}",
	}

	if input == nil {
		input = &UpdateGlossaryTermInput{}
	}

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

// UpdateGlossaryTerm API operation for Amazon DataZone.
//
// Updates a business glossary term in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation UpdateGlossaryTerm for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateGlossaryTerm
func (c *DataZone) UpdateGlossaryTerm(input *UpdateGlossaryTermInput) (*UpdateGlossaryTermOutput, error) {
	req, out := c.UpdateGlossaryTermRequest(input)
	return out, req.Send()
}

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

const opUpdateGroupProfile = "UpdateGroupProfile"

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

	if input == nil {
		input = &UpdateGroupProfileInput{}
	}

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

// UpdateGroupProfile API operation for Amazon DataZone.
//
// Updates the specified group profile in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation UpdateGroupProfile for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateGroupProfile
func (c *DataZone) UpdateGroupProfile(input *UpdateGroupProfileInput) (*UpdateGroupProfileOutput, error) {
	req, out := c.UpdateGroupProfileRequest(input)
	return out, req.Send()
}

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

const opUpdateProject = "UpdateProject"

// UpdateProjectRequest generates a "aws/request.Request" representing the
// client's request for the UpdateProject operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateProject for more information on using the UpdateProject
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateProjectRequest method.
//	req, resp := client.UpdateProjectRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateProject
func (c *DataZone) UpdateProjectRequest(input *UpdateProjectInput) (req *request.Request, output *UpdateProjectOutput) {
	op := &request.Operation{
		Name:       opUpdateProject,
		HTTPMethod: "PATCH",
		HTTPPath:   "/v2/domains/{domainIdentifier}/projects/{identifier}",
	}

	if input == nil {
		input = &UpdateProjectInput{}
	}

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

// UpdateProject API operation for Amazon DataZone.
//
// Updates the specified project in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation UpdateProject for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ServiceQuotaExceededException
//     The request has exceeded the specified service quota.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateProject
func (c *DataZone) UpdateProject(input *UpdateProjectInput) (*UpdateProjectOutput, error) {
	req, out := c.UpdateProjectRequest(input)
	return out, req.Send()
}

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

const opUpdateSubscriptionGrantStatus = "UpdateSubscriptionGrantStatus"

// UpdateSubscriptionGrantStatusRequest generates a "aws/request.Request" representing the
// client's request for the UpdateSubscriptionGrantStatus operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateSubscriptionGrantStatus for more information on using the UpdateSubscriptionGrantStatus
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateSubscriptionGrantStatusRequest method.
//	req, resp := client.UpdateSubscriptionGrantStatusRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateSubscriptionGrantStatus
func (c *DataZone) UpdateSubscriptionGrantStatusRequest(input *UpdateSubscriptionGrantStatusInput) (req *request.Request, output *UpdateSubscriptionGrantStatusOutput) {
	op := &request.Operation{
		Name:       opUpdateSubscriptionGrantStatus,
		HTTPMethod: "PATCH",
		HTTPPath:   "/v2/domains/{domainIdentifier}/subscription-grants/{identifier}/status/{assetIdentifier}",
	}

	if input == nil {
		input = &UpdateSubscriptionGrantStatusInput{}
	}

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

// UpdateSubscriptionGrantStatus API operation for Amazon DataZone.
//
// Updates the status of the specified subscription grant status in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation UpdateSubscriptionGrantStatus for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateSubscriptionGrantStatus
func (c *DataZone) UpdateSubscriptionGrantStatus(input *UpdateSubscriptionGrantStatusInput) (*UpdateSubscriptionGrantStatusOutput, error) {
	req, out := c.UpdateSubscriptionGrantStatusRequest(input)
	return out, req.Send()
}

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

const opUpdateSubscriptionRequest = "UpdateSubscriptionRequest"

// UpdateSubscriptionRequestRequest generates a "aws/request.Request" representing the
// client's request for the UpdateSubscriptionRequest operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateSubscriptionRequest for more information on using the UpdateSubscriptionRequest
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateSubscriptionRequestRequest method.
//	req, resp := client.UpdateSubscriptionRequestRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateSubscriptionRequest
func (c *DataZone) UpdateSubscriptionRequestRequest(input *UpdateSubscriptionRequestInput) (req *request.Request, output *UpdateSubscriptionRequestOutput) {
	op := &request.Operation{
		Name:       opUpdateSubscriptionRequest,
		HTTPMethod: "PATCH",
		HTTPPath:   "/v2/domains/{domainIdentifier}/subscription-requests/{identifier}",
	}

	if input == nil {
		input = &UpdateSubscriptionRequestInput{}
	}

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

// UpdateSubscriptionRequest API operation for Amazon DataZone.
//
// Updates a specified subscription request in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation UpdateSubscriptionRequest for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateSubscriptionRequest
func (c *DataZone) UpdateSubscriptionRequest(input *UpdateSubscriptionRequestInput) (*UpdateSubscriptionRequestOutput, error) {
	req, out := c.UpdateSubscriptionRequestRequest(input)
	return out, req.Send()
}

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

const opUpdateSubscriptionTarget = "UpdateSubscriptionTarget"

// UpdateSubscriptionTargetRequest generates a "aws/request.Request" representing the
// client's request for the UpdateSubscriptionTarget operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateSubscriptionTarget for more information on using the UpdateSubscriptionTarget
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateSubscriptionTargetRequest method.
//	req, resp := client.UpdateSubscriptionTargetRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateSubscriptionTarget
func (c *DataZone) UpdateSubscriptionTargetRequest(input *UpdateSubscriptionTargetInput) (req *request.Request, output *UpdateSubscriptionTargetOutput) {
	op := &request.Operation{
		Name:       opUpdateSubscriptionTarget,
		HTTPMethod: "PATCH",
		HTTPPath:   "/v2/domains/{domainIdentifier}/environments/{environmentIdentifier}/subscription-targets/{identifier}",
	}

	if input == nil {
		input = &UpdateSubscriptionTargetInput{}
	}

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

// UpdateSubscriptionTarget API operation for Amazon DataZone.
//
// Updates the specified subscription target in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation UpdateSubscriptionTarget for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ConflictException
//     There is a conflict while performing this action.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateSubscriptionTarget
func (c *DataZone) UpdateSubscriptionTarget(input *UpdateSubscriptionTargetInput) (*UpdateSubscriptionTargetOutput, error) {
	req, out := c.UpdateSubscriptionTargetRequest(input)
	return out, req.Send()
}

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

const opUpdateUserProfile = "UpdateUserProfile"

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

	if input == nil {
		input = &UpdateUserProfileInput{}
	}

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

// UpdateUserProfile API operation for Amazon DataZone.
//
// Updates the specified user profile in Amazon DataZone.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for Amazon DataZone's
// API operation UpdateUserProfile for usage and error information.
//
// Returned Error Types:
//
//   - InternalServerException
//     The request has failed because of an unknown error, exception or failure.
//
//   - ResourceNotFoundException
//     The specified resource cannot be found.
//
//   - AccessDeniedException
//     You do not have sufficient access to perform this action.
//
//   - ThrottlingException
//     The request was denied due to request throttling.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by the Amazon Web Services
//     service.
//
//   - UnauthorizedException
//     You do not have permission to perform this action.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/datazone-2018-05-10/UpdateUserProfile
func (c *DataZone) UpdateUserProfile(input *UpdateUserProfileInput) (*UpdateUserProfileOutput, error) {
	req, out := c.UpdateUserProfileRequest(input)
	return out, req.Send()
}

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

// Specifies the prediction (aka, the automatically generated piece of metadata)
// and the target (for example, a column name) that can be accepted.
type AcceptChoice struct {
	_ struct{} `type:"structure"`

	// Specifies the prediction (aka, the automatically generated piece of metadata)
	// that can be accepted.
	PredictionChoice *int64 `locationName:"predictionChoice" type:"integer"`

	// Specifies the target (for example, a column name) where a prediction can
	// be accepted.
	PredictionTarget *string `locationName:"predictionTarget" type:"string"`
}

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

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

// SetPredictionChoice sets the PredictionChoice field's value.
func (s *AcceptChoice) SetPredictionChoice(v int64) *AcceptChoice {
	s.PredictionChoice = &v
	return s
}

// SetPredictionTarget sets the PredictionTarget field's value.
func (s *AcceptChoice) SetPredictionTarget(v string) *AcceptChoice {
	s.PredictionTarget = &v
	return s
}

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

	AcceptChoices []*AcceptChoice `locationName:"acceptChoices" type:"list"`

	// Specifies the rule (or the conditions) under which a prediction can be accepted.
	AcceptRule *AcceptRule `locationName:"acceptRule" type:"structure"`

	// A unique, case-sensitive identifier to ensure idempotency of the request.
	// This field is automatically populated if not provided.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The identifier of the Amazon DataZone domain.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	Revision *string `location:"querystring" locationName:"revision" 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 AcceptPredictionsInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetAcceptChoices sets the AcceptChoices field's value.
func (s *AcceptPredictionsInput) SetAcceptChoices(v []*AcceptChoice) *AcceptPredictionsInput {
	s.AcceptChoices = v
	return s
}

// SetAcceptRule sets the AcceptRule field's value.
func (s *AcceptPredictionsInput) SetAcceptRule(v *AcceptRule) *AcceptPredictionsInput {
	s.AcceptRule = v
	return s
}

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *AcceptPredictionsInput) SetDomainIdentifier(v string) *AcceptPredictionsInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *AcceptPredictionsInput) SetIdentifier(v string) *AcceptPredictionsInput {
	s.Identifier = &v
	return s
}

// SetRevision sets the Revision field's value.
func (s *AcceptPredictionsInput) SetRevision(v string) *AcceptPredictionsInput {
	s.Revision = &v
	return s
}

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

	// AssetId is a required field
	AssetId *string `locationName:"assetId" type:"string" required:"true"`

	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// Revision is a required field
	Revision *string `locationName:"revision" 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 AcceptPredictionsOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAssetId sets the AssetId field's value.
func (s *AcceptPredictionsOutput) SetAssetId(v string) *AcceptPredictionsOutput {
	s.AssetId = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *AcceptPredictionsOutput) SetDomainId(v string) *AcceptPredictionsOutput {
	s.DomainId = &v
	return s
}

// SetRevision sets the Revision field's value.
func (s *AcceptPredictionsOutput) SetRevision(v string) *AcceptPredictionsOutput {
	s.Revision = &v
	return s
}

// Specifies the rule and the threshold under which a prediction can be accepted.
type AcceptRule struct {
	_ struct{} `type:"structure"`

	// Specifies whether you want to accept the top prediction for all targets or
	// none.
	Rule *string `locationName:"rule" type:"string" enum:"AcceptRuleBehavior"`

	// The confidence score that specifies the condition at which a prediction can
	// be accepted.
	Threshold *float64 `locationName:"threshold" type:"float"`
}

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

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

// SetRule sets the Rule field's value.
func (s *AcceptRule) SetRule(v string) *AcceptRule {
	s.Rule = &v
	return s
}

// SetThreshold sets the Threshold field's value.
func (s *AcceptRule) SetThreshold(v float64) *AcceptRule {
	s.Threshold = &v
	return s
}

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

	// A description that specifies the reason for accepting the specified subscription
	// request.
	//
	// DecisionComment is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AcceptSubscriptionRequestInput's
	// String and GoString methods.
	DecisionComment *string `locationName:"decisionComment" min:"1" type:"string" sensitive:"true"`

	// The Amazon DataZone domain where the specified subscription request is being
	// accepted.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The unique identifier of the subscription request that is to be accepted.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

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

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

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

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

// SetDecisionComment sets the DecisionComment field's value.
func (s *AcceptSubscriptionRequestInput) SetDecisionComment(v string) *AcceptSubscriptionRequestInput {
	s.DecisionComment = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *AcceptSubscriptionRequestInput) SetDomainIdentifier(v string) *AcceptSubscriptionRequestInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *AcceptSubscriptionRequestInput) SetIdentifier(v string) *AcceptSubscriptionRequestInput {
	s.Identifier = &v
	return s
}

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

	// The timestamp that specifies when the subscription request was accepted.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// Specifies the Amazon DataZone user that accepted the specified subscription
	// request.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// Specifies the reason for accepting the subscription request.
	//
	// DecisionComment is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AcceptSubscriptionRequestOutput's
	// String and GoString methods.
	DecisionComment *string `locationName:"decisionComment" min:"1" type:"string" sensitive:"true"`

	// The unique identifier of the Amazon DataZone domain where the specified subscription
	// request was accepted.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of the subscription request.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// Specifies the reason for requesting a subscription to the asset.
	//
	// RequestReason is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AcceptSubscriptionRequestOutput's
	// String and GoString methods.
	//
	// RequestReason is a required field
	RequestReason *string `locationName:"requestReason" min:"1" type:"string" required:"true" sensitive:"true"`

	// Specifes the ID of the Amazon DataZone user who reviewed the subscription
	// request.
	ReviewerId *string `locationName:"reviewerId" type:"string"`

	// Specifies the status of the subscription request.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionRequestStatus"`

	// Specifies the asset for which the subscription request was created.
	//
	// SubscribedListings is a required field
	SubscribedListings []*SubscribedListing `locationName:"subscribedListings" min:"1" type:"list" required:"true"`

	// Specifies the Amazon DataZone users who are subscribed to the asset specified
	// in the subscription request.
	//
	// SubscribedPrincipals is a required field
	SubscribedPrincipals []*SubscribedPrincipal `locationName:"subscribedPrincipals" min:"1" type:"list" required:"true"`

	// Specifies the timestamp when subscription request was updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" required:"true"`

	// Specifies the Amazon DataZone user who updated the subscription request.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

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

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *AcceptSubscriptionRequestOutput) SetCreatedAt(v time.Time) *AcceptSubscriptionRequestOutput {
	s.CreatedAt = &v
	return s
}

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

// SetDecisionComment sets the DecisionComment field's value.
func (s *AcceptSubscriptionRequestOutput) SetDecisionComment(v string) *AcceptSubscriptionRequestOutput {
	s.DecisionComment = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *AcceptSubscriptionRequestOutput) SetDomainId(v string) *AcceptSubscriptionRequestOutput {
	s.DomainId = &v
	return s
}

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

// SetRequestReason sets the RequestReason field's value.
func (s *AcceptSubscriptionRequestOutput) SetRequestReason(v string) *AcceptSubscriptionRequestOutput {
	s.RequestReason = &v
	return s
}

// SetReviewerId sets the ReviewerId field's value.
func (s *AcceptSubscriptionRequestOutput) SetReviewerId(v string) *AcceptSubscriptionRequestOutput {
	s.ReviewerId = &v
	return s
}

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

// SetSubscribedListings sets the SubscribedListings field's value.
func (s *AcceptSubscriptionRequestOutput) SetSubscribedListings(v []*SubscribedListing) *AcceptSubscriptionRequestOutput {
	s.SubscribedListings = v
	return s
}

// SetSubscribedPrincipals sets the SubscribedPrincipals field's value.
func (s *AcceptSubscriptionRequestOutput) SetSubscribedPrincipals(v []*SubscribedPrincipal) *AcceptSubscriptionRequestOutput {
	s.SubscribedPrincipals = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *AcceptSubscriptionRequestOutput) SetUpdatedAt(v time.Time) *AcceptSubscriptionRequestOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *AcceptSubscriptionRequestOutput) SetUpdatedBy(v string) *AcceptSubscriptionRequestOutput {
	s.UpdatedBy = &v
	return s
}

// You do not have sufficient access to perform this action.
type AccessDeniedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s 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
}

// A Amazon DataZone inventory asset.
type AssetItem struct {
	_ struct{} `type:"structure"`

	// The additional attributes of a Amazon DataZone inventory asset.
	AdditionalAttributes *AssetItemAdditionalAttributes `locationName:"additionalAttributes" type:"structure"`

	// The timestamp of when the Amazon DataZone inventory asset was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The Amazon DataZone user who created the inventory asset.
	CreatedBy *string `locationName:"createdBy" type:"string"`

	// The description of an Amazon DataZone inventory asset.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssetItem's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which the inventory asset
	// exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The external identifier of the Amazon DataZone inventory asset.
	//
	// ExternalIdentifier is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssetItem's
	// String and GoString methods.
	ExternalIdentifier *string `locationName:"externalIdentifier" min:"1" type:"string" sensitive:"true"`

	// The timestamp of when the first revision of the inventory asset was created.
	FirstRevisionCreatedAt *time.Time `locationName:"firstRevisionCreatedAt" type:"timestamp"`

	// The Amazon DataZone user who created the first revision of the inventory
	// asset.
	FirstRevisionCreatedBy *string `locationName:"firstRevisionCreatedBy" type:"string"`

	// The glossary terms attached to the Amazon DataZone inventory asset.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// the identifier of the Amazon DataZone inventory asset.
	//
	// Identifier is a required field
	Identifier *string `locationName:"identifier" type:"string" required:"true"`

	// The name of the Amazon DataZone inventory asset.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssetItem's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The identifier of the Amazon DataZone project that owns the inventory asset.
	//
	// OwningProjectId is a required field
	OwningProjectId *string `locationName:"owningProjectId" type:"string" required:"true"`

	// The identifier of the asset type of the specified Amazon DataZone inventory
	// asset.
	//
	// TypeIdentifier is a required field
	TypeIdentifier *string `locationName:"typeIdentifier" min:"1" type:"string" required:"true"`

	// The revision of the inventory asset type.
	//
	// TypeRevision is a required field
	TypeRevision *string `locationName:"typeRevision" 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 AssetItem) String() string {
	return awsutil.Prettify(s)
}

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

// SetAdditionalAttributes sets the AdditionalAttributes field's value.
func (s *AssetItem) SetAdditionalAttributes(v *AssetItemAdditionalAttributes) *AssetItem {
	s.AdditionalAttributes = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *AssetItem) SetCreatedAt(v time.Time) *AssetItem {
	s.CreatedAt = &v
	return s
}

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

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

// SetDomainId sets the DomainId field's value.
func (s *AssetItem) SetDomainId(v string) *AssetItem {
	s.DomainId = &v
	return s
}

// SetExternalIdentifier sets the ExternalIdentifier field's value.
func (s *AssetItem) SetExternalIdentifier(v string) *AssetItem {
	s.ExternalIdentifier = &v
	return s
}

// SetFirstRevisionCreatedAt sets the FirstRevisionCreatedAt field's value.
func (s *AssetItem) SetFirstRevisionCreatedAt(v time.Time) *AssetItem {
	s.FirstRevisionCreatedAt = &v
	return s
}

// SetFirstRevisionCreatedBy sets the FirstRevisionCreatedBy field's value.
func (s *AssetItem) SetFirstRevisionCreatedBy(v string) *AssetItem {
	s.FirstRevisionCreatedBy = &v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *AssetItem) SetGlossaryTerms(v []*string) *AssetItem {
	s.GlossaryTerms = v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *AssetItem) SetIdentifier(v string) *AssetItem {
	s.Identifier = &v
	return s
}

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

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *AssetItem) SetOwningProjectId(v string) *AssetItem {
	s.OwningProjectId = &v
	return s
}

// SetTypeIdentifier sets the TypeIdentifier field's value.
func (s *AssetItem) SetTypeIdentifier(v string) *AssetItem {
	s.TypeIdentifier = &v
	return s
}

// SetTypeRevision sets the TypeRevision field's value.
func (s *AssetItem) SetTypeRevision(v string) *AssetItem {
	s.TypeRevision = &v
	return s
}

// The additional attributes of an inventory asset.
type AssetItemAdditionalAttributes struct {
	_ struct{} `type:"structure"`

	// The forms included in the additional attributes of an inventory asset.
	FormsOutput []*FormOutput_ `locationName:"formsOutput" type:"list"`

	// The read-only forms included in the additional attributes of an inventory
	// asset.
	ReadOnlyFormsOutput []*FormOutput_ `locationName:"readOnlyFormsOutput" 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 AssetItemAdditionalAttributes) String() string {
	return awsutil.Prettify(s)
}

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

// SetFormsOutput sets the FormsOutput field's value.
func (s *AssetItemAdditionalAttributes) SetFormsOutput(v []*FormOutput_) *AssetItemAdditionalAttributes {
	s.FormsOutput = v
	return s
}

// SetReadOnlyFormsOutput sets the ReadOnlyFormsOutput field's value.
func (s *AssetItemAdditionalAttributes) SetReadOnlyFormsOutput(v []*FormOutput_) *AssetItemAdditionalAttributes {
	s.ReadOnlyFormsOutput = v
	return s
}

// An asset published in an Amazon DataZone catalog.
type AssetListing struct {
	_ struct{} `type:"structure"`

	// The identifier of an asset published in an Amazon DataZone catalog.
	AssetId *string `locationName:"assetId" type:"string"`

	// The revision of an asset published in an Amazon DataZone catalog.
	AssetRevision *string `locationName:"assetRevision" min:"1" type:"string"`

	// The type of an asset published in an Amazon DataZone catalog.
	AssetType *string `locationName:"assetType" min:"1" type:"string"`

	// The timestamp of when an asset published in an Amazon DataZone catalog was
	// created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The metadata forms attached to an asset published in an Amazon DataZone catalog.
	Forms *string `locationName:"forms" type:"string"`

	// The glossary terms attached to an asset published in an Amazon DataZone catalog.
	GlossaryTerms []*DetailedGlossaryTerm `locationName:"glossaryTerms" type:"list"`

	// The identifier of the project where an asset published in an Amazon DataZone
	// catalog exists.
	OwningProjectId *string `locationName:"owningProjectId" type:"string"`
}

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

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

// SetAssetId sets the AssetId field's value.
func (s *AssetListing) SetAssetId(v string) *AssetListing {
	s.AssetId = &v
	return s
}

// SetAssetRevision sets the AssetRevision field's value.
func (s *AssetListing) SetAssetRevision(v string) *AssetListing {
	s.AssetRevision = &v
	return s
}

// SetAssetType sets the AssetType field's value.
func (s *AssetListing) SetAssetType(v string) *AssetListing {
	s.AssetType = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *AssetListing) SetCreatedAt(v time.Time) *AssetListing {
	s.CreatedAt = &v
	return s
}

// SetForms sets the Forms field's value.
func (s *AssetListing) SetForms(v string) *AssetListing {
	s.Forms = &v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *AssetListing) SetGlossaryTerms(v []*DetailedGlossaryTerm) *AssetListing {
	s.GlossaryTerms = v
	return s
}

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *AssetListing) SetOwningProjectId(v string) *AssetListing {
	s.OwningProjectId = &v
	return s
}

// The details of an asset published in an Amazon DataZone catalog.
type AssetListingDetails struct {
	_ struct{} `type:"structure"`

	// The identifier of an asset published in an Amazon DataZone catalog.
	//
	// ListingId is a required field
	ListingId *string `locationName:"listingId" type:"string" required:"true"`

	// The status of an asset published in an Amazon DataZone catalog.
	//
	// ListingStatus is a required field
	ListingStatus *string `locationName:"listingStatus" type:"string" required:"true" enum:"ListingStatus"`
}

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

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

// SetListingId sets the ListingId field's value.
func (s *AssetListingDetails) SetListingId(v string) *AssetListingDetails {
	s.ListingId = &v
	return s
}

// SetListingStatus sets the ListingStatus field's value.
func (s *AssetListingDetails) SetListingStatus(v string) *AssetListingDetails {
	s.ListingStatus = &v
	return s
}

// The details of an asset published in an Amazon DataZone catalog.
type AssetListingItem struct {
	_ struct{} `type:"structure"`

	// The additional attributes of an asset published in an Amazon DataZone catalog.
	AdditionalAttributes *AssetListingItemAdditionalAttributes `locationName:"additionalAttributes" type:"structure"`

	// The timestamp of when an asset published in an Amazon DataZone catalog was
	// created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The description of an asset published in an Amazon DataZone catalog.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssetListingItem's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the inventory asset.
	EntityId *string `locationName:"entityId" type:"string"`

	// The revision of the inventory asset.
	EntityRevision *string `locationName:"entityRevision" min:"1" type:"string"`

	// The type of the inventory asset.
	EntityType *string `locationName:"entityType" min:"1" type:"string"`

	// Glossary terms attached to the inventory asset.
	GlossaryTerms []*DetailedGlossaryTerm `locationName:"glossaryTerms" type:"list"`

	// The Amazon DataZone user who created the listing.
	ListingCreatedBy *string `locationName:"listingCreatedBy" type:"string"`

	// The identifier of the listing (asset published in Amazon DataZone catalog).
	ListingId *string `locationName:"listingId" type:"string"`

	// The revision of the listing (asset published in Amazon DataZone catalog).
	ListingRevision *string `locationName:"listingRevision" min:"1" type:"string"`

	// The Amazon DataZone user who updated the listing.
	ListingUpdatedBy *string `locationName:"listingUpdatedBy" type:"string"`

	// The name of the inventory asset.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssetListingItem's
	// String and GoString methods.
	Name *string `locationName:"name" min:"1" type:"string" sensitive:"true"`

	// The identifier of the project that owns the inventory asset.
	OwningProjectId *string `locationName:"owningProjectId" type:"string"`
}

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

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

// SetAdditionalAttributes sets the AdditionalAttributes field's value.
func (s *AssetListingItem) SetAdditionalAttributes(v *AssetListingItemAdditionalAttributes) *AssetListingItem {
	s.AdditionalAttributes = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *AssetListingItem) SetCreatedAt(v time.Time) *AssetListingItem {
	s.CreatedAt = &v
	return s
}

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

// SetEntityId sets the EntityId field's value.
func (s *AssetListingItem) SetEntityId(v string) *AssetListingItem {
	s.EntityId = &v
	return s
}

// SetEntityRevision sets the EntityRevision field's value.
func (s *AssetListingItem) SetEntityRevision(v string) *AssetListingItem {
	s.EntityRevision = &v
	return s
}

// SetEntityType sets the EntityType field's value.
func (s *AssetListingItem) SetEntityType(v string) *AssetListingItem {
	s.EntityType = &v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *AssetListingItem) SetGlossaryTerms(v []*DetailedGlossaryTerm) *AssetListingItem {
	s.GlossaryTerms = v
	return s
}

// SetListingCreatedBy sets the ListingCreatedBy field's value.
func (s *AssetListingItem) SetListingCreatedBy(v string) *AssetListingItem {
	s.ListingCreatedBy = &v
	return s
}

// SetListingId sets the ListingId field's value.
func (s *AssetListingItem) SetListingId(v string) *AssetListingItem {
	s.ListingId = &v
	return s
}

// SetListingRevision sets the ListingRevision field's value.
func (s *AssetListingItem) SetListingRevision(v string) *AssetListingItem {
	s.ListingRevision = &v
	return s
}

// SetListingUpdatedBy sets the ListingUpdatedBy field's value.
func (s *AssetListingItem) SetListingUpdatedBy(v string) *AssetListingItem {
	s.ListingUpdatedBy = &v
	return s
}

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

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *AssetListingItem) SetOwningProjectId(v string) *AssetListingItem {
	s.OwningProjectId = &v
	return s
}

// Additional attributes of an inventory asset.
type AssetListingItemAdditionalAttributes struct {
	_ struct{} `type:"structure"`

	// The metadata forms that form additional attributes of the metadata asset.
	Forms *string `locationName:"forms" type:"string"`
}

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

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

// SetForms sets the Forms field's value.
func (s *AssetListingItemAdditionalAttributes) SetForms(v string) *AssetListingItemAdditionalAttributes {
	s.Forms = &v
	return s
}

// The revision of an inventory asset.
type AssetRevision struct {
	_ struct{} `type:"structure"`

	// The timestamp of when an inventory asset revison was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The Amazon DataZone user who created the asset revision.
	CreatedBy *string `locationName:"createdBy" type:"string"`

	// The Amazon DataZone user who created the inventory asset.
	DomainId *string `locationName:"domainId" type:"string"`

	// The identifier of the inventory asset revision.
	Id *string `locationName:"id" type:"string"`

	// The revision details of the inventory asset.
	Revision *string `locationName:"revision" 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 AssetRevision) String() string {
	return awsutil.Prettify(s)
}

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *AssetRevision) SetCreatedAt(v time.Time) *AssetRevision {
	s.CreatedAt = &v
	return s
}

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

// SetDomainId sets the DomainId field's value.
func (s *AssetRevision) SetDomainId(v string) *AssetRevision {
	s.DomainId = &v
	return s
}

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

// SetRevision sets the Revision field's value.
func (s *AssetRevision) SetRevision(v string) *AssetRevision {
	s.Revision = &v
	return s
}

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

	// The identifier of the inventory asset.
	//
	// AssetId is a required field
	AssetId *string `locationName:"assetId" type:"string" required:"true"`

	// The target name in the asset target name map.
	//
	// TargetName is a required field
	TargetName *string `locationName:"targetName" type:"string" required:"true"`
}

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

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

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

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

// SetAssetId sets the AssetId field's value.
func (s *AssetTargetNameMap) SetAssetId(v string) *AssetTargetNameMap {
	s.AssetId = &v
	return s
}

// SetTargetName sets the TargetName field's value.
func (s *AssetTargetNameMap) SetTargetName(v string) *AssetTargetNameMap {
	s.TargetName = &v
	return s
}

// The details of the asset type.
type AssetTypeItem struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the asset type was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The Amazon DataZone user who created the asset type.
	CreatedBy *string `locationName:"createdBy" type:"string"`

	// The description of the asset type.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by AssetTypeItem's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain where the asset type exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The forms included in the details of the asset type.
	//
	// FormsOutput is a required field
	FormsOutput map[string]*FormEntryOutput_ `locationName:"formsOutput" type:"map" required:"true"`

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

	// The identifier of the Amazon DataZone domain where the asset type was originally
	// created.
	OriginDomainId *string `locationName:"originDomainId" type:"string"`

	// The identifier of the Amazon DataZone project where the asset type exists.
	OriginProjectId *string `locationName:"originProjectId" type:"string"`

	// The identifier of the Amazon DataZone project that owns the asset type.
	//
	// OwningProjectId is a required field
	OwningProjectId *string `locationName:"owningProjectId" type:"string" required:"true"`

	// The revision of the asset type.
	//
	// Revision is a required field
	Revision *string `locationName:"revision" min:"1" type:"string" required:"true"`

	// The timestamp of when the asset type was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`

	// The Amazon DataZone user who updated the asset type.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

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

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *AssetTypeItem) SetCreatedAt(v time.Time) *AssetTypeItem {
	s.CreatedAt = &v
	return s
}

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

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

// SetDomainId sets the DomainId field's value.
func (s *AssetTypeItem) SetDomainId(v string) *AssetTypeItem {
	s.DomainId = &v
	return s
}

// SetFormsOutput sets the FormsOutput field's value.
func (s *AssetTypeItem) SetFormsOutput(v map[string]*FormEntryOutput_) *AssetTypeItem {
	s.FormsOutput = v
	return s
}

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

// SetOriginDomainId sets the OriginDomainId field's value.
func (s *AssetTypeItem) SetOriginDomainId(v string) *AssetTypeItem {
	s.OriginDomainId = &v
	return s
}

// SetOriginProjectId sets the OriginProjectId field's value.
func (s *AssetTypeItem) SetOriginProjectId(v string) *AssetTypeItem {
	s.OriginProjectId = &v
	return s
}

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *AssetTypeItem) SetOwningProjectId(v string) *AssetTypeItem {
	s.OwningProjectId = &v
	return s
}

// SetRevision sets the Revision field's value.
func (s *AssetTypeItem) SetRevision(v string) *AssetTypeItem {
	s.Revision = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *AssetTypeItem) SetUpdatedAt(v time.Time) *AssetTypeItem {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *AssetTypeItem) SetUpdatedBy(v string) *AssetTypeItem {
	s.UpdatedBy = &v
	return s
}

// The configuration of the business name generation.
type BusinessNameGenerationConfiguration struct {
	_ struct{} `type:"structure"`

	// Specifies whether the business name generation is enabled.
	Enabled *bool `locationName:"enabled" 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 BusinessNameGenerationConfiguration) String() string {
	return awsutil.Prettify(s)
}

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

// SetEnabled sets the Enabled field's value.
func (s *BusinessNameGenerationConfiguration) SetEnabled(v bool) *BusinessNameGenerationConfiguration {
	s.Enabled = &v
	return s
}

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

	// The unique identifier of the Amazon DataZone domain where the subscription
	// request is being cancelled.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The unique identifier of the subscription that is being cancelled.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CancelSubscriptionInput) SetDomainIdentifier(v string) *CancelSubscriptionInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *CancelSubscriptionInput) SetIdentifier(v string) *CancelSubscriptionInput {
	s.Identifier = &v
	return s
}

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

	// The timestamp that specifies when the request to cancel the subscription
	// was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// Specifies the Amazon DataZone user who is cancelling the subscription.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The unique identifier of the Amazon DataZone domain where the subscription
	// is being cancelled.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of the subscription.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// Specifies whether the permissions to the asset are retained after the subscription
	// is cancelled.
	RetainPermissions *bool `locationName:"retainPermissions" type:"boolean"`

	// The status of the request to cancel the subscription.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionStatus"`

	// The asset to which a subscription is being cancelled.
	//
	// SubscribedListing is a required field
	SubscribedListing *SubscribedListing `locationName:"subscribedListing" type:"structure" required:"true"`

	// The Amazon DataZone user who is made a subscriber to the specified asset
	// by the subscription that is being cancelled.
	//
	// SubscribedPrincipal is a required field
	SubscribedPrincipal *SubscribedPrincipal `locationName:"subscribedPrincipal" type:"structure" required:"true"`

	// The unique ID of the subscripton request for the subscription that is being
	// cancelled.
	SubscriptionRequestId *string `locationName:"subscriptionRequestId" type:"string"`

	// The timestamp that specifies when the subscription was cancelled.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user that cancelled the subscription.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

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

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *CancelSubscriptionOutput) SetCreatedAt(v time.Time) *CancelSubscriptionOutput {
	s.CreatedAt = &v
	return s
}

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

// SetDomainId sets the DomainId field's value.
func (s *CancelSubscriptionOutput) SetDomainId(v string) *CancelSubscriptionOutput {
	s.DomainId = &v
	return s
}

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

// SetRetainPermissions sets the RetainPermissions field's value.
func (s *CancelSubscriptionOutput) SetRetainPermissions(v bool) *CancelSubscriptionOutput {
	s.RetainPermissions = &v
	return s
}

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

// SetSubscribedListing sets the SubscribedListing field's value.
func (s *CancelSubscriptionOutput) SetSubscribedListing(v *SubscribedListing) *CancelSubscriptionOutput {
	s.SubscribedListing = v
	return s
}

// SetSubscribedPrincipal sets the SubscribedPrincipal field's value.
func (s *CancelSubscriptionOutput) SetSubscribedPrincipal(v *SubscribedPrincipal) *CancelSubscriptionOutput {
	s.SubscribedPrincipal = v
	return s
}

// SetSubscriptionRequestId sets the SubscriptionRequestId field's value.
func (s *CancelSubscriptionOutput) SetSubscriptionRequestId(v string) *CancelSubscriptionOutput {
	s.SubscriptionRequestId = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *CancelSubscriptionOutput) SetUpdatedAt(v time.Time) *CancelSubscriptionOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *CancelSubscriptionOutput) SetUpdatedBy(v string) *CancelSubscriptionOutput {
	s.UpdatedBy = &v
	return s
}

// Part of the provisioning properties of the environment blueprint.
type CloudFormationProperties struct {
	_ struct{} `type:"structure"`

	// The template URL of the cloud formation provisioning properties of the environment
	// blueprint.
	//
	// TemplateUrl is a required field
	TemplateUrl *string `locationName:"templateUrl" type:"string" required:"true"`
}

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

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

// SetTemplateUrl sets the TemplateUrl field's value.
func (s *CloudFormationProperties) SetTemplateUrl(v string) *CloudFormationProperties {
	s.TemplateUrl = &v
	return s
}

// The details of the parameters for the configurable environment action.
type ConfigurableActionParameter struct {
	_ struct{} `type:"structure"`

	// The key of the configurable action parameter.
	Key *string `locationName:"key" type:"string"`

	// The value of the configurable action parameter.
	Value *string `locationName:"value" type:"string"`
}

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

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

// SetKey sets the Key field's value.
func (s *ConfigurableActionParameter) SetKey(v string) *ConfigurableActionParameter {
	s.Key = &v
	return s
}

// SetValue sets the Value field's value.
func (s *ConfigurableActionParameter) SetValue(v string) *ConfigurableActionParameter {
	s.Value = &v
	return s
}

// The configurable action of a Amazon DataZone environment.
type ConfigurableEnvironmentAction struct {
	_ struct{} `type:"structure"`

	// The authentication type of a configurable action of a Amazon DataZone environment.
	Auth *string `locationName:"auth" type:"string" enum:"ConfigurableActionTypeAuthorization"`

	// The parameters of a configurable action in a Amazon DataZone environment.
	//
	// Parameters is a required field
	Parameters []*ConfigurableActionParameter `locationName:"parameters" type:"list" required:"true"`

	// The type of a configurable action in a Amazon DataZone environment.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true"`
}

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

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

// SetAuth sets the Auth field's value.
func (s *ConfigurableEnvironmentAction) SetAuth(v string) *ConfigurableEnvironmentAction {
	s.Auth = &v
	return s
}

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

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

// There is a conflict while performing this action.
type ConflictException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

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

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

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

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

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

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

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

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

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

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

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

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// Asset description.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssetInput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// Amazon DataZone domain where the asset is created.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// ExternalIdentifier is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssetInput's
	// String and GoString methods.
	ExternalIdentifier *string `locationName:"externalIdentifier" min:"1" type:"string" sensitive:"true"`

	// Metadata forms attached to the asset.
	//
	// FormsInput is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssetInput's
	// String and GoString methods.
	FormsInput []*FormInput_ `locationName:"formsInput" type:"list" sensitive:"true"`

	// Glossary terms attached to the asset.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// Asset name.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssetInput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The unique identifier of the project that owns this asset.
	//
	// OwningProjectIdentifier is a required field
	OwningProjectIdentifier *string `locationName:"owningProjectIdentifier" type:"string" required:"true"`

	// The configuration of the automatically generated business-friendly metadata
	// for the asset.
	PredictionConfiguration *PredictionConfiguration `locationName:"predictionConfiguration" type:"structure"`

	// The unique identifier of this asset's type.
	//
	// TypeIdentifier is a required field
	TypeIdentifier *string `locationName:"typeIdentifier" min:"1" type:"string" required:"true"`

	// The revision of this asset's type.
	TypeRevision *string `locationName:"typeRevision" 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 CreateAssetInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateAssetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateAssetInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.ExternalIdentifier != nil && len(*s.ExternalIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ExternalIdentifier", 1))
	}
	if s.GlossaryTerms != nil && len(s.GlossaryTerms) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GlossaryTerms", 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.OwningProjectIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("OwningProjectIdentifier"))
	}
	if s.TypeIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("TypeIdentifier"))
	}
	if s.TypeIdentifier != nil && len(*s.TypeIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TypeIdentifier", 1))
	}
	if s.TypeRevision != nil && len(*s.TypeRevision) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TypeRevision", 1))
	}
	if s.FormsInput != nil {
		for i, v := range s.FormsInput {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "FormsInput", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateAssetInput) SetDomainIdentifier(v string) *CreateAssetInput {
	s.DomainIdentifier = &v
	return s
}

// SetExternalIdentifier sets the ExternalIdentifier field's value.
func (s *CreateAssetInput) SetExternalIdentifier(v string) *CreateAssetInput {
	s.ExternalIdentifier = &v
	return s
}

// SetFormsInput sets the FormsInput field's value.
func (s *CreateAssetInput) SetFormsInput(v []*FormInput_) *CreateAssetInput {
	s.FormsInput = v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *CreateAssetInput) SetGlossaryTerms(v []*string) *CreateAssetInput {
	s.GlossaryTerms = v
	return s
}

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

// SetOwningProjectIdentifier sets the OwningProjectIdentifier field's value.
func (s *CreateAssetInput) SetOwningProjectIdentifier(v string) *CreateAssetInput {
	s.OwningProjectIdentifier = &v
	return s
}

// SetPredictionConfiguration sets the PredictionConfiguration field's value.
func (s *CreateAssetInput) SetPredictionConfiguration(v *PredictionConfiguration) *CreateAssetInput {
	s.PredictionConfiguration = v
	return s
}

// SetTypeIdentifier sets the TypeIdentifier field's value.
func (s *CreateAssetInput) SetTypeIdentifier(v string) *CreateAssetInput {
	s.TypeIdentifier = &v
	return s
}

// SetTypeRevision sets the TypeRevision field's value.
func (s *CreateAssetInput) SetTypeRevision(v string) *CreateAssetInput {
	s.TypeRevision = &v
	return s
}

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

	// The timestamp of when the asset was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The Amazon DataZone user that created this asset in the catalog.
	CreatedBy *string `locationName:"createdBy" type:"string"`

	// The description of the created asset.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssetOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which the asset was created.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// ExternalIdentifier is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssetOutput's
	// String and GoString methods.
	ExternalIdentifier *string `locationName:"externalIdentifier" min:"1" type:"string" sensitive:"true"`

	// The timestamp of when the first revision of the asset took place.
	FirstRevisionCreatedAt *time.Time `locationName:"firstRevisionCreatedAt" type:"timestamp"`

	// The Amazon DataZone user that made the first revision of the asset.
	FirstRevisionCreatedBy *string `locationName:"firstRevisionCreatedBy" type:"string"`

	// The metadata forms that are attached to the created asset.
	//
	// FormsOutput is a required field
	FormsOutput []*FormOutput_ `locationName:"formsOutput" type:"list" required:"true"`

	// The glossary terms that are attached to the created asset.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// The unique identifier of the created asset.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The details of an asset published in an Amazon DataZone catalog.
	Listing *AssetListingDetails `locationName:"listing" type:"structure"`

	// The name of the created asset.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssetOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the Amazon DataZone project that owns the created asset.
	//
	// OwningProjectId is a required field
	OwningProjectId *string `locationName:"owningProjectId" type:"string" required:"true"`

	// The configuration of the automatically generated business-friendly metadata
	// for the asset.
	PredictionConfiguration *PredictionConfiguration `locationName:"predictionConfiguration" type:"structure"`

	// The read-only metadata forms that are attached to the created asset.
	ReadOnlyFormsOutput []*FormOutput_ `locationName:"readOnlyFormsOutput" type:"list"`

	// The revision of the asset.
	//
	// Revision is a required field
	Revision *string `locationName:"revision" min:"1" type:"string" required:"true"`

	// The identifier of the created asset type.
	//
	// TypeIdentifier is a required field
	TypeIdentifier *string `locationName:"typeIdentifier" min:"1" type:"string" required:"true"`

	// The revision type of the asset.
	//
	// TypeRevision is a required field
	TypeRevision *string `locationName:"typeRevision" 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 CreateAssetOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *CreateAssetOutput) SetCreatedAt(v time.Time) *CreateAssetOutput {
	s.CreatedAt = &v
	return s
}

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

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

// SetDomainId sets the DomainId field's value.
func (s *CreateAssetOutput) SetDomainId(v string) *CreateAssetOutput {
	s.DomainId = &v
	return s
}

// SetExternalIdentifier sets the ExternalIdentifier field's value.
func (s *CreateAssetOutput) SetExternalIdentifier(v string) *CreateAssetOutput {
	s.ExternalIdentifier = &v
	return s
}

// SetFirstRevisionCreatedAt sets the FirstRevisionCreatedAt field's value.
func (s *CreateAssetOutput) SetFirstRevisionCreatedAt(v time.Time) *CreateAssetOutput {
	s.FirstRevisionCreatedAt = &v
	return s
}

// SetFirstRevisionCreatedBy sets the FirstRevisionCreatedBy field's value.
func (s *CreateAssetOutput) SetFirstRevisionCreatedBy(v string) *CreateAssetOutput {
	s.FirstRevisionCreatedBy = &v
	return s
}

// SetFormsOutput sets the FormsOutput field's value.
func (s *CreateAssetOutput) SetFormsOutput(v []*FormOutput_) *CreateAssetOutput {
	s.FormsOutput = v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *CreateAssetOutput) SetGlossaryTerms(v []*string) *CreateAssetOutput {
	s.GlossaryTerms = v
	return s
}

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

// SetListing sets the Listing field's value.
func (s *CreateAssetOutput) SetListing(v *AssetListingDetails) *CreateAssetOutput {
	s.Listing = v
	return s
}

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

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *CreateAssetOutput) SetOwningProjectId(v string) *CreateAssetOutput {
	s.OwningProjectId = &v
	return s
}

// SetPredictionConfiguration sets the PredictionConfiguration field's value.
func (s *CreateAssetOutput) SetPredictionConfiguration(v *PredictionConfiguration) *CreateAssetOutput {
	s.PredictionConfiguration = v
	return s
}

// SetReadOnlyFormsOutput sets the ReadOnlyFormsOutput field's value.
func (s *CreateAssetOutput) SetReadOnlyFormsOutput(v []*FormOutput_) *CreateAssetOutput {
	s.ReadOnlyFormsOutput = v
	return s
}

// SetRevision sets the Revision field's value.
func (s *CreateAssetOutput) SetRevision(v string) *CreateAssetOutput {
	s.Revision = &v
	return s
}

// SetTypeIdentifier sets the TypeIdentifier field's value.
func (s *CreateAssetOutput) SetTypeIdentifier(v string) *CreateAssetOutput {
	s.TypeIdentifier = &v
	return s
}

// SetTypeRevision sets the TypeRevision field's value.
func (s *CreateAssetOutput) SetTypeRevision(v string) *CreateAssetOutput {
	s.TypeRevision = &v
	return s
}

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

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The revised description of the asset.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssetRevisionInput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The unique identifier of the domain where the asset is being revised.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The metadata forms to be attached to the asset as part of asset revision.
	//
	// FormsInput is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssetRevisionInput's
	// String and GoString methods.
	FormsInput []*FormInput_ `locationName:"formsInput" type:"list" sensitive:"true"`

	// The glossary terms to be attached to the asset as part of asset revision.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// The identifier of the asset.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// Te revised name of the asset.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssetRevisionInput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The configuration of the automatically generated business-friendly metadata
	// for the asset.
	PredictionConfiguration *PredictionConfiguration `locationName:"predictionConfiguration" type:"structure"`

	// The revision type of the asset.
	TypeRevision *string `locationName:"typeRevision" 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 CreateAssetRevisionInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateAssetRevisionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateAssetRevisionInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.GlossaryTerms != nil && len(s.GlossaryTerms) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GlossaryTerms", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 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.TypeRevision != nil && len(*s.TypeRevision) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TypeRevision", 1))
	}
	if s.FormsInput != nil {
		for i, v := range s.FormsInput {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "FormsInput", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateAssetRevisionInput) SetDomainIdentifier(v string) *CreateAssetRevisionInput {
	s.DomainIdentifier = &v
	return s
}

// SetFormsInput sets the FormsInput field's value.
func (s *CreateAssetRevisionInput) SetFormsInput(v []*FormInput_) *CreateAssetRevisionInput {
	s.FormsInput = v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *CreateAssetRevisionInput) SetGlossaryTerms(v []*string) *CreateAssetRevisionInput {
	s.GlossaryTerms = v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *CreateAssetRevisionInput) SetIdentifier(v string) *CreateAssetRevisionInput {
	s.Identifier = &v
	return s
}

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

// SetPredictionConfiguration sets the PredictionConfiguration field's value.
func (s *CreateAssetRevisionInput) SetPredictionConfiguration(v *PredictionConfiguration) *CreateAssetRevisionInput {
	s.PredictionConfiguration = v
	return s
}

// SetTypeRevision sets the TypeRevision field's value.
func (s *CreateAssetRevisionInput) SetTypeRevision(v string) *CreateAssetRevisionInput {
	s.TypeRevision = &v
	return s
}

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

	// The timestamp of when the asset revision occured.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The Amazon DataZone user who performed the asset revision.
	CreatedBy *string `locationName:"createdBy" type:"string"`

	// The revised asset description.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssetRevisionOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The unique identifier of the Amazon DataZone domain where the asset was revised.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// ExternalIdentifier is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssetRevisionOutput's
	// String and GoString methods.
	ExternalIdentifier *string `locationName:"externalIdentifier" min:"1" type:"string" sensitive:"true"`

	// The timestamp of when the first asset revision occured.
	FirstRevisionCreatedAt *time.Time `locationName:"firstRevisionCreatedAt" type:"timestamp"`

	// The Amazon DataZone user who performed the first asset revision.
	FirstRevisionCreatedBy *string `locationName:"firstRevisionCreatedBy" type:"string"`

	// The metadata forms that were attached to the asset as part of the asset revision.
	//
	// FormsOutput is a required field
	FormsOutput []*FormOutput_ `locationName:"formsOutput" type:"list" required:"true"`

	// The glossary terms that were attached to the asset as part of asset revision.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// The unique identifier of the asset revision.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The details of an asset published in an Amazon DataZone catalog.
	Listing *AssetListingDetails `locationName:"listing" type:"structure"`

	// The revised name of the asset.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssetRevisionOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The unique identifier of the revised project that owns the asset.
	//
	// OwningProjectId is a required field
	OwningProjectId *string `locationName:"owningProjectId" type:"string" required:"true"`

	// The configuration of the automatically generated business-friendly metadata
	// for the asset.
	PredictionConfiguration *PredictionConfiguration `locationName:"predictionConfiguration" type:"structure"`

	// The read-only metadata forms that were attached to the asset as part of the
	// asset revision.
	ReadOnlyFormsOutput []*FormOutput_ `locationName:"readOnlyFormsOutput" type:"list"`

	// The revision of the asset.
	//
	// Revision is a required field
	Revision *string `locationName:"revision" min:"1" type:"string" required:"true"`

	// The identifier of the revision type.
	//
	// TypeIdentifier is a required field
	TypeIdentifier *string `locationName:"typeIdentifier" min:"1" type:"string" required:"true"`

	// The revision type of the asset.
	//
	// TypeRevision is a required field
	TypeRevision *string `locationName:"typeRevision" 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 CreateAssetRevisionOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *CreateAssetRevisionOutput) SetCreatedAt(v time.Time) *CreateAssetRevisionOutput {
	s.CreatedAt = &v
	return s
}

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

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

// SetDomainId sets the DomainId field's value.
func (s *CreateAssetRevisionOutput) SetDomainId(v string) *CreateAssetRevisionOutput {
	s.DomainId = &v
	return s
}

// SetExternalIdentifier sets the ExternalIdentifier field's value.
func (s *CreateAssetRevisionOutput) SetExternalIdentifier(v string) *CreateAssetRevisionOutput {
	s.ExternalIdentifier = &v
	return s
}

// SetFirstRevisionCreatedAt sets the FirstRevisionCreatedAt field's value.
func (s *CreateAssetRevisionOutput) SetFirstRevisionCreatedAt(v time.Time) *CreateAssetRevisionOutput {
	s.FirstRevisionCreatedAt = &v
	return s
}

// SetFirstRevisionCreatedBy sets the FirstRevisionCreatedBy field's value.
func (s *CreateAssetRevisionOutput) SetFirstRevisionCreatedBy(v string) *CreateAssetRevisionOutput {
	s.FirstRevisionCreatedBy = &v
	return s
}

// SetFormsOutput sets the FormsOutput field's value.
func (s *CreateAssetRevisionOutput) SetFormsOutput(v []*FormOutput_) *CreateAssetRevisionOutput {
	s.FormsOutput = v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *CreateAssetRevisionOutput) SetGlossaryTerms(v []*string) *CreateAssetRevisionOutput {
	s.GlossaryTerms = v
	return s
}

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

// SetListing sets the Listing field's value.
func (s *CreateAssetRevisionOutput) SetListing(v *AssetListingDetails) *CreateAssetRevisionOutput {
	s.Listing = v
	return s
}

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

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *CreateAssetRevisionOutput) SetOwningProjectId(v string) *CreateAssetRevisionOutput {
	s.OwningProjectId = &v
	return s
}

// SetPredictionConfiguration sets the PredictionConfiguration field's value.
func (s *CreateAssetRevisionOutput) SetPredictionConfiguration(v *PredictionConfiguration) *CreateAssetRevisionOutput {
	s.PredictionConfiguration = v
	return s
}

// SetReadOnlyFormsOutput sets the ReadOnlyFormsOutput field's value.
func (s *CreateAssetRevisionOutput) SetReadOnlyFormsOutput(v []*FormOutput_) *CreateAssetRevisionOutput {
	s.ReadOnlyFormsOutput = v
	return s
}

// SetRevision sets the Revision field's value.
func (s *CreateAssetRevisionOutput) SetRevision(v string) *CreateAssetRevisionOutput {
	s.Revision = &v
	return s
}

// SetTypeIdentifier sets the TypeIdentifier field's value.
func (s *CreateAssetRevisionOutput) SetTypeIdentifier(v string) *CreateAssetRevisionOutput {
	s.TypeIdentifier = &v
	return s
}

// SetTypeRevision sets the TypeRevision field's value.
func (s *CreateAssetRevisionOutput) SetTypeRevision(v string) *CreateAssetRevisionOutput {
	s.TypeRevision = &v
	return s
}

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

	// The descripton of the custom asset type.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssetTypeInput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The unique identifier of the Amazon DataZone domain where the custom asset
	// type is being created.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The metadata forms that are to be attached to the custom asset type.
	//
	// FormsInput is a required field
	FormsInput map[string]*FormEntryInput_ `locationName:"formsInput" type:"map" required:"true"`

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

	// The identifier of the Amazon DataZone project that is to own the custom asset
	// type.
	//
	// OwningProjectIdentifier is a required field
	OwningProjectIdentifier *string `locationName:"owningProjectIdentifier" type:"string" required:"true"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateAssetTypeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateAssetTypeInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.FormsInput == nil {
		invalidParams.Add(request.NewErrParamRequired("FormsInput"))
	}
	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.OwningProjectIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("OwningProjectIdentifier"))
	}
	if s.FormsInput != nil {
		for i, v := range s.FormsInput {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "FormsInput", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateAssetTypeInput) SetDomainIdentifier(v string) *CreateAssetTypeInput {
	s.DomainIdentifier = &v
	return s
}

// SetFormsInput sets the FormsInput field's value.
func (s *CreateAssetTypeInput) SetFormsInput(v map[string]*FormEntryInput_) *CreateAssetTypeInput {
	s.FormsInput = v
	return s
}

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

// SetOwningProjectIdentifier sets the OwningProjectIdentifier field's value.
func (s *CreateAssetTypeInput) SetOwningProjectIdentifier(v string) *CreateAssetTypeInput {
	s.OwningProjectIdentifier = &v
	return s
}

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

	// The timestamp of when the asset type is to be created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The Amazon DataZone user who creates this custom asset type.
	CreatedBy *string `locationName:"createdBy" type:"string"`

	// The description of the custom asset type.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateAssetTypeOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which the asset type was created.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The metadata forms that are attached to the asset type.
	//
	// FormsOutput is a required field
	FormsOutput map[string]*FormEntryOutput_ `locationName:"formsOutput" type:"map" required:"true"`

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

	// The ID of the Amazon DataZone domain where the asset type was originally
	// created.
	OriginDomainId *string `locationName:"originDomainId" type:"string"`

	// The ID of the Amazon DataZone project where the asset type was originally
	// created.
	OriginProjectId *string `locationName:"originProjectId" type:"string"`

	// The ID of the Amazon DataZone project that currently owns this asset type.
	OwningProjectId *string `locationName:"owningProjectId" type:"string"`

	// The revision of the custom asset type.
	//
	// Revision is a required field
	Revision *string `locationName:"revision" min:"1" type:"string" required:"true"`

	// The timestamp of when the custom type was created.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`

	// The Amazon DataZone user that created the custom asset type.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

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

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *CreateAssetTypeOutput) SetCreatedAt(v time.Time) *CreateAssetTypeOutput {
	s.CreatedAt = &v
	return s
}

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

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

// SetDomainId sets the DomainId field's value.
func (s *CreateAssetTypeOutput) SetDomainId(v string) *CreateAssetTypeOutput {
	s.DomainId = &v
	return s
}

// SetFormsOutput sets the FormsOutput field's value.
func (s *CreateAssetTypeOutput) SetFormsOutput(v map[string]*FormEntryOutput_) *CreateAssetTypeOutput {
	s.FormsOutput = v
	return s
}

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

// SetOriginDomainId sets the OriginDomainId field's value.
func (s *CreateAssetTypeOutput) SetOriginDomainId(v string) *CreateAssetTypeOutput {
	s.OriginDomainId = &v
	return s
}

// SetOriginProjectId sets the OriginProjectId field's value.
func (s *CreateAssetTypeOutput) SetOriginProjectId(v string) *CreateAssetTypeOutput {
	s.OriginProjectId = &v
	return s
}

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *CreateAssetTypeOutput) SetOwningProjectId(v string) *CreateAssetTypeOutput {
	s.OwningProjectId = &v
	return s
}

// SetRevision sets the Revision field's value.
func (s *CreateAssetTypeOutput) SetRevision(v string) *CreateAssetTypeOutput {
	s.Revision = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *CreateAssetTypeOutput) SetUpdatedAt(v time.Time) *CreateAssetTypeOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *CreateAssetTypeOutput) SetUpdatedBy(v string) *CreateAssetTypeOutput {
	s.UpdatedBy = &v
	return s
}

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

	// The metadata forms that are to be attached to the assets that this data source
	// works with.
	//
	// AssetFormsInput is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateDataSourceInput's
	// String and GoString methods.
	AssetFormsInput []*FormInput_ `locationName:"assetFormsInput" type:"list" sensitive:"true"`

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`

	// Specifies the configuration of the data source. It can be set to either glueRunConfiguration
	// or redshiftRunConfiguration.
	Configuration *DataSourceConfigurationInput_ `locationName:"configuration" type:"structure"`

	// The description of the data source.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateDataSourceInput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain where the data source is created.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// Specifies whether the data source is enabled.
	EnableSetting *string `locationName:"enableSetting" type:"string" enum:"EnableSetting"`

	// The unique identifier of the Amazon DataZone environment to which the data
	// source publishes assets.
	//
	// EnvironmentIdentifier is a required field
	EnvironmentIdentifier *string `locationName:"environmentIdentifier" type:"string" required:"true"`

	// The name of the data source.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateDataSourceInput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The identifier of the Amazon DataZone project in which you want to add this
	// data source.
	//
	// ProjectIdentifier is a required field
	ProjectIdentifier *string `locationName:"projectIdentifier" type:"string" required:"true"`

	// Specifies whether the assets that this data source creates in the inventory
	// are to be also automatically published to the catalog.
	PublishOnImport *bool `locationName:"publishOnImport" type:"boolean"`

	// Specifies whether the business name generation is to be enabled for this
	// data source.
	Recommendation *RecommendationConfiguration `locationName:"recommendation" type:"structure"`

	// The schedule of the data source runs.
	//
	// Schedule is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateDataSourceInput's
	// String and GoString methods.
	Schedule *ScheduleConfiguration `locationName:"schedule" type:"structure" sensitive:"true"`

	// The type of the data source.
	//
	// Type is a required field
	Type *string `locationName:"type" 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 CreateDataSourceInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateDataSourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateDataSourceInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.EnvironmentIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("EnvironmentIdentifier"))
	}
	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.ProjectIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("ProjectIdentifier"))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.Type != nil && len(*s.Type) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Type", 1))
	}
	if s.AssetFormsInput != nil {
		for i, v := range s.AssetFormsInput {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AssetFormsInput", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Configuration != nil {
		if err := s.Configuration.Validate(); err != nil {
			invalidParams.AddNested("Configuration", err.(request.ErrInvalidParams))
		}
	}
	if s.Schedule != nil {
		if err := s.Schedule.Validate(); err != nil {
			invalidParams.AddNested("Schedule", err.(request.ErrInvalidParams))
		}
	}

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

// SetAssetFormsInput sets the AssetFormsInput field's value.
func (s *CreateDataSourceInput) SetAssetFormsInput(v []*FormInput_) *CreateDataSourceInput {
	s.AssetFormsInput = v
	return s
}

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateDataSourceInput) SetDomainIdentifier(v string) *CreateDataSourceInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnableSetting sets the EnableSetting field's value.
func (s *CreateDataSourceInput) SetEnableSetting(v string) *CreateDataSourceInput {
	s.EnableSetting = &v
	return s
}

// SetEnvironmentIdentifier sets the EnvironmentIdentifier field's value.
func (s *CreateDataSourceInput) SetEnvironmentIdentifier(v string) *CreateDataSourceInput {
	s.EnvironmentIdentifier = &v
	return s
}

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

// SetProjectIdentifier sets the ProjectIdentifier field's value.
func (s *CreateDataSourceInput) SetProjectIdentifier(v string) *CreateDataSourceInput {
	s.ProjectIdentifier = &v
	return s
}

// SetPublishOnImport sets the PublishOnImport field's value.
func (s *CreateDataSourceInput) SetPublishOnImport(v bool) *CreateDataSourceInput {
	s.PublishOnImport = &v
	return s
}

// SetRecommendation sets the Recommendation field's value.
func (s *CreateDataSourceInput) SetRecommendation(v *RecommendationConfiguration) *CreateDataSourceInput {
	s.Recommendation = v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *CreateDataSourceInput) SetSchedule(v *ScheduleConfiguration) *CreateDataSourceInput {
	s.Schedule = v
	return s
}

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

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

	// The metadata forms attached to the assets that this data source creates.
	AssetFormsOutput []*FormOutput_ `locationName:"assetFormsOutput" type:"list"`

	// Specifies the configuration of the data source. It can be set to either glueRunConfiguration
	// or redshiftRunConfiguration.
	Configuration *DataSourceConfigurationOutput_ `locationName:"configuration" type:"structure"`

	// The timestamp of when the data source was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The description of the data source.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateDataSourceOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which the data source is created.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// Specifies whether the data source is enabled.
	EnableSetting *string `locationName:"enableSetting" type:"string" enum:"EnableSetting"`

	// The unique identifier of the Amazon DataZone environment to which the data
	// source publishes assets.
	//
	// EnvironmentId is a required field
	EnvironmentId *string `locationName:"environmentId" type:"string" required:"true"`

	// Specifies the error message that is returned if the operation cannot be successfully
	// completed.
	ErrorMessage *DataSourceErrorMessage `locationName:"errorMessage" type:"structure"`

	// The unique identifier of the data source.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The timestamp that specifies when the data source was last run.
	LastRunAt *time.Time `locationName:"lastRunAt" type:"timestamp" timestampFormat:"iso8601"`

	// Specifies the error message that is returned if the operation cannot be successfully
	// completed.
	LastRunErrorMessage *DataSourceErrorMessage `locationName:"lastRunErrorMessage" type:"structure"`

	// The status of the last run of this data source.
	LastRunStatus *string `locationName:"lastRunStatus" type:"string" enum:"DataSourceRunStatus"`

	// The name of the data source.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateDataSourceOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the Amazon DataZone project to which the data source is added.
	//
	// ProjectId is a required field
	ProjectId *string `locationName:"projectId" type:"string" required:"true"`

	// Specifies whether the assets that this data source creates in the inventory
	// are to be also automatically published to the catalog.
	PublishOnImport *bool `locationName:"publishOnImport" type:"boolean"`

	// Specifies whether the business name generation is to be enabled for this
	// data source.
	Recommendation *RecommendationConfiguration `locationName:"recommendation" type:"structure"`

	// The schedule of the data source runs.
	//
	// Schedule is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateDataSourceOutput's
	// String and GoString methods.
	Schedule *ScheduleConfiguration `locationName:"schedule" type:"structure" sensitive:"true"`

	// The status of the data source.
	Status *string `locationName:"status" type:"string" enum:"DataSourceStatus"`

	// The type of the data source.
	Type *string `locationName:"type" min:"1" type:"string"`

	// The timestamp of when the data source was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

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

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

// SetAssetFormsOutput sets the AssetFormsOutput field's value.
func (s *CreateDataSourceOutput) SetAssetFormsOutput(v []*FormOutput_) *CreateDataSourceOutput {
	s.AssetFormsOutput = v
	return s
}

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *CreateDataSourceOutput) SetCreatedAt(v time.Time) *CreateDataSourceOutput {
	s.CreatedAt = &v
	return s
}

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

// SetDomainId sets the DomainId field's value.
func (s *CreateDataSourceOutput) SetDomainId(v string) *CreateDataSourceOutput {
	s.DomainId = &v
	return s
}

// SetEnableSetting sets the EnableSetting field's value.
func (s *CreateDataSourceOutput) SetEnableSetting(v string) *CreateDataSourceOutput {
	s.EnableSetting = &v
	return s
}

// SetEnvironmentId sets the EnvironmentId field's value.
func (s *CreateDataSourceOutput) SetEnvironmentId(v string) *CreateDataSourceOutput {
	s.EnvironmentId = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *CreateDataSourceOutput) SetErrorMessage(v *DataSourceErrorMessage) *CreateDataSourceOutput {
	s.ErrorMessage = v
	return s
}

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

// SetLastRunAt sets the LastRunAt field's value.
func (s *CreateDataSourceOutput) SetLastRunAt(v time.Time) *CreateDataSourceOutput {
	s.LastRunAt = &v
	return s
}

// SetLastRunErrorMessage sets the LastRunErrorMessage field's value.
func (s *CreateDataSourceOutput) SetLastRunErrorMessage(v *DataSourceErrorMessage) *CreateDataSourceOutput {
	s.LastRunErrorMessage = v
	return s
}

// SetLastRunStatus sets the LastRunStatus field's value.
func (s *CreateDataSourceOutput) SetLastRunStatus(v string) *CreateDataSourceOutput {
	s.LastRunStatus = &v
	return s
}

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

// SetProjectId sets the ProjectId field's value.
func (s *CreateDataSourceOutput) SetProjectId(v string) *CreateDataSourceOutput {
	s.ProjectId = &v
	return s
}

// SetPublishOnImport sets the PublishOnImport field's value.
func (s *CreateDataSourceOutput) SetPublishOnImport(v bool) *CreateDataSourceOutput {
	s.PublishOnImport = &v
	return s
}

// SetRecommendation sets the Recommendation field's value.
func (s *CreateDataSourceOutput) SetRecommendation(v *RecommendationConfiguration) *CreateDataSourceOutput {
	s.Recommendation = v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *CreateDataSourceOutput) SetSchedule(v *ScheduleConfiguration) *CreateDataSourceOutput {
	s.Schedule = v
	return s
}

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

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

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *CreateDataSourceOutput) SetUpdatedAt(v time.Time) *CreateDataSourceOutput {
	s.UpdatedAt = &v
	return s
}

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

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`

	// The description of the Amazon DataZone domain.
	Description *string `locationName:"description" type:"string"`

	// The domain execution role that is created when an Amazon DataZone domain
	// is created. The domain execution role is created in the Amazon Web Services
	// account that houses the Amazon DataZone domain.
	//
	// DomainExecutionRole is a required field
	DomainExecutionRole *string `locationName:"domainExecutionRole" type:"string" required:"true"`

	// The identifier of the Amazon Web Services Key Management Service (KMS) key
	// that is used to encrypt the Amazon DataZone domain, metadata, and reporting
	// data.
	KmsKeyIdentifier *string `locationName:"kmsKeyIdentifier" min:"1" type:"string"`

	// The name of the Amazon DataZone domain.
	//
	// Name is a required field
	Name *string `locationName:"name" type:"string" required:"true"`

	// The single-sign on configuration of the Amazon DataZone domain.
	SingleSignOn *SingleSignOn `locationName:"singleSignOn" type:"structure"`

	// The tags specified for the Amazon DataZone domain.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

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

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

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

// SetDomainExecutionRole sets the DomainExecutionRole field's value.
func (s *CreateDomainInput) SetDomainExecutionRole(v string) *CreateDomainInput {
	s.DomainExecutionRole = &v
	return s
}

// SetKmsKeyIdentifier sets the KmsKeyIdentifier field's value.
func (s *CreateDomainInput) SetKmsKeyIdentifier(v string) *CreateDomainInput {
	s.KmsKeyIdentifier = &v
	return s
}

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

// SetSingleSignOn sets the SingleSignOn field's value.
func (s *CreateDomainInput) SetSingleSignOn(v *SingleSignOn) *CreateDomainInput {
	s.SingleSignOn = v
	return s
}

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

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

	// The ARN of the Amazon DataZone domain.
	Arn *string `locationName:"arn" type:"string"`

	// The description of the Amazon DataZone domain.
	Description *string `locationName:"description" type:"string"`

	// The domain execution role that is created when an Amazon DataZone domain
	// is created. The domain execution role is created in the Amazon Web Services
	// account that houses the Amazon DataZone domain.
	DomainExecutionRole *string `locationName:"domainExecutionRole" type:"string"`

	// The identifier of the Amazon DataZone domain.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The identifier of the Amazon Web Services Key Management Service (KMS) key
	// that is used to encrypt the Amazon DataZone domain, metadata, and reporting
	// data.
	KmsKeyIdentifier *string `locationName:"kmsKeyIdentifier" min:"1" type:"string"`

	// The name of the Amazon DataZone domain.
	Name *string `locationName:"name" type:"string"`

	// The URL of the data portal for this Amazon DataZone domain.
	PortalUrl *string `locationName:"portalUrl" type:"string"`

	// The single-sign on configuration of the Amazon DataZone domain.
	SingleSignOn *SingleSignOn `locationName:"singleSignOn" type:"structure"`

	// The status of the Amazon DataZone domain.
	Status *string `locationName:"status" type:"string" enum:"DomainStatus"`

	// The tags specified for the Amazon DataZone domain.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

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

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

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

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

// SetDomainExecutionRole sets the DomainExecutionRole field's value.
func (s *CreateDomainOutput) SetDomainExecutionRole(v string) *CreateDomainOutput {
	s.DomainExecutionRole = &v
	return s
}

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

// SetKmsKeyIdentifier sets the KmsKeyIdentifier field's value.
func (s *CreateDomainOutput) SetKmsKeyIdentifier(v string) *CreateDomainOutput {
	s.KmsKeyIdentifier = &v
	return s
}

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

// SetPortalUrl sets the PortalUrl field's value.
func (s *CreateDomainOutput) SetPortalUrl(v string) *CreateDomainOutput {
	s.PortalUrl = &v
	return s
}

// SetSingleSignOn sets the SingleSignOn field's value.
func (s *CreateDomainOutput) SetSingleSignOn(v *SingleSignOn) *CreateDomainOutput {
	s.SingleSignOn = v
	return s
}

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

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

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

	// The description of the Amazon DataZone environment.
	Description *string `locationName:"description" type:"string"`

	// The identifier of the Amazon DataZone domain in which the environment is
	// created.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the environment profile that is used to create this Amazon
	// DataZone environment.
	//
	// EnvironmentProfileIdentifier is a required field
	EnvironmentProfileIdentifier *string `locationName:"environmentProfileIdentifier" type:"string" required:"true"`

	// The glossary terms that can be used in this Amazon DataZone environment.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// The name of the Amazon DataZone environment.
	//
	// Name is a required field
	Name *string `locationName:"name" type:"string" required:"true"`

	// The identifier of the Amazon DataZone project in which this environment is
	// created.
	//
	// ProjectIdentifier is a required field
	ProjectIdentifier *string `locationName:"projectIdentifier" type:"string" required:"true"`

	// The user parameters of this Amazon DataZone environment.
	UserParameters []*EnvironmentParameter `locationName:"userParameters" 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 CreateEnvironmentInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateEnvironmentInput) SetDomainIdentifier(v string) *CreateEnvironmentInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnvironmentProfileIdentifier sets the EnvironmentProfileIdentifier field's value.
func (s *CreateEnvironmentInput) SetEnvironmentProfileIdentifier(v string) *CreateEnvironmentInput {
	s.EnvironmentProfileIdentifier = &v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *CreateEnvironmentInput) SetGlossaryTerms(v []*string) *CreateEnvironmentInput {
	s.GlossaryTerms = v
	return s
}

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

// SetProjectIdentifier sets the ProjectIdentifier field's value.
func (s *CreateEnvironmentInput) SetProjectIdentifier(v string) *CreateEnvironmentInput {
	s.ProjectIdentifier = &v
	return s
}

// SetUserParameters sets the UserParameters field's value.
func (s *CreateEnvironmentInput) SetUserParameters(v []*EnvironmentParameter) *CreateEnvironmentInput {
	s.UserParameters = v
	return s
}

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

	// The Amazon Web Services account in which the Amazon DataZone environment
	// is created.
	AwsAccountId *string `locationName:"awsAccountId" type:"string"`

	// The Amazon Web Services region in which the Amazon DataZone environment is
	// created.
	AwsAccountRegion *string `locationName:"awsAccountRegion" type:"string"`

	// The timestamp of when the environment was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The Amazon DataZone user who created this environment.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The deployment properties of this Amazon DataZone environment.
	DeploymentProperties *DeploymentProperties `locationName:"deploymentProperties" type:"structure"`

	// The description of this Amazon DataZone environment.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateEnvironmentOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which the environment is
	// created.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The configurable actions of this Amazon DataZone environment.
	EnvironmentActions []*ConfigurableEnvironmentAction `locationName:"environmentActions" type:"list"`

	// The ID of the blueprint with which this Amazon DataZone environment was created.
	EnvironmentBlueprintId *string `locationName:"environmentBlueprintId" type:"string"`

	// The ID of the environment profile with which this Amazon DataZone environment
	// was created.
	//
	// EnvironmentProfileId is a required field
	EnvironmentProfileId *string `locationName:"environmentProfileId" type:"string" required:"true"`

	// The glossary terms that can be used in this Amazon DataZone environment.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// The ID of this Amazon DataZone environment.
	Id *string `locationName:"id" type:"string"`

	// The details of the last deployment of this Amazon DataZone environment.
	LastDeployment *Deployment `locationName:"lastDeployment" type:"structure"`

	// The name of this environment.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateEnvironmentOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the Amazon DataZone project in which this environment is created.
	//
	// ProjectId is a required field
	ProjectId *string `locationName:"projectId" type:"string" required:"true"`

	// The provider of this Amazon DataZone environment.
	//
	// Provider is a required field
	Provider *string `locationName:"provider" type:"string" required:"true"`

	// The provisioned resources of this Amazon DataZone environment.
	ProvisionedResources []*Resource `locationName:"provisionedResources" type:"list"`

	// The provisioning properties of this Amazon DataZone environment.
	ProvisioningProperties *ProvisioningProperties `locationName:"provisioningProperties" type:"structure"`

	// The status of this Amazon DataZone environment.
	Status *string `locationName:"status" type:"string" enum:"EnvironmentStatus"`

	// The timestamp of when this environment was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The user parameters of this Amazon DataZone environment.
	UserParameters []*CustomParameter `locationName:"userParameters" 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 CreateEnvironmentOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateEnvironmentOutput) SetAwsAccountId(v string) *CreateEnvironmentOutput {
	s.AwsAccountId = &v
	return s
}

// SetAwsAccountRegion sets the AwsAccountRegion field's value.
func (s *CreateEnvironmentOutput) SetAwsAccountRegion(v string) *CreateEnvironmentOutput {
	s.AwsAccountRegion = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *CreateEnvironmentOutput) SetCreatedAt(v time.Time) *CreateEnvironmentOutput {
	s.CreatedAt = &v
	return s
}

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

// SetDeploymentProperties sets the DeploymentProperties field's value.
func (s *CreateEnvironmentOutput) SetDeploymentProperties(v *DeploymentProperties) *CreateEnvironmentOutput {
	s.DeploymentProperties = v
	return s
}

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

// SetDomainId sets the DomainId field's value.
func (s *CreateEnvironmentOutput) SetDomainId(v string) *CreateEnvironmentOutput {
	s.DomainId = &v
	return s
}

// SetEnvironmentActions sets the EnvironmentActions field's value.
func (s *CreateEnvironmentOutput) SetEnvironmentActions(v []*ConfigurableEnvironmentAction) *CreateEnvironmentOutput {
	s.EnvironmentActions = v
	return s
}

// SetEnvironmentBlueprintId sets the EnvironmentBlueprintId field's value.
func (s *CreateEnvironmentOutput) SetEnvironmentBlueprintId(v string) *CreateEnvironmentOutput {
	s.EnvironmentBlueprintId = &v
	return s
}

// SetEnvironmentProfileId sets the EnvironmentProfileId field's value.
func (s *CreateEnvironmentOutput) SetEnvironmentProfileId(v string) *CreateEnvironmentOutput {
	s.EnvironmentProfileId = &v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *CreateEnvironmentOutput) SetGlossaryTerms(v []*string) *CreateEnvironmentOutput {
	s.GlossaryTerms = v
	return s
}

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

// SetLastDeployment sets the LastDeployment field's value.
func (s *CreateEnvironmentOutput) SetLastDeployment(v *Deployment) *CreateEnvironmentOutput {
	s.LastDeployment = v
	return s
}

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

// SetProjectId sets the ProjectId field's value.
func (s *CreateEnvironmentOutput) SetProjectId(v string) *CreateEnvironmentOutput {
	s.ProjectId = &v
	return s
}

// SetProvider sets the Provider field's value.
func (s *CreateEnvironmentOutput) SetProvider(v string) *CreateEnvironmentOutput {
	s.Provider = &v
	return s
}

// SetProvisionedResources sets the ProvisionedResources field's value.
func (s *CreateEnvironmentOutput) SetProvisionedResources(v []*Resource) *CreateEnvironmentOutput {
	s.ProvisionedResources = v
	return s
}

// SetProvisioningProperties sets the ProvisioningProperties field's value.
func (s *CreateEnvironmentOutput) SetProvisioningProperties(v *ProvisioningProperties) *CreateEnvironmentOutput {
	s.ProvisioningProperties = v
	return s
}

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

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *CreateEnvironmentOutput) SetUpdatedAt(v time.Time) *CreateEnvironmentOutput {
	s.UpdatedAt = &v
	return s
}

// SetUserParameters sets the UserParameters field's value.
func (s *CreateEnvironmentOutput) SetUserParameters(v []*CustomParameter) *CreateEnvironmentOutput {
	s.UserParameters = v
	return s
}

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

	// The Amazon Web Services account in which the Amazon DataZone environment
	// is created.
	AwsAccountId *string `locationName:"awsAccountId" type:"string"`

	// The Amazon Web Services region in which this environment profile is created.
	AwsAccountRegion *string `locationName:"awsAccountRegion" type:"string"`

	// The description of this Amazon DataZone environment profile.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateEnvironmentProfileInput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which this environment profile is
	// created.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the blueprint with which this environment profile is created.
	//
	// EnvironmentBlueprintIdentifier is a required field
	EnvironmentBlueprintIdentifier *string `locationName:"environmentBlueprintIdentifier" type:"string" required:"true"`

	// The name of this Amazon DataZone environment profile.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateEnvironmentProfileInput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The identifier of the project in which to create the environment profile.
	//
	// ProjectIdentifier is a required field
	ProjectIdentifier *string `locationName:"projectIdentifier" type:"string" required:"true"`

	// The user parameters of this Amazon DataZone environment profile.
	UserParameters []*EnvironmentParameter `locationName:"userParameters" 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 CreateEnvironmentProfileInput) String() string {
	return awsutil.Prettify(s)
}

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateEnvironmentProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateEnvironmentProfileInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.EnvironmentBlueprintIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("EnvironmentBlueprintIdentifier"))
	}
	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.ProjectIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("ProjectIdentifier"))
	}

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateEnvironmentProfileInput) SetAwsAccountId(v string) *CreateEnvironmentProfileInput {
	s.AwsAccountId = &v
	return s
}

// SetAwsAccountRegion sets the AwsAccountRegion field's value.
func (s *CreateEnvironmentProfileInput) SetAwsAccountRegion(v string) *CreateEnvironmentProfileInput {
	s.AwsAccountRegion = &v
	return s
}

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateEnvironmentProfileInput) SetDomainIdentifier(v string) *CreateEnvironmentProfileInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnvironmentBlueprintIdentifier sets the EnvironmentBlueprintIdentifier field's value.
func (s *CreateEnvironmentProfileInput) SetEnvironmentBlueprintIdentifier(v string) *CreateEnvironmentProfileInput {
	s.EnvironmentBlueprintIdentifier = &v
	return s
}

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

// SetProjectIdentifier sets the ProjectIdentifier field's value.
func (s *CreateEnvironmentProfileInput) SetProjectIdentifier(v string) *CreateEnvironmentProfileInput {
	s.ProjectIdentifier = &v
	return s
}

// SetUserParameters sets the UserParameters field's value.
func (s *CreateEnvironmentProfileInput) SetUserParameters(v []*EnvironmentParameter) *CreateEnvironmentProfileInput {
	s.UserParameters = v
	return s
}

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

	// The Amazon Web Services account ID in which this Amazon DataZone environment
	// profile is created.
	AwsAccountId *string `locationName:"awsAccountId" type:"string"`

	// The Amazon Web Services region in which this Amazon DataZone environment
	// profile is created.
	AwsAccountRegion *string `locationName:"awsAccountRegion" type:"string"`

	// The timestamp of when this environment profile was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The Amazon DataZone user who created this environment profile.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The description of this Amazon DataZone environment profile.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateEnvironmentProfileOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which this environment profile is
	// created.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The ID of the blueprint with which this environment profile is created.
	//
	// EnvironmentBlueprintId is a required field
	EnvironmentBlueprintId *string `locationName:"environmentBlueprintId" type:"string" required:"true"`

	// The ID of this Amazon DataZone environment profile.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The name of this Amazon DataZone environment profile.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateEnvironmentProfileOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the Amazon DataZone project in which this environment profile is
	// created.
	ProjectId *string `locationName:"projectId" type:"string"`

	// The timestamp of when this environment profile was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The user parameters of this Amazon DataZone environment profile.
	UserParameters []*CustomParameter `locationName:"userParameters" 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 CreateEnvironmentProfileOutput) String() string {
	return awsutil.Prettify(s)
}

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

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *CreateEnvironmentProfileOutput) SetAwsAccountId(v string) *CreateEnvironmentProfileOutput {
	s.AwsAccountId = &v
	return s
}

// SetAwsAccountRegion sets the AwsAccountRegion field's value.
func (s *CreateEnvironmentProfileOutput) SetAwsAccountRegion(v string) *CreateEnvironmentProfileOutput {
	s.AwsAccountRegion = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *CreateEnvironmentProfileOutput) SetCreatedAt(v time.Time) *CreateEnvironmentProfileOutput {
	s.CreatedAt = &v
	return s
}

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

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

// SetDomainId sets the DomainId field's value.
func (s *CreateEnvironmentProfileOutput) SetDomainId(v string) *CreateEnvironmentProfileOutput {
	s.DomainId = &v
	return s
}

// SetEnvironmentBlueprintId sets the EnvironmentBlueprintId field's value.
func (s *CreateEnvironmentProfileOutput) SetEnvironmentBlueprintId(v string) *CreateEnvironmentProfileOutput {
	s.EnvironmentBlueprintId = &v
	return s
}

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

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

// SetProjectId sets the ProjectId field's value.
func (s *CreateEnvironmentProfileOutput) SetProjectId(v string) *CreateEnvironmentProfileOutput {
	s.ProjectId = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *CreateEnvironmentProfileOutput) SetUpdatedAt(v time.Time) *CreateEnvironmentProfileOutput {
	s.UpdatedAt = &v
	return s
}

// SetUserParameters sets the UserParameters field's value.
func (s *CreateEnvironmentProfileOutput) SetUserParameters(v []*CustomParameter) *CreateEnvironmentProfileOutput {
	s.UserParameters = v
	return s
}

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

	// The description of this Amazon DataZone metadata form type.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateFormTypeInput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which this metadata form type is
	// created.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The model of this Amazon DataZone metadata form type.
	//
	// Model is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateFormTypeInput's
	// String and GoString methods.
	//
	// Model is a required field
	Model *Model `locationName:"model" type:"structure" required:"true" sensitive:"true"`

	// The name of this Amazon DataZone metadata form type.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateFormTypeInput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the Amazon DataZone project that owns this metadata form type.
	//
	// OwningProjectIdentifier is a required field
	OwningProjectIdentifier *string `locationName:"owningProjectIdentifier" type:"string" required:"true"`

	// The status of this Amazon DataZone metadata form type.
	Status *string `locationName:"status" type:"string" enum:"FormTypeStatus"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateFormTypeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateFormTypeInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Model == nil {
		invalidParams.Add(request.NewErrParamRequired("Model"))
	}
	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.OwningProjectIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("OwningProjectIdentifier"))
	}
	if s.Model != nil {
		if err := s.Model.Validate(); err != nil {
			invalidParams.AddNested("Model", err.(request.ErrInvalidParams))
		}
	}

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateFormTypeInput) SetDomainIdentifier(v string) *CreateFormTypeInput {
	s.DomainIdentifier = &v
	return s
}

// SetModel sets the Model field's value.
func (s *CreateFormTypeInput) SetModel(v *Model) *CreateFormTypeInput {
	s.Model = v
	return s
}

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

// SetOwningProjectIdentifier sets the OwningProjectIdentifier field's value.
func (s *CreateFormTypeInput) SetOwningProjectIdentifier(v string) *CreateFormTypeInput {
	s.OwningProjectIdentifier = &v
	return s
}

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

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

	// The description of this Amazon DataZone metadata form type.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateFormTypeOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which this metadata form type is
	// created.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The name of this Amazon DataZone metadata form type.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateFormTypeOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which this metadata form type was
	// originally created.
	OriginDomainId *string `locationName:"originDomainId" type:"string"`

	// The ID of the project in which this Amazon DataZone metadata form type was
	// originally created.
	OriginProjectId *string `locationName:"originProjectId" type:"string"`

	// The ID of the project that owns this Amazon DataZone metadata form type.
	OwningProjectId *string `locationName:"owningProjectId" type:"string"`

	// The revision of this Amazon DataZone metadata form type.
	//
	// Revision is a required field
	Revision *string `locationName:"revision" 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 CreateFormTypeOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

// SetDomainId sets the DomainId field's value.
func (s *CreateFormTypeOutput) SetDomainId(v string) *CreateFormTypeOutput {
	s.DomainId = &v
	return s
}

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

// SetOriginDomainId sets the OriginDomainId field's value.
func (s *CreateFormTypeOutput) SetOriginDomainId(v string) *CreateFormTypeOutput {
	s.OriginDomainId = &v
	return s
}

// SetOriginProjectId sets the OriginProjectId field's value.
func (s *CreateFormTypeOutput) SetOriginProjectId(v string) *CreateFormTypeOutput {
	s.OriginProjectId = &v
	return s
}

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *CreateFormTypeOutput) SetOwningProjectId(v string) *CreateFormTypeOutput {
	s.OwningProjectId = &v
	return s
}

// SetRevision sets the Revision field's value.
func (s *CreateFormTypeOutput) SetRevision(v string) *CreateFormTypeOutput {
	s.Revision = &v
	return s
}

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

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The description of this business glossary.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateGlossaryInput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which this business glossary is created.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The name of this business glossary.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateGlossaryInput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the project that currently owns business glossary.
	//
	// OwningProjectIdentifier is a required field
	OwningProjectIdentifier *string `locationName:"owningProjectIdentifier" type:"string" required:"true"`

	// The status of this business glossary.
	Status *string `locationName:"status" type:"string" enum:"GlossaryStatus"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateGlossaryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateGlossaryInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 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.OwningProjectIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("OwningProjectIdentifier"))
	}

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateGlossaryInput) SetDomainIdentifier(v string) *CreateGlossaryInput {
	s.DomainIdentifier = &v
	return s
}

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

// SetOwningProjectIdentifier sets the OwningProjectIdentifier field's value.
func (s *CreateGlossaryInput) SetOwningProjectIdentifier(v string) *CreateGlossaryInput {
	s.OwningProjectIdentifier = &v
	return s
}

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

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

	// The description of this business glossary.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateGlossaryOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which this business glossary is created.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The ID of this business glossary.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The name of this business glossary.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateGlossaryOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the project that currently owns this business glossary.
	//
	// OwningProjectId is a required field
	OwningProjectId *string `locationName:"owningProjectId" type:"string" required:"true"`

	// The status of this business glossary.
	Status *string `locationName:"status" type:"string" enum:"GlossaryStatus"`
}

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

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

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

// SetDomainId sets the DomainId field's value.
func (s *CreateGlossaryOutput) SetDomainId(v string) *CreateGlossaryOutput {
	s.DomainId = &v
	return s
}

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

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

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *CreateGlossaryOutput) SetOwningProjectId(v string) *CreateGlossaryOutput {
	s.OwningProjectId = &v
	return s
}

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

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

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The ID of the Amazon DataZone domain in which this business glossary term
	// is created.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the business glossary in which this term is created.
	//
	// GlossaryIdentifier is a required field
	GlossaryIdentifier *string `locationName:"glossaryIdentifier" type:"string" required:"true"`

	// The long description of this business glossary term.
	//
	// LongDescription is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateGlossaryTermInput's
	// String and GoString methods.
	LongDescription *string `locationName:"longDescription" type:"string" sensitive:"true"`

	// The name of this business glossary term.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateGlossaryTermInput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The short description of this business glossary term.
	//
	// ShortDescription is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateGlossaryTermInput's
	// String and GoString methods.
	ShortDescription *string `locationName:"shortDescription" type:"string" sensitive:"true"`

	// The status of this business glossary term.
	Status *string `locationName:"status" type:"string" enum:"GlossaryTermStatus"`

	// The term relations of this business glossary term.
	TermRelations *TermRelations `locationName:"termRelations" type:"structure"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateGlossaryTermInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateGlossaryTermInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.GlossaryIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("GlossaryIdentifier"))
	}
	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.TermRelations != nil {
		if err := s.TermRelations.Validate(); err != nil {
			invalidParams.AddNested("TermRelations", err.(request.ErrInvalidParams))
		}
	}

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateGlossaryTermInput) SetDomainIdentifier(v string) *CreateGlossaryTermInput {
	s.DomainIdentifier = &v
	return s
}

// SetGlossaryIdentifier sets the GlossaryIdentifier field's value.
func (s *CreateGlossaryTermInput) SetGlossaryIdentifier(v string) *CreateGlossaryTermInput {
	s.GlossaryIdentifier = &v
	return s
}

// SetLongDescription sets the LongDescription field's value.
func (s *CreateGlossaryTermInput) SetLongDescription(v string) *CreateGlossaryTermInput {
	s.LongDescription = &v
	return s
}

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

// SetShortDescription sets the ShortDescription field's value.
func (s *CreateGlossaryTermInput) SetShortDescription(v string) *CreateGlossaryTermInput {
	s.ShortDescription = &v
	return s
}

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

// SetTermRelations sets the TermRelations field's value.
func (s *CreateGlossaryTermInput) SetTermRelations(v *TermRelations) *CreateGlossaryTermInput {
	s.TermRelations = v
	return s
}

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

	// The ID of the Amazon DataZone domain in which this business glossary term
	// is created.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The ID of the business glossary in which this term is created.
	//
	// GlossaryId is a required field
	GlossaryId *string `locationName:"glossaryId" type:"string" required:"true"`

	// The ID of this business glossary term.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The long description of this business glossary term.
	//
	// LongDescription is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateGlossaryTermOutput's
	// String and GoString methods.
	LongDescription *string `locationName:"longDescription" type:"string" sensitive:"true"`

	// The name of this business glossary term.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateGlossaryTermOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The short description of this business glossary term.
	//
	// ShortDescription is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateGlossaryTermOutput's
	// String and GoString methods.
	ShortDescription *string `locationName:"shortDescription" type:"string" sensitive:"true"`

	// The status of this business glossary term.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"GlossaryTermStatus"`

	// The term relations of this business glossary term.
	TermRelations *TermRelations `locationName:"termRelations" type:"structure"`
}

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

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

// SetDomainId sets the DomainId field's value.
func (s *CreateGlossaryTermOutput) SetDomainId(v string) *CreateGlossaryTermOutput {
	s.DomainId = &v
	return s
}

// SetGlossaryId sets the GlossaryId field's value.
func (s *CreateGlossaryTermOutput) SetGlossaryId(v string) *CreateGlossaryTermOutput {
	s.GlossaryId = &v
	return s
}

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

// SetLongDescription sets the LongDescription field's value.
func (s *CreateGlossaryTermOutput) SetLongDescription(v string) *CreateGlossaryTermOutput {
	s.LongDescription = &v
	return s
}

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

// SetShortDescription sets the ShortDescription field's value.
func (s *CreateGlossaryTermOutput) SetShortDescription(v string) *CreateGlossaryTermOutput {
	s.ShortDescription = &v
	return s
}

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

// SetTermRelations sets the TermRelations field's value.
func (s *CreateGlossaryTermOutput) SetTermRelations(v *TermRelations) *CreateGlossaryTermOutput {
	s.TermRelations = v
	return s
}

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

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`

	// The identifier of the Amazon DataZone domain in which the group profile is
	// created.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the group for which the group profile is created.
	//
	// GroupIdentifier is a required field
	GroupIdentifier *string `locationName:"groupIdentifier" type:"string" required:"true"`
}

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

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateGroupProfileInput) SetDomainIdentifier(v string) *CreateGroupProfileInput {
	s.DomainIdentifier = &v
	return s
}

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

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

	// The identifier of the Amazon DataZone domain in which the group profile is
	// created.
	DomainId *string `locationName:"domainId" type:"string"`

	// The name of the group for which group profile is created.
	//
	// GroupName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateGroupProfileOutput's
	// String and GoString methods.
	GroupName *string `locationName:"groupName" min:"1" type:"string" sensitive:"true"`

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

	// The status of the group profile.
	Status *string `locationName:"status" type:"string" enum:"GroupProfileStatus"`
}

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

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

// SetDomainId sets the DomainId field's value.
func (s *CreateGroupProfileOutput) SetDomainId(v string) *CreateGroupProfileOutput {
	s.DomainId = &v
	return s
}

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

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

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

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

	// Action is a required field
	Action *string `locationName:"action" type:"string" required:"true" enum:"ChangeAction"`

	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// EntityIdentifier is a required field
	EntityIdentifier *string `locationName:"entityIdentifier" type:"string" required:"true"`

	EntityRevision *string `locationName:"entityRevision" min:"1" type:"string"`

	// EntityType is a required field
	EntityType *string `locationName:"entityType" type:"string" required:"true" enum:"EntityType"`
}

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

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

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

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

// SetAction sets the Action field's value.
func (s *CreateListingChangeSetInput) SetAction(v string) *CreateListingChangeSetInput {
	s.Action = &v
	return s
}

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateListingChangeSetInput) SetDomainIdentifier(v string) *CreateListingChangeSetInput {
	s.DomainIdentifier = &v
	return s
}

// SetEntityIdentifier sets the EntityIdentifier field's value.
func (s *CreateListingChangeSetInput) SetEntityIdentifier(v string) *CreateListingChangeSetInput {
	s.EntityIdentifier = &v
	return s
}

// SetEntityRevision sets the EntityRevision field's value.
func (s *CreateListingChangeSetInput) SetEntityRevision(v string) *CreateListingChangeSetInput {
	s.EntityRevision = &v
	return s
}

// SetEntityType sets the EntityType field's value.
func (s *CreateListingChangeSetInput) SetEntityType(v string) *CreateListingChangeSetInput {
	s.EntityType = &v
	return s
}

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

	// ListingId is a required field
	ListingId *string `locationName:"listingId" type:"string" required:"true"`

	// ListingRevision is a required field
	ListingRevision *string `locationName:"listingRevision" min:"1" type:"string" required:"true"`

	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"ListingStatus"`
}

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

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

// SetListingId sets the ListingId field's value.
func (s *CreateListingChangeSetOutput) SetListingId(v string) *CreateListingChangeSetOutput {
	s.ListingId = &v
	return s
}

// SetListingRevision sets the ListingRevision field's value.
func (s *CreateListingChangeSetOutput) SetListingRevision(v string) *CreateListingChangeSetOutput {
	s.ListingRevision = &v
	return s
}

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

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

	// The description of the Amazon DataZone project.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateProjectInput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which this project is created.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The glossary terms that can be used in this Amazon DataZone project.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// The name of the Amazon DataZone project.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateProjectInput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateProjectInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateProjectInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.GlossaryTerms != nil && len(s.GlossaryTerms) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GlossaryTerms", 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
}

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateProjectInput) SetDomainIdentifier(v string) *CreateProjectInput {
	s.DomainIdentifier = &v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *CreateProjectInput) SetGlossaryTerms(v []*string) *CreateProjectInput {
	s.GlossaryTerms = v
	return s
}

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

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

	// The designation of the project membership.
	//
	// Designation is a required field
	Designation *string `locationName:"designation" type:"string" required:"true" enum:"UserDesignation"`

	// The ID of the Amazon DataZone domain in which project membership is created.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The project member whose project membership was created.
	//
	// Member is a required field
	Member *Member `locationName:"member" type:"structure" required:"true"`

	// The ID of the project for which this project membership was created.
	//
	// ProjectIdentifier is a required field
	ProjectIdentifier *string `location:"uri" locationName:"projectIdentifier" type:"string" required:"true"`
}

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

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

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

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

// SetDesignation sets the Designation field's value.
func (s *CreateProjectMembershipInput) SetDesignation(v string) *CreateProjectMembershipInput {
	s.Designation = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateProjectMembershipInput) SetDomainIdentifier(v string) *CreateProjectMembershipInput {
	s.DomainIdentifier = &v
	return s
}

// SetMember sets the Member field's value.
func (s *CreateProjectMembershipInput) SetMember(v *Member) *CreateProjectMembershipInput {
	s.Member = v
	return s
}

// SetProjectIdentifier sets the ProjectIdentifier field's value.
func (s *CreateProjectMembershipInput) SetProjectIdentifier(v string) *CreateProjectMembershipInput {
	s.ProjectIdentifier = &v
	return s
}

type CreateProjectMembershipOutput 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 CreateProjectMembershipOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

	// The timestamp of when the project was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The Amazon DataZone user who created the project.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The description of the project.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateProjectOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which the project was created.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// Reasons for failed project deletion
	FailureReasons []*ProjectDeletionError `locationName:"failureReasons" type:"list"`

	// The glossary terms that can be used in the project.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// The ID of the Amazon DataZone project.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The timestamp of when the project was last updated.
	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The name of the project.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateProjectOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// Status of the project
	ProjectStatus *string `locationName:"projectStatus" type:"string" enum:"ProjectStatus"`
}

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

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *CreateProjectOutput) SetCreatedAt(v time.Time) *CreateProjectOutput {
	s.CreatedAt = &v
	return s
}

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

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

// SetDomainId sets the DomainId field's value.
func (s *CreateProjectOutput) SetDomainId(v string) *CreateProjectOutput {
	s.DomainId = &v
	return s
}

// SetFailureReasons sets the FailureReasons field's value.
func (s *CreateProjectOutput) SetFailureReasons(v []*ProjectDeletionError) *CreateProjectOutput {
	s.FailureReasons = v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *CreateProjectOutput) SetGlossaryTerms(v []*string) *CreateProjectOutput {
	s.GlossaryTerms = v
	return s
}

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

// SetLastUpdatedAt sets the LastUpdatedAt field's value.
func (s *CreateProjectOutput) SetLastUpdatedAt(v time.Time) *CreateProjectOutput {
	s.LastUpdatedAt = &v
	return s
}

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

// SetProjectStatus sets the ProjectStatus field's value.
func (s *CreateProjectOutput) SetProjectStatus(v string) *CreateProjectOutput {
	s.ProjectStatus = &v
	return s
}

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

	// The names of the assets for which the subscription grant is created.
	AssetTargetNames []*AssetTargetNameMap `locationName:"assetTargetNames" type:"list"`

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`

	// The ID of the Amazon DataZone domain in which the subscription grant is created.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the environment in which the subscription grant is created.
	//
	// EnvironmentIdentifier is a required field
	EnvironmentIdentifier *string `locationName:"environmentIdentifier" type:"string" required:"true"`

	// The entity to which the subscription is to be granted.
	//
	// GrantedEntity is a required field
	GrantedEntity *GrantedEntityInput_ `locationName:"grantedEntity" type:"structure" required:"true"`

	// The ID of the subscription target for which the subscription grant is created.
	//
	// SubscriptionTargetIdentifier is a required field
	SubscriptionTargetIdentifier *string `locationName:"subscriptionTargetIdentifier" type:"string" required:"true"`
}

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

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

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

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

// SetAssetTargetNames sets the AssetTargetNames field's value.
func (s *CreateSubscriptionGrantInput) SetAssetTargetNames(v []*AssetTargetNameMap) *CreateSubscriptionGrantInput {
	s.AssetTargetNames = v
	return s
}

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateSubscriptionGrantInput) SetDomainIdentifier(v string) *CreateSubscriptionGrantInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnvironmentIdentifier sets the EnvironmentIdentifier field's value.
func (s *CreateSubscriptionGrantInput) SetEnvironmentIdentifier(v string) *CreateSubscriptionGrantInput {
	s.EnvironmentIdentifier = &v
	return s
}

// SetGrantedEntity sets the GrantedEntity field's value.
func (s *CreateSubscriptionGrantInput) SetGrantedEntity(v *GrantedEntityInput_) *CreateSubscriptionGrantInput {
	s.GrantedEntity = v
	return s
}

// SetSubscriptionTargetIdentifier sets the SubscriptionTargetIdentifier field's value.
func (s *CreateSubscriptionGrantInput) SetSubscriptionTargetIdentifier(v string) *CreateSubscriptionGrantInput {
	s.SubscriptionTargetIdentifier = &v
	return s
}

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

	// The assets for which the subscription grant is created.
	Assets []*SubscribedAsset `locationName:"assets" type:"list"`

	// A timestamp of when the subscription grant is created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who created the subscription grant.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The ID of the Amazon DataZone domain in which the subscription grant is created.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The entity to which the subscription is granted.
	//
	// GrantedEntity is a required field
	GrantedEntity *GrantedEntity `locationName:"grantedEntity" type:"structure" required:"true"`

	// The ID of the subscription grant.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The status of the subscription grant.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionGrantOverallStatus"`

	// The identifier of the subscription grant.
	SubscriptionId *string `locationName:"subscriptionId" type:"string"`

	// The ID of the subscription target for which the subscription grant is created.
	//
	// SubscriptionTargetId is a required field
	SubscriptionTargetId *string `locationName:"subscriptionTargetId" type:"string" required:"true"`

	// A timestamp of when the subscription grant was updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who updated the subscription grant.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

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

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

// SetAssets sets the Assets field's value.
func (s *CreateSubscriptionGrantOutput) SetAssets(v []*SubscribedAsset) *CreateSubscriptionGrantOutput {
	s.Assets = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *CreateSubscriptionGrantOutput) SetCreatedAt(v time.Time) *CreateSubscriptionGrantOutput {
	s.CreatedAt = &v
	return s
}

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

// SetDomainId sets the DomainId field's value.
func (s *CreateSubscriptionGrantOutput) SetDomainId(v string) *CreateSubscriptionGrantOutput {
	s.DomainId = &v
	return s
}

// SetGrantedEntity sets the GrantedEntity field's value.
func (s *CreateSubscriptionGrantOutput) SetGrantedEntity(v *GrantedEntity) *CreateSubscriptionGrantOutput {
	s.GrantedEntity = v
	return s
}

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

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

// SetSubscriptionId sets the SubscriptionId field's value.
func (s *CreateSubscriptionGrantOutput) SetSubscriptionId(v string) *CreateSubscriptionGrantOutput {
	s.SubscriptionId = &v
	return s
}

// SetSubscriptionTargetId sets the SubscriptionTargetId field's value.
func (s *CreateSubscriptionGrantOutput) SetSubscriptionTargetId(v string) *CreateSubscriptionGrantOutput {
	s.SubscriptionTargetId = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *CreateSubscriptionGrantOutput) SetUpdatedAt(v time.Time) *CreateSubscriptionGrantOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *CreateSubscriptionGrantOutput) SetUpdatedBy(v string) *CreateSubscriptionGrantOutput {
	s.UpdatedBy = &v
	return s
}

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

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`

	// The ID of the Amazon DataZone domain in which the subscription request is
	// created.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The reason for the subscription request.
	//
	// RequestReason is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateSubscriptionRequestInput's
	// String and GoString methods.
	//
	// RequestReason is a required field
	RequestReason *string `locationName:"requestReason" min:"1" type:"string" required:"true" sensitive:"true"`

	// SubscribedListings is a required field
	SubscribedListings []*SubscribedListingInput_ `locationName:"subscribedListings" min:"1" type:"list" required:"true"`

	// The Amazon DataZone principals for whom the subscription request is created.
	//
	// SubscribedPrincipals is a required field
	SubscribedPrincipals []*SubscribedPrincipalInput_ `locationName:"subscribedPrincipals" 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 CreateSubscriptionRequestInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateSubscriptionRequestInput) SetDomainIdentifier(v string) *CreateSubscriptionRequestInput {
	s.DomainIdentifier = &v
	return s
}

// SetRequestReason sets the RequestReason field's value.
func (s *CreateSubscriptionRequestInput) SetRequestReason(v string) *CreateSubscriptionRequestInput {
	s.RequestReason = &v
	return s
}

// SetSubscribedListings sets the SubscribedListings field's value.
func (s *CreateSubscriptionRequestInput) SetSubscribedListings(v []*SubscribedListingInput_) *CreateSubscriptionRequestInput {
	s.SubscribedListings = v
	return s
}

// SetSubscribedPrincipals sets the SubscribedPrincipals field's value.
func (s *CreateSubscriptionRequestInput) SetSubscribedPrincipals(v []*SubscribedPrincipalInput_) *CreateSubscriptionRequestInput {
	s.SubscribedPrincipals = v
	return s
}

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

	// A timestamp of when the subscription request is created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who created the subscription request.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The decision comment of the subscription request.
	//
	// DecisionComment is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateSubscriptionRequestOutput's
	// String and GoString methods.
	DecisionComment *string `locationName:"decisionComment" min:"1" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in whcih the subscription request is
	// created.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The ID of the subscription request.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The reason for the subscription request.
	//
	// RequestReason is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateSubscriptionRequestOutput's
	// String and GoString methods.
	//
	// RequestReason is a required field
	RequestReason *string `locationName:"requestReason" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the reviewer of the subscription request.
	ReviewerId *string `locationName:"reviewerId" type:"string"`

	// The status of the subscription request.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionRequestStatus"`

	// SubscribedListings is a required field
	SubscribedListings []*SubscribedListing `locationName:"subscribedListings" min:"1" type:"list" required:"true"`

	// The subscribed principals of the subscription request.
	//
	// SubscribedPrincipals is a required field
	SubscribedPrincipals []*SubscribedPrincipal `locationName:"subscribedPrincipals" min:"1" type:"list" required:"true"`

	// The timestamp of when the subscription request was updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who updated the subscription request.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

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

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *CreateSubscriptionRequestOutput) SetCreatedAt(v time.Time) *CreateSubscriptionRequestOutput {
	s.CreatedAt = &v
	return s
}

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

// SetDecisionComment sets the DecisionComment field's value.
func (s *CreateSubscriptionRequestOutput) SetDecisionComment(v string) *CreateSubscriptionRequestOutput {
	s.DecisionComment = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *CreateSubscriptionRequestOutput) SetDomainId(v string) *CreateSubscriptionRequestOutput {
	s.DomainId = &v
	return s
}

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

// SetRequestReason sets the RequestReason field's value.
func (s *CreateSubscriptionRequestOutput) SetRequestReason(v string) *CreateSubscriptionRequestOutput {
	s.RequestReason = &v
	return s
}

// SetReviewerId sets the ReviewerId field's value.
func (s *CreateSubscriptionRequestOutput) SetReviewerId(v string) *CreateSubscriptionRequestOutput {
	s.ReviewerId = &v
	return s
}

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

// SetSubscribedListings sets the SubscribedListings field's value.
func (s *CreateSubscriptionRequestOutput) SetSubscribedListings(v []*SubscribedListing) *CreateSubscriptionRequestOutput {
	s.SubscribedListings = v
	return s
}

// SetSubscribedPrincipals sets the SubscribedPrincipals field's value.
func (s *CreateSubscriptionRequestOutput) SetSubscribedPrincipals(v []*SubscribedPrincipal) *CreateSubscriptionRequestOutput {
	s.SubscribedPrincipals = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *CreateSubscriptionRequestOutput) SetUpdatedAt(v time.Time) *CreateSubscriptionRequestOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *CreateSubscriptionRequestOutput) SetUpdatedBy(v string) *CreateSubscriptionRequestOutput {
	s.UpdatedBy = &v
	return s
}

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

	// The asset types that can be included in the subscription target.
	//
	// ApplicableAssetTypes is a required field
	ApplicableAssetTypes []*string `locationName:"applicableAssetTypes" type:"list" required:"true"`

	// The authorized principals of the subscription target.
	//
	// AuthorizedPrincipals is a required field
	AuthorizedPrincipals []*string `locationName:"authorizedPrincipals" min:"1" type:"list" required:"true"`

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`

	// The ID of the Amazon DataZone domain in which subscription target is created.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the environment in which subscription target is created.
	//
	// EnvironmentIdentifier is a required field
	EnvironmentIdentifier *string `location:"uri" locationName:"environmentIdentifier" type:"string" required:"true"`

	// The manage access role that is used to create the subscription target.
	//
	// ManageAccessRole is a required field
	ManageAccessRole *string `locationName:"manageAccessRole" type:"string" required:"true"`

	// The name of the subscription target.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateSubscriptionTargetInput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The provider of the subscription target.
	Provider *string `locationName:"provider" type:"string"`

	// The configuration of the subscription target.
	//
	// SubscriptionTargetConfig is a required field
	SubscriptionTargetConfig []*SubscriptionTargetForm `locationName:"subscriptionTargetConfig" type:"list" required:"true"`

	// The type of the subscription target.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateSubscriptionTargetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "CreateSubscriptionTargetInput"}
	if s.ApplicableAssetTypes == nil {
		invalidParams.Add(request.NewErrParamRequired("ApplicableAssetTypes"))
	}
	if s.AuthorizedPrincipals == nil {
		invalidParams.Add(request.NewErrParamRequired("AuthorizedPrincipals"))
	}
	if s.AuthorizedPrincipals != nil && len(s.AuthorizedPrincipals) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AuthorizedPrincipals", 1))
	}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.EnvironmentIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("EnvironmentIdentifier"))
	}
	if s.EnvironmentIdentifier != nil && len(*s.EnvironmentIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EnvironmentIdentifier", 1))
	}
	if s.ManageAccessRole == nil {
		invalidParams.Add(request.NewErrParamRequired("ManageAccessRole"))
	}
	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.SubscriptionTargetConfig == nil {
		invalidParams.Add(request.NewErrParamRequired("SubscriptionTargetConfig"))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}
	if s.SubscriptionTargetConfig != nil {
		for i, v := range s.SubscriptionTargetConfig {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SubscriptionTargetConfig", i), err.(request.ErrInvalidParams))
			}
		}
	}

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

// SetApplicableAssetTypes sets the ApplicableAssetTypes field's value.
func (s *CreateSubscriptionTargetInput) SetApplicableAssetTypes(v []*string) *CreateSubscriptionTargetInput {
	s.ApplicableAssetTypes = v
	return s
}

// SetAuthorizedPrincipals sets the AuthorizedPrincipals field's value.
func (s *CreateSubscriptionTargetInput) SetAuthorizedPrincipals(v []*string) *CreateSubscriptionTargetInput {
	s.AuthorizedPrincipals = v
	return s
}

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateSubscriptionTargetInput) SetDomainIdentifier(v string) *CreateSubscriptionTargetInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnvironmentIdentifier sets the EnvironmentIdentifier field's value.
func (s *CreateSubscriptionTargetInput) SetEnvironmentIdentifier(v string) *CreateSubscriptionTargetInput {
	s.EnvironmentIdentifier = &v
	return s
}

// SetManageAccessRole sets the ManageAccessRole field's value.
func (s *CreateSubscriptionTargetInput) SetManageAccessRole(v string) *CreateSubscriptionTargetInput {
	s.ManageAccessRole = &v
	return s
}

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

// SetProvider sets the Provider field's value.
func (s *CreateSubscriptionTargetInput) SetProvider(v string) *CreateSubscriptionTargetInput {
	s.Provider = &v
	return s
}

// SetSubscriptionTargetConfig sets the SubscriptionTargetConfig field's value.
func (s *CreateSubscriptionTargetInput) SetSubscriptionTargetConfig(v []*SubscriptionTargetForm) *CreateSubscriptionTargetInput {
	s.SubscriptionTargetConfig = v
	return s
}

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

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

	// The asset types that can be included in the subscription target.
	//
	// ApplicableAssetTypes is a required field
	ApplicableAssetTypes []*string `locationName:"applicableAssetTypes" type:"list" required:"true"`

	// The authorised principals of the subscription target.
	//
	// AuthorizedPrincipals is a required field
	AuthorizedPrincipals []*string `locationName:"authorizedPrincipals" min:"1" type:"list" required:"true"`

	// The timestamp of when the subscription target was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who created the subscription target.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The ID of the Amazon DataZone domain in which the subscription target was
	// created.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The ID of the environment in which the subscription target was created.
	//
	// EnvironmentId is a required field
	EnvironmentId *string `locationName:"environmentId" type:"string" required:"true"`

	// The ID of the subscription target.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The manage access role with which the subscription target was created.
	//
	// ManageAccessRole is a required field
	ManageAccessRole *string `locationName:"manageAccessRole" type:"string" required:"true"`

	// The name of the subscription target.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CreateSubscriptionTargetOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// ???
	//
	// ProjectId is a required field
	ProjectId *string `locationName:"projectId" type:"string" required:"true"`

	// The provider of the subscription target.
	//
	// Provider is a required field
	Provider *string `locationName:"provider" type:"string" required:"true"`

	// The configuration of the subscription target.
	//
	// SubscriptionTargetConfig is a required field
	SubscriptionTargetConfig []*SubscriptionTargetForm `locationName:"subscriptionTargetConfig" type:"list" required:"true"`

	// The type of the subscription target.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true"`

	// The timestamp of when the subscription target was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`

	// The Amazon DataZone user who updated the subscription target.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

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

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

// SetApplicableAssetTypes sets the ApplicableAssetTypes field's value.
func (s *CreateSubscriptionTargetOutput) SetApplicableAssetTypes(v []*string) *CreateSubscriptionTargetOutput {
	s.ApplicableAssetTypes = v
	return s
}

// SetAuthorizedPrincipals sets the AuthorizedPrincipals field's value.
func (s *CreateSubscriptionTargetOutput) SetAuthorizedPrincipals(v []*string) *CreateSubscriptionTargetOutput {
	s.AuthorizedPrincipals = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *CreateSubscriptionTargetOutput) SetCreatedAt(v time.Time) *CreateSubscriptionTargetOutput {
	s.CreatedAt = &v
	return s
}

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

// SetDomainId sets the DomainId field's value.
func (s *CreateSubscriptionTargetOutput) SetDomainId(v string) *CreateSubscriptionTargetOutput {
	s.DomainId = &v
	return s
}

// SetEnvironmentId sets the EnvironmentId field's value.
func (s *CreateSubscriptionTargetOutput) SetEnvironmentId(v string) *CreateSubscriptionTargetOutput {
	s.EnvironmentId = &v
	return s
}

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

// SetManageAccessRole sets the ManageAccessRole field's value.
func (s *CreateSubscriptionTargetOutput) SetManageAccessRole(v string) *CreateSubscriptionTargetOutput {
	s.ManageAccessRole = &v
	return s
}

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

// SetProjectId sets the ProjectId field's value.
func (s *CreateSubscriptionTargetOutput) SetProjectId(v string) *CreateSubscriptionTargetOutput {
	s.ProjectId = &v
	return s
}

// SetProvider sets the Provider field's value.
func (s *CreateSubscriptionTargetOutput) SetProvider(v string) *CreateSubscriptionTargetOutput {
	s.Provider = &v
	return s
}

// SetSubscriptionTargetConfig sets the SubscriptionTargetConfig field's value.
func (s *CreateSubscriptionTargetOutput) SetSubscriptionTargetConfig(v []*SubscriptionTargetForm) *CreateSubscriptionTargetOutput {
	s.SubscriptionTargetConfig = v
	return s
}

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

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *CreateSubscriptionTargetOutput) SetUpdatedAt(v time.Time) *CreateSubscriptionTargetOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *CreateSubscriptionTargetOutput) SetUpdatedBy(v string) *CreateSubscriptionTargetOutput {
	s.UpdatedBy = &v
	return s
}

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

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`

	// The identifier of the Amazon DataZone domain in which a user profile is created.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the user for which the user profile is created.
	//
	// UserIdentifier is a required field
	UserIdentifier *string `locationName:"userIdentifier" type:"string" required:"true"`

	// The user type of the user for which the user profile is created.
	UserType *string `locationName:"userType" type:"string" enum:"UserType"`
}

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

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *CreateUserProfileInput) SetDomainIdentifier(v string) *CreateUserProfileInput {
	s.DomainIdentifier = &v
	return s
}

// SetUserIdentifier sets the UserIdentifier field's value.
func (s *CreateUserProfileInput) SetUserIdentifier(v string) *CreateUserProfileInput {
	s.UserIdentifier = &v
	return s
}

// SetUserType sets the UserType field's value.
func (s *CreateUserProfileInput) SetUserType(v string) *CreateUserProfileInput {
	s.UserType = &v
	return s
}

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

	// The details of the user profile in Amazon DataZone.
	Details *UserProfileDetails `locationName:"details" type:"structure"`

	// The identifier of the Amazon DataZone domain in which a user profile is created.
	DomainId *string `locationName:"domainId" type:"string"`

	// The identifier of the user profile.
	Id *string `locationName:"id" type:"string"`

	// The status of the user profile.
	Status *string `locationName:"status" type:"string" enum:"UserProfileStatus"`

	// The type of the user profile.
	Type *string `locationName:"type" type:"string" enum:"UserProfileType"`
}

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

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

// SetDetails sets the Details field's value.
func (s *CreateUserProfileOutput) SetDetails(v *UserProfileDetails) *CreateUserProfileOutput {
	s.Details = v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *CreateUserProfileOutput) SetDomainId(v string) *CreateUserProfileOutput {
	s.DomainId = &v
	return s
}

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

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

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

// The details of user parameters of an environment blueprint.
type CustomParameter struct {
	_ struct{} `type:"structure"`

	// The default value of the parameter.
	DefaultValue *string `locationName:"defaultValue" type:"string"`

	// The description of the parameter.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by CustomParameter's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The filed type of the parameter.
	//
	// FieldType is a required field
	FieldType *string `locationName:"fieldType" type:"string" required:"true"`

	// Specifies whether the parameter is editable.
	IsEditable *bool `locationName:"isEditable" type:"boolean"`

	// Specifies whether the custom parameter is optional.
	IsOptional *bool `locationName:"isOptional" type:"boolean"`

	// The key name of the parameter.
	//
	// KeyName is a required field
	KeyName *string `locationName:"keyName" type:"string" required:"true"`
}

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

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

// SetDefaultValue sets the DefaultValue field's value.
func (s *CustomParameter) SetDefaultValue(v string) *CustomParameter {
	s.DefaultValue = &v
	return s
}

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

// SetFieldType sets the FieldType field's value.
func (s *CustomParameter) SetFieldType(v string) *CustomParameter {
	s.FieldType = &v
	return s
}

// SetIsEditable sets the IsEditable field's value.
func (s *CustomParameter) SetIsEditable(v bool) *CustomParameter {
	s.IsEditable = &v
	return s
}

// SetIsOptional sets the IsOptional field's value.
func (s *CustomParameter) SetIsOptional(v bool) *CustomParameter {
	s.IsOptional = &v
	return s
}

// SetKeyName sets the KeyName field's value.
func (s *CustomParameter) SetKeyName(v string) *CustomParameter {
	s.KeyName = &v
	return s
}

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

	DomainId *string `locationName:"domainId" type:"string"`

	ItemId *string `locationName:"itemId" type:"string"`
}

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

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

// SetDomainId sets the DomainId field's value.
func (s *DataProductItem) SetDomainId(v string) *DataProductItem {
	s.DomainId = &v
	return s
}

// SetItemId sets the ItemId field's value.
func (s *DataProductItem) SetItemId(v string) *DataProductItem {
	s.ItemId = &v
	return s
}

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

	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	CreatedBy *string `locationName:"createdBy" type:"string"`

	DataProductItems []*DataProductItem `locationName:"dataProductItems" type:"list"`

	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DataProductSummary's
	// String and GoString methods.
	Description *string `locationName:"description" min:"1" type:"string" sensitive:"true"`

	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DataProductSummary's
	// String and GoString methods.
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// OwningProjectId is a required field
	OwningProjectId *string `locationName:"owningProjectId" type:"string" required:"true"`

	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`

	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

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

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *DataProductSummary) SetCreatedAt(v time.Time) *DataProductSummary {
	s.CreatedAt = &v
	return s
}

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

// SetDataProductItems sets the DataProductItems field's value.
func (s *DataProductSummary) SetDataProductItems(v []*DataProductItem) *DataProductSummary {
	s.DataProductItems = v
	return s
}

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

// SetDomainId sets the DomainId field's value.
func (s *DataProductSummary) SetDomainId(v string) *DataProductSummary {
	s.DomainId = &v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *DataProductSummary) SetGlossaryTerms(v []*string) *DataProductSummary {
	s.GlossaryTerms = v
	return s
}

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

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

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *DataProductSummary) SetOwningProjectId(v string) *DataProductSummary {
	s.OwningProjectId = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *DataProductSummary) SetUpdatedAt(v time.Time) *DataProductSummary {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *DataProductSummary) SetUpdatedBy(v string) *DataProductSummary {
	s.UpdatedBy = &v
	return s
}

// The configuration of the data source.
type DataSourceConfigurationInput_ struct {
	_ struct{} `type:"structure"`

	// The configuration of the Amazon Web Services Glue data source.
	GlueRunConfiguration *GlueRunConfigurationInput_ `locationName:"glueRunConfiguration" type:"structure"`

	// The configuration of the Amazon Redshift data source.
	RedshiftRunConfiguration *RedshiftRunConfigurationInput_ `locationName:"redshiftRunConfiguration" type:"structure"`
}

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

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

// Validate inspects the fields of the type to determine if they are valid.
func (s *DataSourceConfigurationInput_) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DataSourceConfigurationInput_"}
	if s.GlueRunConfiguration != nil {
		if err := s.GlueRunConfiguration.Validate(); err != nil {
			invalidParams.AddNested("GlueRunConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.RedshiftRunConfiguration != nil {
		if err := s.RedshiftRunConfiguration.Validate(); err != nil {
			invalidParams.AddNested("RedshiftRunConfiguration", err.(request.ErrInvalidParams))
		}
	}

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

// SetGlueRunConfiguration sets the GlueRunConfiguration field's value.
func (s *DataSourceConfigurationInput_) SetGlueRunConfiguration(v *GlueRunConfigurationInput_) *DataSourceConfigurationInput_ {
	s.GlueRunConfiguration = v
	return s
}

// SetRedshiftRunConfiguration sets the RedshiftRunConfiguration field's value.
func (s *DataSourceConfigurationInput_) SetRedshiftRunConfiguration(v *RedshiftRunConfigurationInput_) *DataSourceConfigurationInput_ {
	s.RedshiftRunConfiguration = v
	return s
}

// The configuration of the data source.
type DataSourceConfigurationOutput_ struct {
	_ struct{} `type:"structure"`

	// The configuration of the Amazon Web Services Glue data source.
	GlueRunConfiguration *GlueRunConfigurationOutput_ `locationName:"glueRunConfiguration" type:"structure"`

	// The configuration of the Amazon Redshift data source.
	RedshiftRunConfiguration *RedshiftRunConfigurationOutput_ `locationName:"redshiftRunConfiguration" type:"structure"`
}

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

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

// SetGlueRunConfiguration sets the GlueRunConfiguration field's value.
func (s *DataSourceConfigurationOutput_) SetGlueRunConfiguration(v *GlueRunConfigurationOutput_) *DataSourceConfigurationOutput_ {
	s.GlueRunConfiguration = v
	return s
}

// SetRedshiftRunConfiguration sets the RedshiftRunConfiguration field's value.
func (s *DataSourceConfigurationOutput_) SetRedshiftRunConfiguration(v *RedshiftRunConfigurationOutput_) *DataSourceConfigurationOutput_ {
	s.RedshiftRunConfiguration = v
	return s
}

// The details of the error message that is returned if the operation cannot
// be successfully completed.
type DataSourceErrorMessage struct {
	_ struct{} `type:"structure"`

	// The details of the error message that is returned if the operation cannot
	// be successfully completed.
	ErrorDetail *string `locationName:"errorDetail" type:"string"`

	// The type of the error message that is returned if the operation cannot be
	// successfully completed.
	//
	// ErrorType is a required field
	ErrorType *string `locationName:"errorType" type:"string" required:"true" enum:"DataSourceErrorType"`
}

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

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

// SetErrorDetail sets the ErrorDetail field's value.
func (s *DataSourceErrorMessage) SetErrorDetail(v string) *DataSourceErrorMessage {
	s.ErrorDetail = &v
	return s
}

// SetErrorType sets the ErrorType field's value.
func (s *DataSourceErrorMessage) SetErrorType(v string) *DataSourceErrorMessage {
	s.ErrorType = &v
	return s
}

// The activity details of the data source run.
type DataSourceRunActivity struct {
	_ struct{} `type:"structure"`

	// The timestamp of when data source run activity was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601" required:"true"`

	// The identifier of the asset included in the data source run activity.
	DataAssetId *string `locationName:"dataAssetId" type:"string"`

	// The status of the asset included in the data source run activity.
	//
	// DataAssetStatus is a required field
	DataAssetStatus *string `locationName:"dataAssetStatus" type:"string" required:"true" enum:"DataAssetActivityStatus"`

	// The identifier of the data source for the data source run activity.
	//
	// DataSourceRunId is a required field
	DataSourceRunId *string `locationName:"dataSourceRunId" type:"string" required:"true"`

	// The database included in the data source run activity.
	//
	// Database is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DataSourceRunActivity's
	// String and GoString methods.
	//
	// Database is a required field
	Database *string `locationName:"database" min:"1" type:"string" required:"true" sensitive:"true"`

	// The details of the error message that is returned if the operation cannot
	// be successfully completed.
	ErrorMessage *DataSourceErrorMessage `locationName:"errorMessage" type:"structure"`

	// The project ID included in the data source run activity.
	//
	// ProjectId is a required field
	ProjectId *string `locationName:"projectId" type:"string" required:"true"`

	// The technical description included in the data source run activity.
	//
	// TechnicalDescription is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DataSourceRunActivity's
	// String and GoString methods.
	TechnicalDescription *string `locationName:"technicalDescription" type:"string" sensitive:"true"`

	// The technical name included in the data source run activity.
	//
	// TechnicalName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DataSourceRunActivity's
	// String and GoString methods.
	//
	// TechnicalName is a required field
	TechnicalName *string `locationName:"technicalName" min:"1" type:"string" required:"true" sensitive:"true"`

	// The timestamp of when data source run activity was updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601" required:"true"`
}

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

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *DataSourceRunActivity) SetCreatedAt(v time.Time) *DataSourceRunActivity {
	s.CreatedAt = &v
	return s
}

// SetDataAssetId sets the DataAssetId field's value.
func (s *DataSourceRunActivity) SetDataAssetId(v string) *DataSourceRunActivity {
	s.DataAssetId = &v
	return s
}

// SetDataAssetStatus sets the DataAssetStatus field's value.
func (s *DataSourceRunActivity) SetDataAssetStatus(v string) *DataSourceRunActivity {
	s.DataAssetStatus = &v
	return s
}

// SetDataSourceRunId sets the DataSourceRunId field's value.
func (s *DataSourceRunActivity) SetDataSourceRunId(v string) *DataSourceRunActivity {
	s.DataSourceRunId = &v
	return s
}

// SetDatabase sets the Database field's value.
func (s *DataSourceRunActivity) SetDatabase(v string) *DataSourceRunActivity {
	s.Database = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *DataSourceRunActivity) SetErrorMessage(v *DataSourceErrorMessage) *DataSourceRunActivity {
	s.ErrorMessage = v
	return s
}

// SetProjectId sets the ProjectId field's value.
func (s *DataSourceRunActivity) SetProjectId(v string) *DataSourceRunActivity {
	s.ProjectId = &v
	return s
}

// SetTechnicalDescription sets the TechnicalDescription field's value.
func (s *DataSourceRunActivity) SetTechnicalDescription(v string) *DataSourceRunActivity {
	s.TechnicalDescription = &v
	return s
}

// SetTechnicalName sets the TechnicalName field's value.
func (s *DataSourceRunActivity) SetTechnicalName(v string) *DataSourceRunActivity {
	s.TechnicalName = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *DataSourceRunActivity) SetUpdatedAt(v time.Time) *DataSourceRunActivity {
	s.UpdatedAt = &v
	return s
}

// The details of a data source run.
type DataSourceRunSummary struct {
	_ struct{} `type:"structure"`

	// The timestamp of when a data source run was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601" required:"true"`

	// The identifier of the data source of the data source run.
	//
	// DataSourceId is a required field
	DataSourceId *string `locationName:"dataSourceId" type:"string" required:"true"`

	// The details of the error message that is returned if the operation cannot
	// be successfully completed.
	ErrorMessage *DataSourceErrorMessage `locationName:"errorMessage" type:"structure"`

	// The identifier of the data source run.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The project ID of the data source run.
	//
	// ProjectId is a required field
	ProjectId *string `locationName:"projectId" type:"string" required:"true"`

	// The asset statistics from the data source run.
	RunStatisticsForAssets *RunStatisticsForAssets `locationName:"runStatisticsForAssets" type:"structure"`

	// The timestamp of when a data source run was started.
	StartedAt *time.Time `locationName:"startedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The status of the data source run.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"DataSourceRunStatus"`

	// The timestamp of when a data source run was stopped.
	StoppedAt *time.Time `locationName:"stoppedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The type of the data source run.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"DataSourceRunType"`

	// The timestamp of when a data source run was updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601" required:"true"`
}

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

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *DataSourceRunSummary) SetCreatedAt(v time.Time) *DataSourceRunSummary {
	s.CreatedAt = &v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *DataSourceRunSummary) SetDataSourceId(v string) *DataSourceRunSummary {
	s.DataSourceId = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *DataSourceRunSummary) SetErrorMessage(v *DataSourceErrorMessage) *DataSourceRunSummary {
	s.ErrorMessage = v
	return s
}

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

// SetProjectId sets the ProjectId field's value.
func (s *DataSourceRunSummary) SetProjectId(v string) *DataSourceRunSummary {
	s.ProjectId = &v
	return s
}

// SetRunStatisticsForAssets sets the RunStatisticsForAssets field's value.
func (s *DataSourceRunSummary) SetRunStatisticsForAssets(v *RunStatisticsForAssets) *DataSourceRunSummary {
	s.RunStatisticsForAssets = v
	return s
}

// SetStartedAt sets the StartedAt field's value.
func (s *DataSourceRunSummary) SetStartedAt(v time.Time) *DataSourceRunSummary {
	s.StartedAt = &v
	return s
}

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

// SetStoppedAt sets the StoppedAt field's value.
func (s *DataSourceRunSummary) SetStoppedAt(v time.Time) *DataSourceRunSummary {
	s.StoppedAt = &v
	return s
}

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

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *DataSourceRunSummary) SetUpdatedAt(v time.Time) *DataSourceRunSummary {
	s.UpdatedAt = &v
	return s
}

// The details of the data source.
type DataSourceSummary struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the data source was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The ID of the data source.
	//
	// DataSourceId is a required field
	DataSourceId *string `locationName:"dataSourceId" type:"string" required:"true"`

	// The ID of the Amazon DataZone domain in which the data source exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// Specifies whether the data source is enabled.
	EnableSetting *string `locationName:"enableSetting" type:"string" enum:"EnableSetting"`

	// The ID of the environment in which the data source exists.
	//
	// EnvironmentId is a required field
	EnvironmentId *string `locationName:"environmentId" type:"string" required:"true"`

	// The count of the assets created during the last data source run.
	LastRunAssetCount *int64 `locationName:"lastRunAssetCount" type:"integer"`

	// The timestamp of when the data source run was last performed.
	LastRunAt *time.Time `locationName:"lastRunAt" type:"timestamp" timestampFormat:"iso8601"`

	// The details of the error message that is returned if the operation cannot
	// be successfully completed.
	LastRunErrorMessage *DataSourceErrorMessage `locationName:"lastRunErrorMessage" type:"structure"`

	// The status of the last data source run.
	LastRunStatus *string `locationName:"lastRunStatus" type:"string" enum:"DataSourceRunStatus"`

	// The name of the data source.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DataSourceSummary's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The details of the schedule of the data source runs.
	//
	// Schedule is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DataSourceSummary's
	// String and GoString methods.
	Schedule *ScheduleConfiguration `locationName:"schedule" type:"structure" sensitive:"true"`

	// The status of the data source.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"DataSourceStatus"`

	// The type of the data source.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true"`

	// The timestamp of when the data source was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

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

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *DataSourceSummary) SetCreatedAt(v time.Time) *DataSourceSummary {
	s.CreatedAt = &v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *DataSourceSummary) SetDataSourceId(v string) *DataSourceSummary {
	s.DataSourceId = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *DataSourceSummary) SetDomainId(v string) *DataSourceSummary {
	s.DomainId = &v
	return s
}

// SetEnableSetting sets the EnableSetting field's value.
func (s *DataSourceSummary) SetEnableSetting(v string) *DataSourceSummary {
	s.EnableSetting = &v
	return s
}

// SetEnvironmentId sets the EnvironmentId field's value.
func (s *DataSourceSummary) SetEnvironmentId(v string) *DataSourceSummary {
	s.EnvironmentId = &v
	return s
}

// SetLastRunAssetCount sets the LastRunAssetCount field's value.
func (s *DataSourceSummary) SetLastRunAssetCount(v int64) *DataSourceSummary {
	s.LastRunAssetCount = &v
	return s
}

// SetLastRunAt sets the LastRunAt field's value.
func (s *DataSourceSummary) SetLastRunAt(v time.Time) *DataSourceSummary {
	s.LastRunAt = &v
	return s
}

// SetLastRunErrorMessage sets the LastRunErrorMessage field's value.
func (s *DataSourceSummary) SetLastRunErrorMessage(v *DataSourceErrorMessage) *DataSourceSummary {
	s.LastRunErrorMessage = v
	return s
}

// SetLastRunStatus sets the LastRunStatus field's value.
func (s *DataSourceSummary) SetLastRunStatus(v string) *DataSourceSummary {
	s.LastRunStatus = &v
	return s
}

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

// SetSchedule sets the Schedule field's value.
func (s *DataSourceSummary) SetSchedule(v *ScheduleConfiguration) *DataSourceSummary {
	s.Schedule = v
	return s
}

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

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

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *DataSourceSummary) SetUpdatedAt(v time.Time) *DataSourceSummary {
	s.UpdatedAt = &v
	return s
}

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

	// The ID of the Amazon DataZone domain in which the asset is deleted.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the asset that is deleted.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *DeleteAssetInput) SetDomainIdentifier(v string) *DeleteAssetInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *DeleteAssetInput) SetIdentifier(v string) *DeleteAssetInput {
	s.Identifier = &v
	return s
}

type DeleteAssetOutput 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 DeleteAssetOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

	// The ID of the Amazon DataZone domain in which the asset type is deleted.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the asset type that is deleted.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" 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 DeleteAssetTypeInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *DeleteAssetTypeInput) SetDomainIdentifier(v string) *DeleteAssetTypeInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *DeleteAssetTypeInput) SetIdentifier(v string) *DeleteAssetTypeInput {
	s.Identifier = &v
	return s
}

type DeleteAssetTypeOutput 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 DeleteAssetTypeOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `location:"querystring" locationName:"clientToken" type:"string" idempotencyToken:"true"`

	// The ID of the Amazon DataZone domain in which the data source is deleted.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the data source that is deleted.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

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

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *DeleteDataSourceInput) SetDomainIdentifier(v string) *DeleteDataSourceInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *DeleteDataSourceInput) SetIdentifier(v string) *DeleteDataSourceInput {
	s.Identifier = &v
	return s
}

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

	// The asset data forms associated with this data source.
	AssetFormsOutput []*FormOutput_ `locationName:"assetFormsOutput" type:"list"`

	// The configuration of the data source that is deleted.
	Configuration *DataSourceConfigurationOutput_ `locationName:"configuration" type:"structure"`

	// The timestamp of when this data source was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The description of the data source that is deleted.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DeleteDataSourceOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which the data source is deleted.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The enable setting of the data source that specifies whether the data source
	// is enabled or disabled.
	EnableSetting *string `locationName:"enableSetting" type:"string" enum:"EnableSetting"`

	// The ID of the environemnt associated with this data source.
	//
	// EnvironmentId is a required field
	EnvironmentId *string `locationName:"environmentId" type:"string" required:"true"`

	// Specifies the error message that is returned if the operation cannot be successfully
	// completed.
	ErrorMessage *DataSourceErrorMessage `locationName:"errorMessage" type:"structure"`

	// The ID of the data source that is deleted.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The timestamp of when the data source was last run.
	LastRunAt *time.Time `locationName:"lastRunAt" type:"timestamp" timestampFormat:"iso8601"`

	// Specifies the error message that is returned if the operation cannot be successfully
	// completed.
	LastRunErrorMessage *DataSourceErrorMessage `locationName:"lastRunErrorMessage" type:"structure"`

	// The status of the last run of this data source.
	LastRunStatus *string `locationName:"lastRunStatus" type:"string" enum:"DataSourceRunStatus"`

	// The name of the data source that is deleted.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DeleteDataSourceOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the project in which this data source exists and from which it's
	// deleted.
	//
	// ProjectId is a required field
	ProjectId *string `locationName:"projectId" type:"string" required:"true"`

	// Specifies whether the assets that this data source creates in the inventory
	// are to be also automatically published to the catalog.
	PublishOnImport *bool `locationName:"publishOnImport" type:"boolean"`

	// The schedule of runs for this data source.
	//
	// Schedule is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DeleteDataSourceOutput's
	// String and GoString methods.
	Schedule *ScheduleConfiguration `locationName:"schedule" type:"structure" sensitive:"true"`

	// The status of this data source.
	Status *string `locationName:"status" type:"string" enum:"DataSourceStatus"`

	// The type of this data source.
	Type *string `locationName:"type" min:"1" type:"string"`

	// The timestamp of when this data source was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

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

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

// SetAssetFormsOutput sets the AssetFormsOutput field's value.
func (s *DeleteDataSourceOutput) SetAssetFormsOutput(v []*FormOutput_) *DeleteDataSourceOutput {
	s.AssetFormsOutput = v
	return s
}

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *DeleteDataSourceOutput) SetCreatedAt(v time.Time) *DeleteDataSourceOutput {
	s.CreatedAt = &v
	return s
}

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

// SetDomainId sets the DomainId field's value.
func (s *DeleteDataSourceOutput) SetDomainId(v string) *DeleteDataSourceOutput {
	s.DomainId = &v
	return s
}

// SetEnableSetting sets the EnableSetting field's value.
func (s *DeleteDataSourceOutput) SetEnableSetting(v string) *DeleteDataSourceOutput {
	s.EnableSetting = &v
	return s
}

// SetEnvironmentId sets the EnvironmentId field's value.
func (s *DeleteDataSourceOutput) SetEnvironmentId(v string) *DeleteDataSourceOutput {
	s.EnvironmentId = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *DeleteDataSourceOutput) SetErrorMessage(v *DataSourceErrorMessage) *DeleteDataSourceOutput {
	s.ErrorMessage = v
	return s
}

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

// SetLastRunAt sets the LastRunAt field's value.
func (s *DeleteDataSourceOutput) SetLastRunAt(v time.Time) *DeleteDataSourceOutput {
	s.LastRunAt = &v
	return s
}

// SetLastRunErrorMessage sets the LastRunErrorMessage field's value.
func (s *DeleteDataSourceOutput) SetLastRunErrorMessage(v *DataSourceErrorMessage) *DeleteDataSourceOutput {
	s.LastRunErrorMessage = v
	return s
}

// SetLastRunStatus sets the LastRunStatus field's value.
func (s *DeleteDataSourceOutput) SetLastRunStatus(v string) *DeleteDataSourceOutput {
	s.LastRunStatus = &v
	return s
}

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

// SetProjectId sets the ProjectId field's value.
func (s *DeleteDataSourceOutput) SetProjectId(v string) *DeleteDataSourceOutput {
	s.ProjectId = &v
	return s
}

// SetPublishOnImport sets the PublishOnImport field's value.
func (s *DeleteDataSourceOutput) SetPublishOnImport(v bool) *DeleteDataSourceOutput {
	s.PublishOnImport = &v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *DeleteDataSourceOutput) SetSchedule(v *ScheduleConfiguration) *DeleteDataSourceOutput {
	s.Schedule = v
	return s
}

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

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

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *DeleteDataSourceOutput) SetUpdatedAt(v time.Time) *DeleteDataSourceOutput {
	s.UpdatedAt = &v
	return s
}

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

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `location:"querystring" locationName:"clientToken" type:"string" idempotencyToken:"true"`

	// The identifier of the Amazon Web Services domain that is to be deleted.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// Optional flag to delete all child entities within the domain
	SkipDeletionCheck *bool `location:"querystring" locationName:"skipDeletionCheck" 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 DeleteDomainInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

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

// SetIdentifier sets the Identifier field's value.
func (s *DeleteDomainInput) SetIdentifier(v string) *DeleteDomainInput {
	s.Identifier = &v
	return s
}

// SetSkipDeletionCheck sets the SkipDeletionCheck field's value.
func (s *DeleteDomainInput) SetSkipDeletionCheck(v bool) *DeleteDomainInput {
	s.SkipDeletionCheck = &v
	return s
}

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

	// The status of the domain.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"DomainStatus"`
}

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

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

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

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

	// The ID of the Amazon DataZone domain in which the blueprint configuration
	// is deleted.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the blueprint the configuration of which is deleted.
	//
	// EnvironmentBlueprintIdentifier is a required field
	EnvironmentBlueprintIdentifier *string `location:"uri" locationName:"environmentBlueprintIdentifier" type:"string" required:"true"`
}

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *DeleteEnvironmentBlueprintConfigurationInput) SetDomainIdentifier(v string) *DeleteEnvironmentBlueprintConfigurationInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnvironmentBlueprintIdentifier sets the EnvironmentBlueprintIdentifier field's value.
func (s *DeleteEnvironmentBlueprintConfigurationInput) SetEnvironmentBlueprintIdentifier(v string) *DeleteEnvironmentBlueprintConfigurationInput {
	s.EnvironmentBlueprintIdentifier = &v
	return s
}

type DeleteEnvironmentBlueprintConfigurationOutput 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 DeleteEnvironmentBlueprintConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

	// The ID of the Amazon DataZone domain in which the environment is deleted.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the environment that is to be deleted.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *DeleteEnvironmentInput) SetDomainIdentifier(v string) *DeleteEnvironmentInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *DeleteEnvironmentInput) SetIdentifier(v string) *DeleteEnvironmentInput {
	s.Identifier = &v
	return s
}

type DeleteEnvironmentOutput 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 DeleteEnvironmentOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

	// The ID of the Amazon DataZone domain in which the environment profile is
	// deleted.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the environment profile that is deleted.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *DeleteEnvironmentProfileInput) SetDomainIdentifier(v string) *DeleteEnvironmentProfileInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *DeleteEnvironmentProfileInput) SetIdentifier(v string) *DeleteEnvironmentProfileInput {
	s.Identifier = &v
	return s
}

type DeleteEnvironmentProfileOutput 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 DeleteEnvironmentProfileOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

	// The ID of the Amazon DataZone domain in which the metadata form type is deleted.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the metadata form type that is deleted.
	//
	// FormTypeIdentifier is a required field
	FormTypeIdentifier *string `location:"uri" locationName:"formTypeIdentifier" 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 DeleteFormTypeInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *DeleteFormTypeInput) SetDomainIdentifier(v string) *DeleteFormTypeInput {
	s.DomainIdentifier = &v
	return s
}

// SetFormTypeIdentifier sets the FormTypeIdentifier field's value.
func (s *DeleteFormTypeInput) SetFormTypeIdentifier(v string) *DeleteFormTypeInput {
	s.FormTypeIdentifier = &v
	return s
}

type DeleteFormTypeOutput 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 DeleteFormTypeOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

	// The ID of the Amazon DataZone domain in which the business glossary is deleted.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the business glossary that is deleted.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *DeleteGlossaryInput) SetDomainIdentifier(v string) *DeleteGlossaryInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *DeleteGlossaryInput) SetIdentifier(v string) *DeleteGlossaryInput {
	s.Identifier = &v
	return s
}

type DeleteGlossaryOutput 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 DeleteGlossaryOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

	// The ID of the Amazon DataZone domain in which the business glossary term
	// is deleted.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the business glossary term that is deleted.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *DeleteGlossaryTermInput) SetDomainIdentifier(v string) *DeleteGlossaryTermInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *DeleteGlossaryTermInput) SetIdentifier(v string) *DeleteGlossaryTermInput {
	s.Identifier = &v
	return s
}

type DeleteGlossaryTermOutput 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 DeleteGlossaryTermOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *DeleteListingInput) SetDomainIdentifier(v string) *DeleteListingInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *DeleteListingInput) SetIdentifier(v string) *DeleteListingInput {
	s.Identifier = &v
	return s
}

type DeleteListingOutput 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 DeleteListingOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

	// The ID of the Amazon DataZone domain in which the project is deleted.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the project that is to be deleted.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// Optional flag to asynchronously delete child entities within the project
	SkipDeletionCheck *bool `location:"querystring" locationName:"skipDeletionCheck" 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 DeleteProjectInput) String() string {
	return awsutil.Prettify(s)
}

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *DeleteProjectInput) SetDomainIdentifier(v string) *DeleteProjectInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *DeleteProjectInput) SetIdentifier(v string) *DeleteProjectInput {
	s.Identifier = &v
	return s
}

// SetSkipDeletionCheck sets the SkipDeletionCheck field's value.
func (s *DeleteProjectInput) SetSkipDeletionCheck(v bool) *DeleteProjectInput {
	s.SkipDeletionCheck = &v
	return s
}

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

	// The ID of the Amazon DataZone domain where project membership is deleted.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The project member whose project membership is deleted.
	//
	// Member is a required field
	Member *Member `locationName:"member" type:"structure" required:"true"`

	// The ID of the Amazon DataZone project the membership to which is deleted.
	//
	// ProjectIdentifier is a required field
	ProjectIdentifier *string `location:"uri" locationName:"projectIdentifier" type:"string" required:"true"`
}

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *DeleteProjectMembershipInput) SetDomainIdentifier(v string) *DeleteProjectMembershipInput {
	s.DomainIdentifier = &v
	return s
}

// SetMember sets the Member field's value.
func (s *DeleteProjectMembershipInput) SetMember(v *Member) *DeleteProjectMembershipInput {
	s.Member = v
	return s
}

// SetProjectIdentifier sets the ProjectIdentifier field's value.
func (s *DeleteProjectMembershipInput) SetProjectIdentifier(v string) *DeleteProjectMembershipInput {
	s.ProjectIdentifier = &v
	return s
}

type DeleteProjectMembershipOutput 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 DeleteProjectMembershipOutput) String() string {
	return awsutil.Prettify(s)
}

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

type DeleteProjectOutput 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 DeleteProjectOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

	// The ID of the Amazon DataZone domain where the subscription grant is deleted.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the subscription grant that is deleted.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *DeleteSubscriptionGrantInput) SetDomainIdentifier(v string) *DeleteSubscriptionGrantInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *DeleteSubscriptionGrantInput) SetIdentifier(v string) *DeleteSubscriptionGrantInput {
	s.Identifier = &v
	return s
}

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

	// The assets for which the subsctiption grant that is deleted gave access.
	Assets []*SubscribedAsset `locationName:"assets" type:"list"`

	// The timestamp of when the subscription grant that is deleted was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who created the subscription grant that is deleted.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The ID of the Amazon DataZone domain in which the subscription grant is deleted.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The entity to which the subscription is deleted.
	//
	// GrantedEntity is a required field
	GrantedEntity *GrantedEntity `locationName:"grantedEntity" type:"structure" required:"true"`

	// The ID of the subscription grant that is deleted.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The status of the subscription grant that is deleted.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionGrantOverallStatus"`

	// The identifier of the subsctiption whose subscription grant is to be deleted.
	SubscriptionId *string `locationName:"subscriptionId" type:"string"`

	// The ID of the subscription target associated with the subscription grant
	// that is deleted.
	//
	// SubscriptionTargetId is a required field
	SubscriptionTargetId *string `locationName:"subscriptionTargetId" type:"string" required:"true"`

	// The timestamp of when the subscription grant that is deleted was updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who updated the subscription grant that is deleted.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

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

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

// SetAssets sets the Assets field's value.
func (s *DeleteSubscriptionGrantOutput) SetAssets(v []*SubscribedAsset) *DeleteSubscriptionGrantOutput {
	s.Assets = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *DeleteSubscriptionGrantOutput) SetCreatedAt(v time.Time) *DeleteSubscriptionGrantOutput {
	s.CreatedAt = &v
	return s
}

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

// SetDomainId sets the DomainId field's value.
func (s *DeleteSubscriptionGrantOutput) SetDomainId(v string) *DeleteSubscriptionGrantOutput {
	s.DomainId = &v
	return s
}

// SetGrantedEntity sets the GrantedEntity field's value.
func (s *DeleteSubscriptionGrantOutput) SetGrantedEntity(v *GrantedEntity) *DeleteSubscriptionGrantOutput {
	s.GrantedEntity = v
	return s
}

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

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

// SetSubscriptionId sets the SubscriptionId field's value.
func (s *DeleteSubscriptionGrantOutput) SetSubscriptionId(v string) *DeleteSubscriptionGrantOutput {
	s.SubscriptionId = &v
	return s
}

// SetSubscriptionTargetId sets the SubscriptionTargetId field's value.
func (s *DeleteSubscriptionGrantOutput) SetSubscriptionTargetId(v string) *DeleteSubscriptionGrantOutput {
	s.SubscriptionTargetId = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *DeleteSubscriptionGrantOutput) SetUpdatedAt(v time.Time) *DeleteSubscriptionGrantOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *DeleteSubscriptionGrantOutput) SetUpdatedBy(v string) *DeleteSubscriptionGrantOutput {
	s.UpdatedBy = &v
	return s
}

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

	// The ID of the Amazon DataZone domain in which the subscription request is
	// deleted.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the subscription request that is deleted.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *DeleteSubscriptionRequestInput) SetDomainIdentifier(v string) *DeleteSubscriptionRequestInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *DeleteSubscriptionRequestInput) SetIdentifier(v string) *DeleteSubscriptionRequestInput {
	s.Identifier = &v
	return s
}

type DeleteSubscriptionRequestOutput 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 DeleteSubscriptionRequestOutput) String() string {
	return awsutil.Prettify(s)
}

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

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

	// The ID of the Amazon DataZone domain in which the subscription target is
	// deleted.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the Amazon DataZone environment in which the subscription target
	// is deleted.
	//
	// EnvironmentIdentifier is a required field
	EnvironmentIdentifier *string `location:"uri" locationName:"environmentIdentifier" type:"string" required:"true"`

	// The ID of the subscription target that is deleted.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

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

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

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

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

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *DeleteSubscriptionTargetInput) SetDomainIdentifier(v string) *DeleteSubscriptionTargetInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnvironmentIdentifier sets the EnvironmentIdentifier field's value.
func (s *DeleteSubscriptionTargetInput) SetEnvironmentIdentifier(v string) *DeleteSubscriptionTargetInput {
	s.EnvironmentIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *DeleteSubscriptionTargetInput) SetIdentifier(v string) *DeleteSubscriptionTargetInput {
	s.Identifier = &v
	return s
}

type DeleteSubscriptionTargetOutput 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 DeleteSubscriptionTargetOutput) String() string {
	return awsutil.Prettify(s)
}

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

// The details of the last deployment of the environment.
type Deployment struct {
	_ struct{} `type:"structure"`

	// The identifier of the last deployment of the environment.
	DeploymentId *string `locationName:"deploymentId" type:"string"`

	// The status of the last deployment of the environment.
	DeploymentStatus *string `locationName:"deploymentStatus" type:"string" enum:"DeploymentStatus"`

	// The type of the last deployment of the environment.
	DeploymentType *string `locationName:"deploymentType" type:"string" enum:"DeploymentType"`

	// The failure reason of the last deployment of the environment.
	FailureReason *EnvironmentError `locationName:"failureReason" type:"structure"`

	// Specifies whether the last deployment of the environment is complete.
	IsDeploymentComplete *bool `locationName:"isDeploymentComplete" type:"boolean"`

	// The messages of the last deployment of the environment.
	Messages []*string `locationName:"messages" 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 Deployment) String() string {
	return awsutil.Prettify(s)
}

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

// SetDeploymentId sets the DeploymentId field's value.
func (s *Deployment) SetDeploymentId(v string) *Deployment {
	s.DeploymentId = &v
	return s
}

// SetDeploymentStatus sets the DeploymentStatus field's value.
func (s *Deployment) SetDeploymentStatus(v string) *Deployment {
	s.DeploymentStatus = &v
	return s
}

// SetDeploymentType sets the DeploymentType field's value.
func (s *Deployment) SetDeploymentType(v string) *Deployment {
	s.DeploymentType = &v
	return s
}

// SetFailureReason sets the FailureReason field's value.
func (s *Deployment) SetFailureReason(v *EnvironmentError) *Deployment {
	s.FailureReason = v
	return s
}

// SetIsDeploymentComplete sets the IsDeploymentComplete field's value.
func (s *Deployment) SetIsDeploymentComplete(v bool) *Deployment {
	s.IsDeploymentComplete = &v
	return s
}

// SetMessages sets the Messages field's value.
func (s *Deployment) SetMessages(v []*string) *Deployment {
	s.Messages = v
	return s
}

// The deployment properties of the Amazon DataZone blueprint.
type DeploymentProperties struct {
	_ struct{} `type:"structure"`

	// The end timeout of the environment blueprint deployment.
	EndTimeoutMinutes *int64 `locationName:"endTimeoutMinutes" min:"1" type:"integer"`

	// The start timeout of the environment blueprint deployment.
	StartTimeoutMinutes *int64 `locationName:"startTimeoutMinutes" 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 DeploymentProperties) String() string {
	return awsutil.Prettify(s)
}

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

// SetEndTimeoutMinutes sets the EndTimeoutMinutes field's value.
func (s *DeploymentProperties) SetEndTimeoutMinutes(v int64) *DeploymentProperties {
	s.EndTimeoutMinutes = &v
	return s
}

// SetStartTimeoutMinutes sets the StartTimeoutMinutes field's value.
func (s *DeploymentProperties) SetStartTimeoutMinutes(v int64) *DeploymentProperties {
	s.StartTimeoutMinutes = &v
	return s
}

// Details of a glossary term attached to the inventory asset.
type DetailedGlossaryTerm struct {
	_ struct{} `type:"structure"`

	// The name of a glossary term attached to the inventory asset.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DetailedGlossaryTerm's
	// String and GoString methods.
	Name *string `locationName:"name" min:"1" type:"string" sensitive:"true"`

	// The shoft description of a glossary term attached to the inventory asset.
	//
	// ShortDescription is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DetailedGlossaryTerm's
	// String and GoString methods.
	ShortDescription *string `locationName:"shortDescription" type:"string" sensitive:"true"`
}

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

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

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

// SetShortDescription sets the ShortDescription field's value.
func (s *DetailedGlossaryTerm) SetShortDescription(v string) *DetailedGlossaryTerm {
	s.ShortDescription = &v
	return s
}

// A summary of a Amazon DataZone domain.
type DomainSummary struct {
	_ struct{} `type:"structure"`

	// The ARN of the Amazon DataZone domain.
	//
	// Arn is a required field
	Arn *string `locationName:"arn" type:"string" required:"true"`

	// A timestamp of when a Amazon DataZone domain was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// A description of an Amazon DataZone domain.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DomainSummary's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// A timestamp of when a Amazon DataZone domain was last updated.
	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp"`

	// The identifier of the Amazon Web Services account that manages the domain.
	//
	// ManagedAccountId is a required field
	ManagedAccountId *string `locationName:"managedAccountId" type:"string" required:"true"`

	// A name of an Amazon DataZone domain.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by DomainSummary's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" type:"string" required:"true" sensitive:"true"`

	// The data portal URL for the Amazon DataZone domain.
	PortalUrl *string `locationName:"portalUrl" type:"string"`

	// The status of the Amazon DataZone domain.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"DomainStatus"`
}

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

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

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *DomainSummary) SetCreatedAt(v time.Time) *DomainSummary {
	s.CreatedAt = &v
	return s
}

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

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

// SetLastUpdatedAt sets the LastUpdatedAt field's value.
func (s *DomainSummary) SetLastUpdatedAt(v time.Time) *DomainSummary {
	s.LastUpdatedAt = &v
	return s
}

// SetManagedAccountId sets the ManagedAccountId field's value.
func (s *DomainSummary) SetManagedAccountId(v string) *DomainSummary {
	s.ManagedAccountId = &v
	return s
}

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

// SetPortalUrl sets the PortalUrl field's value.
func (s *DomainSummary) SetPortalUrl(v string) *DomainSummary {
	s.PortalUrl = &v
	return s
}

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

// The configuration details of an environment blueprint.
type EnvironmentBlueprintConfigurationItem struct {
	_ struct{} `type:"structure"`

	// The timestamp of when an environment blueprint was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The identifier of the Amazon DataZone domain in which an environment blueprint
	// exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The enabled Amazon Web Services Regions specified in a blueprint configuration.
	EnabledRegions []*string `locationName:"enabledRegions" type:"list"`

	// The identifier of the environment blueprint.
	//
	// EnvironmentBlueprintId is a required field
	EnvironmentBlueprintId *string `locationName:"environmentBlueprintId" type:"string" required:"true"`

	// The ARN of the manage access role specified in the environment blueprint
	// configuration.
	ManageAccessRoleArn *string `locationName:"manageAccessRoleArn" type:"string"`

	// The ARN of the provisioning role specified in the environment blueprint configuration.
	ProvisioningRoleArn *string `locationName:"provisioningRoleArn" type:"string"`

	// The regional parameters of the environment blueprint.
	RegionalParameters map[string]map[string]*string `locationName:"regionalParameters" type:"map"`

	// The timestamp of when the environment blueprint was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

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

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *EnvironmentBlueprintConfigurationItem) SetCreatedAt(v time.Time) *EnvironmentBlueprintConfigurationItem {
	s.CreatedAt = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *EnvironmentBlueprintConfigurationItem) SetDomainId(v string) *EnvironmentBlueprintConfigurationItem {
	s.DomainId = &v
	return s
}

// SetEnabledRegions sets the EnabledRegions field's value.
func (s *EnvironmentBlueprintConfigurationItem) SetEnabledRegions(v []*string) *EnvironmentBlueprintConfigurationItem {
	s.EnabledRegions = v
	return s
}

// SetEnvironmentBlueprintId sets the EnvironmentBlueprintId field's value.
func (s *EnvironmentBlueprintConfigurationItem) SetEnvironmentBlueprintId(v string) *EnvironmentBlueprintConfigurationItem {
	s.EnvironmentBlueprintId = &v
	return s
}

// SetManageAccessRoleArn sets the ManageAccessRoleArn field's value.
func (s *EnvironmentBlueprintConfigurationItem) SetManageAccessRoleArn(v string) *EnvironmentBlueprintConfigurationItem {
	s.ManageAccessRoleArn = &v
	return s
}

// SetProvisioningRoleArn sets the ProvisioningRoleArn field's value.
func (s *EnvironmentBlueprintConfigurationItem) SetProvisioningRoleArn(v string) *EnvironmentBlueprintConfigurationItem {
	s.ProvisioningRoleArn = &v
	return s
}

// SetRegionalParameters sets the RegionalParameters field's value.
func (s *EnvironmentBlueprintConfigurationItem) SetRegionalParameters(v map[string]map[string]*string) *EnvironmentBlueprintConfigurationItem {
	s.RegionalParameters = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *EnvironmentBlueprintConfigurationItem) SetUpdatedAt(v time.Time) *EnvironmentBlueprintConfigurationItem {
	s.UpdatedAt = &v
	return s
}

// The details of an environment blueprint summary.
type EnvironmentBlueprintSummary struct {
	_ struct{} `type:"structure"`

	// The timestamp of when an environment blueprint was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The description of a blueprint.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by EnvironmentBlueprintSummary's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the blueprint.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

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

	// The provider of the blueprint.
	//
	// Provider is a required field
	Provider *string `locationName:"provider" type:"string" required:"true"`

	// The provisioning properties of the blueprint.
	//
	// ProvisioningProperties is a required field
	ProvisioningProperties *ProvisioningProperties `locationName:"provisioningProperties" type:"structure" required:"true"`

	// The timestamp of when the blueprint was enabled.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

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

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

// SetCreatedAt sets the CreatedAt field's value.
func (s *EnvironmentBlueprintSummary) SetCreatedAt(v time.Time) *EnvironmentBlueprintSummary {
	s.CreatedAt = &v
	return s
}

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

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

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

// SetProvider sets the Provider field's value.
func (s *EnvironmentBlueprintSummary) SetProvider(v string) *EnvironmentBlueprintSummary {
	s.Provider = &v
	return s
}

// SetProvisioningProperties sets the ProvisioningProperties field's value.
func (s *EnvironmentBlueprintSummary) SetProvisioningProperties(v *ProvisioningProperties) *EnvironmentBlueprintSummary {
	s.ProvisioningProperties = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *EnvironmentBlueprintSummary) SetUpdatedAt(v time.Time) *EnvironmentBlueprintSummary {
	s.UpdatedAt = &v
	return s
}

// The failure reasons for the environment deployment.
type EnvironmentError struct {
	_ struct{} `type:"structure"`

	// The error code for the failure reason for the environment deployment.
	Code *string `locationName:"code" type:"string"`

	// The error message for the failure reason for the environment deployment.
	//
	// Message is a required field
	Message *string `locationName:"message" type:"string" required:"true"`
}

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

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

// SetCode sets the Code field's value.
func (s *EnvironmentError) SetCode(v string) *EnvironmentError {
	s.Code = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *EnvironmentError) SetMessage(v string) *EnvironmentError {
	s.Message = &v
	return s
}

// The parameter details of an evironment profile.
type EnvironmentParameter struct {
	_ struct{} `type:"structure"`

	// The name of an environment profile parameter.
	Name *string `locationName:"name" type:"string"`

	// The value of an environment profile parameter.
	Value *string `locationName:"value" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnvironmentParameter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnvironmentParameter) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *EnvironmentParameter) SetName(v string) *EnvironmentParameter {
	s.Name = &v
	return s
}

// SetValue sets the Value field's value.
func (s *EnvironmentParameter) SetValue(v string) *EnvironmentParameter {
	s.Value = &v
	return s
}

// The details of an environment profile.
type EnvironmentProfileSummary struct {
	_ struct{} `type:"structure"`

	// The identifier of an Amazon Web Services account in which an environment
	// profile exists.
	AwsAccountId *string `locationName:"awsAccountId" type:"string"`

	// The Amazon Web Services Region in which an environment profile exists.
	AwsAccountRegion *string `locationName:"awsAccountRegion" type:"string"`

	// The timestamp of when an environment profile was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The Amazon DataZone user who created the environment profile.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The description of the environment profile.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by EnvironmentProfileSummary's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which the environment profile
	// exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of a blueprint with which an environment profile is created.
	//
	// EnvironmentBlueprintId is a required field
	EnvironmentBlueprintId *string `locationName:"environmentBlueprintId" type:"string" required:"true"`

	// The identifier of the environment profile.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The name of the environment profile.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by EnvironmentProfileSummary's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The identifier of a project in which an environment profile exists.
	ProjectId *string `locationName:"projectId" type:"string"`

	// The timestamp of when the environment profile was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnvironmentProfileSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnvironmentProfileSummary) GoString() string {
	return s.String()
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *EnvironmentProfileSummary) SetAwsAccountId(v string) *EnvironmentProfileSummary {
	s.AwsAccountId = &v
	return s
}

// SetAwsAccountRegion sets the AwsAccountRegion field's value.
func (s *EnvironmentProfileSummary) SetAwsAccountRegion(v string) *EnvironmentProfileSummary {
	s.AwsAccountRegion = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *EnvironmentProfileSummary) SetCreatedAt(v time.Time) *EnvironmentProfileSummary {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *EnvironmentProfileSummary) SetCreatedBy(v string) *EnvironmentProfileSummary {
	s.CreatedBy = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *EnvironmentProfileSummary) SetDescription(v string) *EnvironmentProfileSummary {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *EnvironmentProfileSummary) SetDomainId(v string) *EnvironmentProfileSummary {
	s.DomainId = &v
	return s
}

// SetEnvironmentBlueprintId sets the EnvironmentBlueprintId field's value.
func (s *EnvironmentProfileSummary) SetEnvironmentBlueprintId(v string) *EnvironmentProfileSummary {
	s.EnvironmentBlueprintId = &v
	return s
}

// SetId sets the Id field's value.
func (s *EnvironmentProfileSummary) SetId(v string) *EnvironmentProfileSummary {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *EnvironmentProfileSummary) SetName(v string) *EnvironmentProfileSummary {
	s.Name = &v
	return s
}

// SetProjectId sets the ProjectId field's value.
func (s *EnvironmentProfileSummary) SetProjectId(v string) *EnvironmentProfileSummary {
	s.ProjectId = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *EnvironmentProfileSummary) SetUpdatedAt(v time.Time) *EnvironmentProfileSummary {
	s.UpdatedAt = &v
	return s
}

// The details of an environment.
type EnvironmentSummary struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Web Services account in which an environment
	// exists.
	AwsAccountId *string `locationName:"awsAccountId" type:"string"`

	// The Amazon Web Services Region in which an environment exists.
	AwsAccountRegion *string `locationName:"awsAccountRegion" type:"string"`

	// The timestamp of when the environment was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The Amazon DataZone user who created the environment.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The description of the environment.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by EnvironmentSummary's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which the environment exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of the environment profile with which the environment was
	// created.
	//
	// EnvironmentProfileId is a required field
	EnvironmentProfileId *string `locationName:"environmentProfileId" type:"string" required:"true"`

	// The identifier of the environment.
	Id *string `locationName:"id" type:"string"`

	// The name of the environment.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by EnvironmentSummary's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The identifier of the project in which the environment exists.
	//
	// ProjectId is a required field
	ProjectId *string `locationName:"projectId" type:"string" required:"true"`

	// The provider of the environment.
	//
	// Provider is a required field
	Provider *string `locationName:"provider" type:"string" required:"true"`

	// The status of the environment.
	Status *string `locationName:"status" type:"string" enum:"EnvironmentStatus"`

	// The timestamp of when the environment was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnvironmentSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s EnvironmentSummary) GoString() string {
	return s.String()
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *EnvironmentSummary) SetAwsAccountId(v string) *EnvironmentSummary {
	s.AwsAccountId = &v
	return s
}

// SetAwsAccountRegion sets the AwsAccountRegion field's value.
func (s *EnvironmentSummary) SetAwsAccountRegion(v string) *EnvironmentSummary {
	s.AwsAccountRegion = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *EnvironmentSummary) SetCreatedAt(v time.Time) *EnvironmentSummary {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *EnvironmentSummary) SetCreatedBy(v string) *EnvironmentSummary {
	s.CreatedBy = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *EnvironmentSummary) SetDescription(v string) *EnvironmentSummary {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *EnvironmentSummary) SetDomainId(v string) *EnvironmentSummary {
	s.DomainId = &v
	return s
}

// SetEnvironmentProfileId sets the EnvironmentProfileId field's value.
func (s *EnvironmentSummary) SetEnvironmentProfileId(v string) *EnvironmentSummary {
	s.EnvironmentProfileId = &v
	return s
}

// SetId sets the Id field's value.
func (s *EnvironmentSummary) SetId(v string) *EnvironmentSummary {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *EnvironmentSummary) SetName(v string) *EnvironmentSummary {
	s.Name = &v
	return s
}

// SetProjectId sets the ProjectId field's value.
func (s *EnvironmentSummary) SetProjectId(v string) *EnvironmentSummary {
	s.ProjectId = &v
	return s
}

// SetProvider sets the Provider field's value.
func (s *EnvironmentSummary) SetProvider(v string) *EnvironmentSummary {
	s.Provider = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *EnvironmentSummary) SetStatus(v string) *EnvironmentSummary {
	s.Status = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *EnvironmentSummary) SetUpdatedAt(v time.Time) *EnvironmentSummary {
	s.UpdatedAt = &v
	return s
}

// Specifies the error message that is returned if the operation cannot be successfully
// completed.
type FailureCause struct {
	_ struct{} `type:"structure"`

	// The description of the error message.
	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 FailureCause) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FailureCause) GoString() string {
	return s.String()
}

// SetMessage sets the Message field's value.
func (s *FailureCause) SetMessage(v string) *FailureCause {
	s.Message = &v
	return s
}

// A search filter in Amazon DataZone.
type Filter struct {
	_ struct{} `type:"structure"`

	// A search filter attribute in Amazon DataZone.
	//
	// Attribute is a required field
	Attribute *string `locationName:"attribute" min:"1" type:"string" required:"true"`

	// A search filter value in Amazon DataZone.
	//
	// Value is a required field
	Value *string `locationName:"value" 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 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.Attribute == nil {
		invalidParams.Add(request.NewErrParamRequired("Attribute"))
	}
	if s.Attribute != nil && len(*s.Attribute) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Attribute", 1))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}
	if s.Value != nil && len(*s.Value) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttribute sets the Attribute field's value.
func (s *Filter) SetAttribute(v string) *Filter {
	s.Attribute = &v
	return s
}

// SetValue sets the Value field's value.
func (s *Filter) SetValue(v string) *Filter {
	s.Value = &v
	return s
}

// A search filter clause in Amazon DataZone.
type FilterClause struct {
	_ struct{} `type:"structure"`

	// The 'and' search filter clause in Amazon DataZone.
	And []*FilterClause `locationName:"and" min:"1" type:"list"`

	// A search filter in Amazon DataZone.
	Filter *Filter `locationName:"filter" type:"structure"`

	// The 'or' search filter clause in Amazon DataZone.
	Or []*FilterClause `locationName:"or" 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 FilterClause) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FilterClause) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FilterClause) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FilterClause"}
	if s.And != nil && len(s.And) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("And", 1))
	}
	if s.Or != nil && len(s.Or) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Or", 1))
	}
	if s.And != nil {
		for i, v := range s.And {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "And", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Filter != nil {
		if err := s.Filter.Validate(); err != nil {
			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
		}
	}
	if s.Or != nil {
		for i, v := range s.Or {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Or", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAnd sets the And field's value.
func (s *FilterClause) SetAnd(v []*FilterClause) *FilterClause {
	s.And = v
	return s
}

// SetFilter sets the Filter field's value.
func (s *FilterClause) SetFilter(v *Filter) *FilterClause {
	s.Filter = v
	return s
}

// SetOr sets the Or field's value.
func (s *FilterClause) SetOr(v []*FilterClause) *FilterClause {
	s.Or = v
	return s
}

// A filter expression in Amazon DataZone.
type FilterExpression struct {
	_ struct{} `type:"structure"`

	// The search filter expression.
	//
	// Expression is a required field
	Expression *string `locationName:"expression" min:"1" type:"string" required:"true"`

	// The search filter explresison type.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"FilterExpressionType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API 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.Expression == nil {
		invalidParams.Add(request.NewErrParamRequired("Expression"))
	}
	if s.Expression != nil && len(*s.Expression) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Expression", 1))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetExpression sets the Expression field's value.
func (s *FilterExpression) SetExpression(v string) *FilterExpression {
	s.Expression = &v
	return s
}

// SetType sets the Type field's value.
func (s *FilterExpression) SetType(v string) *FilterExpression {
	s.Type = &v
	return s
}

// The details of the form entry.
type FormEntryInput_ struct {
	_ struct{} `type:"structure"`

	// Specifies whether a form entry is required.
	Required *bool `locationName:"required" type:"boolean"`

	// The type ID of the form entry.
	//
	// TypeIdentifier is a required field
	TypeIdentifier *string `locationName:"typeIdentifier" min:"1" type:"string" required:"true"`

	// The type revision of the form entry.
	//
	// TypeRevision is a required field
	TypeRevision *string `locationName:"typeRevision" 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 FormEntryInput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FormEntryInput_) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FormEntryInput_) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FormEntryInput_"}
	if s.TypeIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("TypeIdentifier"))
	}
	if s.TypeIdentifier != nil && len(*s.TypeIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TypeIdentifier", 1))
	}
	if s.TypeRevision == nil {
		invalidParams.Add(request.NewErrParamRequired("TypeRevision"))
	}
	if s.TypeRevision != nil && len(*s.TypeRevision) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TypeRevision", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRequired sets the Required field's value.
func (s *FormEntryInput_) SetRequired(v bool) *FormEntryInput_ {
	s.Required = &v
	return s
}

// SetTypeIdentifier sets the TypeIdentifier field's value.
func (s *FormEntryInput_) SetTypeIdentifier(v string) *FormEntryInput_ {
	s.TypeIdentifier = &v
	return s
}

// SetTypeRevision sets the TypeRevision field's value.
func (s *FormEntryInput_) SetTypeRevision(v string) *FormEntryInput_ {
	s.TypeRevision = &v
	return s
}

// The details of the form entry.
type FormEntryOutput_ struct {
	_ struct{} `type:"structure"`

	// Specifies whether a form entry is required.
	Required *bool `locationName:"required" type:"boolean"`

	// The name of the type of the form entry.
	//
	// TypeName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by FormEntryOutput_'s
	// String and GoString methods.
	//
	// TypeName is a required field
	TypeName *string `locationName:"typeName" min:"1" type:"string" required:"true" sensitive:"true"`

	// The type revision of the form entry.
	//
	// TypeRevision is a required field
	TypeRevision *string `locationName:"typeRevision" 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 FormEntryOutput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FormEntryOutput_) GoString() string {
	return s.String()
}

// SetRequired sets the Required field's value.
func (s *FormEntryOutput_) SetRequired(v bool) *FormEntryOutput_ {
	s.Required = &v
	return s
}

// SetTypeName sets the TypeName field's value.
func (s *FormEntryOutput_) SetTypeName(v string) *FormEntryOutput_ {
	s.TypeName = &v
	return s
}

// SetTypeRevision sets the TypeRevision field's value.
func (s *FormEntryOutput_) SetTypeRevision(v string) *FormEntryOutput_ {
	s.TypeRevision = &v
	return s
}

// The details of a metadata form.
type FormInput_ struct {
	_ struct{} `type:"structure" sensitive:"true"`

	// The content of the metadata form.
	Content *string `locationName:"content" type:"string"`

	// The name of the metadata form.
	//
	// FormName is a required field
	FormName *string `locationName:"formName" min:"1" type:"string" required:"true"`

	// The ID of the metadata form type.
	TypeIdentifier *string `locationName:"typeIdentifier" min:"1" type:"string"`

	// The revision of the metadata form type.
	TypeRevision *string `locationName:"typeRevision" 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 FormInput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FormInput_) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *FormInput_) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "FormInput_"}
	if s.FormName == nil {
		invalidParams.Add(request.NewErrParamRequired("FormName"))
	}
	if s.FormName != nil && len(*s.FormName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FormName", 1))
	}
	if s.TypeIdentifier != nil && len(*s.TypeIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TypeIdentifier", 1))
	}
	if s.TypeRevision != nil && len(*s.TypeRevision) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("TypeRevision", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContent sets the Content field's value.
func (s *FormInput_) SetContent(v string) *FormInput_ {
	s.Content = &v
	return s
}

// SetFormName sets the FormName field's value.
func (s *FormInput_) SetFormName(v string) *FormInput_ {
	s.FormName = &v
	return s
}

// SetTypeIdentifier sets the TypeIdentifier field's value.
func (s *FormInput_) SetTypeIdentifier(v string) *FormInput_ {
	s.TypeIdentifier = &v
	return s
}

// SetTypeRevision sets the TypeRevision field's value.
func (s *FormInput_) SetTypeRevision(v string) *FormInput_ {
	s.TypeRevision = &v
	return s
}

// The details of a metadata form.
type FormOutput_ struct {
	_ struct{} `type:"structure"`

	// The content of the metadata form.
	Content *string `locationName:"content" type:"string"`

	// The name of the metadata form.
	//
	// FormName is a required field
	FormName *string `locationName:"formName" min:"1" type:"string" required:"true"`

	// The name of the metadata form type.
	//
	// TypeName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by FormOutput_'s
	// String and GoString methods.
	TypeName *string `locationName:"typeName" min:"1" type:"string" sensitive:"true"`

	// The revision of the metadata form type.
	TypeRevision *string `locationName:"typeRevision" 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 FormOutput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FormOutput_) GoString() string {
	return s.String()
}

// SetContent sets the Content field's value.
func (s *FormOutput_) SetContent(v string) *FormOutput_ {
	s.Content = &v
	return s
}

// SetFormName sets the FormName field's value.
func (s *FormOutput_) SetFormName(v string) *FormOutput_ {
	s.FormName = &v
	return s
}

// SetTypeName sets the TypeName field's value.
func (s *FormOutput_) SetTypeName(v string) *FormOutput_ {
	s.TypeName = &v
	return s
}

// SetTypeRevision sets the TypeRevision field's value.
func (s *FormOutput_) SetTypeRevision(v string) *FormOutput_ {
	s.TypeRevision = &v
	return s
}

// The details of the metadata form type.
type FormTypeData struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the metadata form type was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The Amazon DataZone user who created teh metadata form type.
	CreatedBy *string `locationName:"createdBy" type:"string"`

	// The description of the metadata form type.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by FormTypeData's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which the form type exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The imports specified in the form type.
	Imports []*Import `locationName:"imports" min:"1" type:"list"`

	// The model of the form type.
	//
	// Model is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by FormTypeData's
	// String and GoString methods.
	Model *Model `locationName:"model" type:"structure" sensitive:"true"`

	// The name of the form type.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by FormTypeData's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which the form type was originally
	// created.
	OriginDomainId *string `locationName:"originDomainId" type:"string"`

	// The identifier of the project in which the form type was originally created.
	OriginProjectId *string `locationName:"originProjectId" type:"string"`

	// The identifier of the project that owns the form type.
	OwningProjectId *string `locationName:"owningProjectId" type:"string"`

	// The revision of the form type.
	//
	// Revision is a required field
	Revision *string `locationName:"revision" min:"1" type:"string" required:"true"`

	// The status of the form type.
	Status *string `locationName:"status" type:"string" enum:"FormTypeStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FormTypeData) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s FormTypeData) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *FormTypeData) SetCreatedAt(v time.Time) *FormTypeData {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *FormTypeData) SetCreatedBy(v string) *FormTypeData {
	s.CreatedBy = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *FormTypeData) SetDescription(v string) *FormTypeData {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *FormTypeData) SetDomainId(v string) *FormTypeData {
	s.DomainId = &v
	return s
}

// SetImports sets the Imports field's value.
func (s *FormTypeData) SetImports(v []*Import) *FormTypeData {
	s.Imports = v
	return s
}

// SetModel sets the Model field's value.
func (s *FormTypeData) SetModel(v *Model) *FormTypeData {
	s.Model = v
	return s
}

// SetName sets the Name field's value.
func (s *FormTypeData) SetName(v string) *FormTypeData {
	s.Name = &v
	return s
}

// SetOriginDomainId sets the OriginDomainId field's value.
func (s *FormTypeData) SetOriginDomainId(v string) *FormTypeData {
	s.OriginDomainId = &v
	return s
}

// SetOriginProjectId sets the OriginProjectId field's value.
func (s *FormTypeData) SetOriginProjectId(v string) *FormTypeData {
	s.OriginProjectId = &v
	return s
}

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *FormTypeData) SetOwningProjectId(v string) *FormTypeData {
	s.OwningProjectId = &v
	return s
}

// SetRevision sets the Revision field's value.
func (s *FormTypeData) SetRevision(v string) *FormTypeData {
	s.Revision = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *FormTypeData) SetStatus(v string) *FormTypeData {
	s.Status = &v
	return s
}

type GetAssetInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon DataZone domain to which the asset belongs.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the Amazon DataZone asset.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// The revision of the Amazon DataZone asset.
	Revision *string `location:"querystring" locationName:"revision" 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 GetAssetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAssetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetAssetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetAssetInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}
	if s.Revision != nil && len(*s.Revision) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Revision", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetAssetInput) SetDomainIdentifier(v string) *GetAssetInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *GetAssetInput) SetIdentifier(v string) *GetAssetInput {
	s.Identifier = &v
	return s
}

// SetRevision sets the Revision field's value.
func (s *GetAssetInput) SetRevision(v string) *GetAssetInput {
	s.Revision = &v
	return s
}

type GetAssetOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the asset was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The Amazon DataZone user who created the asset.
	CreatedBy *string `locationName:"createdBy" type:"string"`

	// The description of the Amazon DataZone asset.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetAssetOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain to which the asset belongs.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// ExternalIdentifier is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetAssetOutput's
	// String and GoString methods.
	ExternalIdentifier *string `locationName:"externalIdentifier" min:"1" type:"string" sensitive:"true"`

	// The timestamp of when the first revision of the asset was created.
	FirstRevisionCreatedAt *time.Time `locationName:"firstRevisionCreatedAt" type:"timestamp"`

	// The Amazon DataZone user who created the first revision of the asset.
	FirstRevisionCreatedBy *string `locationName:"firstRevisionCreatedBy" type:"string"`

	// The metadata forms attached to the asset.
	//
	// FormsOutput is a required field
	FormsOutput []*FormOutput_ `locationName:"formsOutput" type:"list" required:"true"`

	// The business glossary terms attached to the asset.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// The ID of the asset.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The details of an asset published in an Amazon DataZone catalog.
	Listing *AssetListingDetails `locationName:"listing" type:"structure"`

	// The name of the asset.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetAssetOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the project that owns the asset.
	//
	// OwningProjectId is a required field
	OwningProjectId *string `locationName:"owningProjectId" type:"string" required:"true"`

	// The read-only metadata forms attached to the asset.
	ReadOnlyFormsOutput []*FormOutput_ `locationName:"readOnlyFormsOutput" type:"list"`

	// The revision of the asset.
	//
	// Revision is a required field
	Revision *string `locationName:"revision" min:"1" type:"string" required:"true"`

	// The ID of the asset type.
	//
	// TypeIdentifier is a required field
	TypeIdentifier *string `locationName:"typeIdentifier" min:"1" type:"string" required:"true"`

	// The revision of the asset type.
	//
	// TypeRevision is a required field
	TypeRevision *string `locationName:"typeRevision" 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 GetAssetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAssetOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetAssetOutput) SetCreatedAt(v time.Time) *GetAssetOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *GetAssetOutput) SetCreatedBy(v string) *GetAssetOutput {
	s.CreatedBy = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetAssetOutput) SetDescription(v string) *GetAssetOutput {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetAssetOutput) SetDomainId(v string) *GetAssetOutput {
	s.DomainId = &v
	return s
}

// SetExternalIdentifier sets the ExternalIdentifier field's value.
func (s *GetAssetOutput) SetExternalIdentifier(v string) *GetAssetOutput {
	s.ExternalIdentifier = &v
	return s
}

// SetFirstRevisionCreatedAt sets the FirstRevisionCreatedAt field's value.
func (s *GetAssetOutput) SetFirstRevisionCreatedAt(v time.Time) *GetAssetOutput {
	s.FirstRevisionCreatedAt = &v
	return s
}

// SetFirstRevisionCreatedBy sets the FirstRevisionCreatedBy field's value.
func (s *GetAssetOutput) SetFirstRevisionCreatedBy(v string) *GetAssetOutput {
	s.FirstRevisionCreatedBy = &v
	return s
}

// SetFormsOutput sets the FormsOutput field's value.
func (s *GetAssetOutput) SetFormsOutput(v []*FormOutput_) *GetAssetOutput {
	s.FormsOutput = v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *GetAssetOutput) SetGlossaryTerms(v []*string) *GetAssetOutput {
	s.GlossaryTerms = v
	return s
}

// SetId sets the Id field's value.
func (s *GetAssetOutput) SetId(v string) *GetAssetOutput {
	s.Id = &v
	return s
}

// SetListing sets the Listing field's value.
func (s *GetAssetOutput) SetListing(v *AssetListingDetails) *GetAssetOutput {
	s.Listing = v
	return s
}

// SetName sets the Name field's value.
func (s *GetAssetOutput) SetName(v string) *GetAssetOutput {
	s.Name = &v
	return s
}

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *GetAssetOutput) SetOwningProjectId(v string) *GetAssetOutput {
	s.OwningProjectId = &v
	return s
}

// SetReadOnlyFormsOutput sets the ReadOnlyFormsOutput field's value.
func (s *GetAssetOutput) SetReadOnlyFormsOutput(v []*FormOutput_) *GetAssetOutput {
	s.ReadOnlyFormsOutput = v
	return s
}

// SetRevision sets the Revision field's value.
func (s *GetAssetOutput) SetRevision(v string) *GetAssetOutput {
	s.Revision = &v
	return s
}

// SetTypeIdentifier sets the TypeIdentifier field's value.
func (s *GetAssetOutput) SetTypeIdentifier(v string) *GetAssetOutput {
	s.TypeIdentifier = &v
	return s
}

// SetTypeRevision sets the TypeRevision field's value.
func (s *GetAssetOutput) SetTypeRevision(v string) *GetAssetOutput {
	s.TypeRevision = &v
	return s
}

type GetAssetTypeInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon DataZone domain in which the asset type exists.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the asset type.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" min:"1" type:"string" required:"true"`

	// The revision of the asset type.
	Revision *string `location:"querystring" locationName:"revision" 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 GetAssetTypeInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAssetTypeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetAssetTypeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetAssetTypeInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}
	if s.Revision != nil && len(*s.Revision) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Revision", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetAssetTypeInput) SetDomainIdentifier(v string) *GetAssetTypeInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *GetAssetTypeInput) SetIdentifier(v string) *GetAssetTypeInput {
	s.Identifier = &v
	return s
}

// SetRevision sets the Revision field's value.
func (s *GetAssetTypeInput) SetRevision(v string) *GetAssetTypeInput {
	s.Revision = &v
	return s
}

type GetAssetTypeOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the asset type was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The Amazon DataZone user who created the asset type.
	CreatedBy *string `locationName:"createdBy" type:"string"`

	// The description of the asset type.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetAssetTypeOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which the asset type exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The metadata forms attached to the asset type.
	//
	// FormsOutput is a required field
	FormsOutput map[string]*FormEntryOutput_ `locationName:"formsOutput" type:"map" required:"true"`

	// The name of the asset type.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The ID of the Amazon DataZone domain in which the asset type was originally
	// created.
	OriginDomainId *string `locationName:"originDomainId" type:"string"`

	// The ID of the Amazon DataZone project in which the asset type was originally
	// created.
	OriginProjectId *string `locationName:"originProjectId" type:"string"`

	// The ID of the Amazon DataZone project that owns the asset type.
	//
	// OwningProjectId is a required field
	OwningProjectId *string `locationName:"owningProjectId" type:"string" required:"true"`

	// The revision of the asset type.
	//
	// Revision is a required field
	Revision *string `locationName:"revision" min:"1" type:"string" required:"true"`

	// The timestamp of when the asset type was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`

	// The Amazon DataZone user that updated the asset type.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAssetTypeOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetAssetTypeOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetAssetTypeOutput) SetCreatedAt(v time.Time) *GetAssetTypeOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *GetAssetTypeOutput) SetCreatedBy(v string) *GetAssetTypeOutput {
	s.CreatedBy = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetAssetTypeOutput) SetDescription(v string) *GetAssetTypeOutput {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetAssetTypeOutput) SetDomainId(v string) *GetAssetTypeOutput {
	s.DomainId = &v
	return s
}

// SetFormsOutput sets the FormsOutput field's value.
func (s *GetAssetTypeOutput) SetFormsOutput(v map[string]*FormEntryOutput_) *GetAssetTypeOutput {
	s.FormsOutput = v
	return s
}

// SetName sets the Name field's value.
func (s *GetAssetTypeOutput) SetName(v string) *GetAssetTypeOutput {
	s.Name = &v
	return s
}

// SetOriginDomainId sets the OriginDomainId field's value.
func (s *GetAssetTypeOutput) SetOriginDomainId(v string) *GetAssetTypeOutput {
	s.OriginDomainId = &v
	return s
}

// SetOriginProjectId sets the OriginProjectId field's value.
func (s *GetAssetTypeOutput) SetOriginProjectId(v string) *GetAssetTypeOutput {
	s.OriginProjectId = &v
	return s
}

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *GetAssetTypeOutput) SetOwningProjectId(v string) *GetAssetTypeOutput {
	s.OwningProjectId = &v
	return s
}

// SetRevision sets the Revision field's value.
func (s *GetAssetTypeOutput) SetRevision(v string) *GetAssetTypeOutput {
	s.Revision = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GetAssetTypeOutput) SetUpdatedAt(v time.Time) *GetAssetTypeOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *GetAssetTypeOutput) SetUpdatedBy(v string) *GetAssetTypeOutput {
	s.UpdatedBy = &v
	return s
}

type GetDataSourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon DataZone domain in which the data source exists.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the Amazon DataZone data source.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataSourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataSourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDataSourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDataSourceInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetDataSourceInput) SetDomainIdentifier(v string) *GetDataSourceInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *GetDataSourceInput) SetIdentifier(v string) *GetDataSourceInput {
	s.Identifier = &v
	return s
}

type GetDataSourceOutput struct {
	_ struct{} `type:"structure"`

	// The metadata forms attached to the assets created by this data source.
	AssetFormsOutput []*FormOutput_ `locationName:"assetFormsOutput" type:"list"`

	// The configuration of the data source.
	Configuration *DataSourceConfigurationOutput_ `locationName:"configuration" type:"structure"`

	// The timestamp of when the data source was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The description of the data source.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetDataSourceOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which the data source exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// Specifies whether this data source is enabled or not.
	EnableSetting *string `locationName:"enableSetting" type:"string" enum:"EnableSetting"`

	// The ID of the environment where this data source creates and publishes assets,
	//
	// EnvironmentId is a required field
	EnvironmentId *string `locationName:"environmentId" type:"string" required:"true"`

	// Specifies the error message that is returned if the operation cannot be successfully
	// completed.
	ErrorMessage *DataSourceErrorMessage `locationName:"errorMessage" type:"structure"`

	// The ID of the data source.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The number of assets created by the data source during its last run.
	LastRunAssetCount *int64 `locationName:"lastRunAssetCount" type:"integer"`

	// The timestamp of the last run of the data source.
	LastRunAt *time.Time `locationName:"lastRunAt" type:"timestamp" timestampFormat:"iso8601"`

	// Specifies the error message that is returned if the operation cannot be successfully
	// completed.
	LastRunErrorMessage *DataSourceErrorMessage `locationName:"lastRunErrorMessage" type:"structure"`

	// The status of the last run of the data source.
	LastRunStatus *string `locationName:"lastRunStatus" type:"string" enum:"DataSourceRunStatus"`

	// The name of the data source.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetDataSourceOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the project where the data source creates and publishes assets.
	//
	// ProjectId is a required field
	ProjectId *string `locationName:"projectId" type:"string" required:"true"`

	// Specifies whether the assets that this data source creates in the inventory
	// are to be also automatically published to the catalog.
	PublishOnImport *bool `locationName:"publishOnImport" type:"boolean"`

	// The recommendation to be updated as part of the UpdateDataSource action.
	Recommendation *RecommendationConfiguration `locationName:"recommendation" type:"structure"`

	// The schedule of the data source runs.
	//
	// Schedule is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetDataSourceOutput's
	// String and GoString methods.
	Schedule *ScheduleConfiguration `locationName:"schedule" type:"structure" sensitive:"true"`

	// The status of the data source.
	Status *string `locationName:"status" type:"string" enum:"DataSourceStatus"`

	// The type of the data source.
	Type *string `locationName:"type" min:"1" type:"string"`

	// The timestamp of when the data source was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataSourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataSourceOutput) GoString() string {
	return s.String()
}

// SetAssetFormsOutput sets the AssetFormsOutput field's value.
func (s *GetDataSourceOutput) SetAssetFormsOutput(v []*FormOutput_) *GetDataSourceOutput {
	s.AssetFormsOutput = v
	return s
}

// SetConfiguration sets the Configuration field's value.
func (s *GetDataSourceOutput) SetConfiguration(v *DataSourceConfigurationOutput_) *GetDataSourceOutput {
	s.Configuration = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetDataSourceOutput) SetCreatedAt(v time.Time) *GetDataSourceOutput {
	s.CreatedAt = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetDataSourceOutput) SetDescription(v string) *GetDataSourceOutput {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetDataSourceOutput) SetDomainId(v string) *GetDataSourceOutput {
	s.DomainId = &v
	return s
}

// SetEnableSetting sets the EnableSetting field's value.
func (s *GetDataSourceOutput) SetEnableSetting(v string) *GetDataSourceOutput {
	s.EnableSetting = &v
	return s
}

// SetEnvironmentId sets the EnvironmentId field's value.
func (s *GetDataSourceOutput) SetEnvironmentId(v string) *GetDataSourceOutput {
	s.EnvironmentId = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *GetDataSourceOutput) SetErrorMessage(v *DataSourceErrorMessage) *GetDataSourceOutput {
	s.ErrorMessage = v
	return s
}

// SetId sets the Id field's value.
func (s *GetDataSourceOutput) SetId(v string) *GetDataSourceOutput {
	s.Id = &v
	return s
}

// SetLastRunAssetCount sets the LastRunAssetCount field's value.
func (s *GetDataSourceOutput) SetLastRunAssetCount(v int64) *GetDataSourceOutput {
	s.LastRunAssetCount = &v
	return s
}

// SetLastRunAt sets the LastRunAt field's value.
func (s *GetDataSourceOutput) SetLastRunAt(v time.Time) *GetDataSourceOutput {
	s.LastRunAt = &v
	return s
}

// SetLastRunErrorMessage sets the LastRunErrorMessage field's value.
func (s *GetDataSourceOutput) SetLastRunErrorMessage(v *DataSourceErrorMessage) *GetDataSourceOutput {
	s.LastRunErrorMessage = v
	return s
}

// SetLastRunStatus sets the LastRunStatus field's value.
func (s *GetDataSourceOutput) SetLastRunStatus(v string) *GetDataSourceOutput {
	s.LastRunStatus = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetDataSourceOutput) SetName(v string) *GetDataSourceOutput {
	s.Name = &v
	return s
}

// SetProjectId sets the ProjectId field's value.
func (s *GetDataSourceOutput) SetProjectId(v string) *GetDataSourceOutput {
	s.ProjectId = &v
	return s
}

// SetPublishOnImport sets the PublishOnImport field's value.
func (s *GetDataSourceOutput) SetPublishOnImport(v bool) *GetDataSourceOutput {
	s.PublishOnImport = &v
	return s
}

// SetRecommendation sets the Recommendation field's value.
func (s *GetDataSourceOutput) SetRecommendation(v *RecommendationConfiguration) *GetDataSourceOutput {
	s.Recommendation = v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *GetDataSourceOutput) SetSchedule(v *ScheduleConfiguration) *GetDataSourceOutput {
	s.Schedule = v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetDataSourceOutput) SetStatus(v string) *GetDataSourceOutput {
	s.Status = &v
	return s
}

// SetType sets the Type field's value.
func (s *GetDataSourceOutput) SetType(v string) *GetDataSourceOutput {
	s.Type = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GetDataSourceOutput) SetUpdatedAt(v time.Time) *GetDataSourceOutput {
	s.UpdatedAt = &v
	return s
}

type GetDataSourceRunInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the domain in which this data source run was performed.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the data source run.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataSourceRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataSourceRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDataSourceRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDataSourceRunInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetDataSourceRunInput) SetDomainIdentifier(v string) *GetDataSourceRunInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *GetDataSourceRunInput) SetIdentifier(v string) *GetDataSourceRunInput {
	s.Identifier = &v
	return s
}

type GetDataSourceRunOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the data source run was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601" required:"true"`

	// The configuration snapshot of the data source run.
	DataSourceConfigurationSnapshot *string `locationName:"dataSourceConfigurationSnapshot" type:"string"`

	// The ID of the data source for this data source run.
	//
	// DataSourceId is a required field
	DataSourceId *string `locationName:"dataSourceId" type:"string" required:"true"`

	// The ID of the domain in which this data source run was performed.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// Specifies the error message that is returned if the operation cannot be successfully
	// completed.
	ErrorMessage *DataSourceErrorMessage `locationName:"errorMessage" type:"structure"`

	// The ID of the data source run.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The ID of the project in which this data source run occured.
	//
	// ProjectId is a required field
	ProjectId *string `locationName:"projectId" type:"string" required:"true"`

	// The asset statistics from this data source run.
	RunStatisticsForAssets *RunStatisticsForAssets `locationName:"runStatisticsForAssets" type:"structure"`

	// The timestamp of when this data source run started.
	StartedAt *time.Time `locationName:"startedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The status of this data source run.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"DataSourceRunStatus"`

	// The timestamp of when this data source run stopped.
	StoppedAt *time.Time `locationName:"stoppedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The type of this data source run.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"DataSourceRunType"`

	// The timestamp of when this data source run was updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataSourceRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDataSourceRunOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetDataSourceRunOutput) SetCreatedAt(v time.Time) *GetDataSourceRunOutput {
	s.CreatedAt = &v
	return s
}

// SetDataSourceConfigurationSnapshot sets the DataSourceConfigurationSnapshot field's value.
func (s *GetDataSourceRunOutput) SetDataSourceConfigurationSnapshot(v string) *GetDataSourceRunOutput {
	s.DataSourceConfigurationSnapshot = &v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *GetDataSourceRunOutput) SetDataSourceId(v string) *GetDataSourceRunOutput {
	s.DataSourceId = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetDataSourceRunOutput) SetDomainId(v string) *GetDataSourceRunOutput {
	s.DomainId = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *GetDataSourceRunOutput) SetErrorMessage(v *DataSourceErrorMessage) *GetDataSourceRunOutput {
	s.ErrorMessage = v
	return s
}

// SetId sets the Id field's value.
func (s *GetDataSourceRunOutput) SetId(v string) *GetDataSourceRunOutput {
	s.Id = &v
	return s
}

// SetProjectId sets the ProjectId field's value.
func (s *GetDataSourceRunOutput) SetProjectId(v string) *GetDataSourceRunOutput {
	s.ProjectId = &v
	return s
}

// SetRunStatisticsForAssets sets the RunStatisticsForAssets field's value.
func (s *GetDataSourceRunOutput) SetRunStatisticsForAssets(v *RunStatisticsForAssets) *GetDataSourceRunOutput {
	s.RunStatisticsForAssets = v
	return s
}

// SetStartedAt sets the StartedAt field's value.
func (s *GetDataSourceRunOutput) SetStartedAt(v time.Time) *GetDataSourceRunOutput {
	s.StartedAt = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetDataSourceRunOutput) SetStatus(v string) *GetDataSourceRunOutput {
	s.Status = &v
	return s
}

// SetStoppedAt sets the StoppedAt field's value.
func (s *GetDataSourceRunOutput) SetStoppedAt(v time.Time) *GetDataSourceRunOutput {
	s.StoppedAt = &v
	return s
}

// SetType sets the Type field's value.
func (s *GetDataSourceRunOutput) SetType(v string) *GetDataSourceRunOutput {
	s.Type = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GetDataSourceRunOutput) SetUpdatedAt(v time.Time) *GetDataSourceRunOutput {
	s.UpdatedAt = &v
	return s
}

type GetDomainInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the specified Amazon DataZone domain.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDomainInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDomainInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetDomainInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetDomainInput"}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIdentifier sets the Identifier field's value.
func (s *GetDomainInput) SetIdentifier(v string) *GetDomainInput {
	s.Identifier = &v
	return s
}

type GetDomainOutput struct {
	_ struct{} `type:"structure"`

	// The ARN of the specified Amazon DataZone domain.
	Arn *string `locationName:"arn" type:"string"`

	// The timestamp of when the Amazon DataZone domain was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The description of the Amazon DataZone domain.
	Description *string `locationName:"description" type:"string"`

	// The domain execution role with which the Amazon DataZone domain is created.
	//
	// DomainExecutionRole is a required field
	DomainExecutionRole *string `locationName:"domainExecutionRole" type:"string" required:"true"`

	// The identifier of the specified Amazon DataZone domain.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The identifier of the Amazon Web Services Key Management Service (KMS) key
	// that is used to encrypt the Amazon DataZone domain, metadata, and reporting
	// data.
	KmsKeyIdentifier *string `locationName:"kmsKeyIdentifier" min:"1" type:"string"`

	// The timestamp of when the Amazon DataZone domain was last updated.
	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp"`

	// The name of the Amazon DataZone domain.
	Name *string `locationName:"name" type:"string"`

	// The URL of the data portal for this Amazon DataZone domain.
	PortalUrl *string `locationName:"portalUrl" type:"string"`

	// The single sing-on option of the specified Amazon DataZone domain.
	SingleSignOn *SingleSignOn `locationName:"singleSignOn" type:"structure"`

	// The status of the specified Amazon DataZone domain.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"DomainStatus"`

	// The tags specified for the Amazon DataZone domain.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDomainOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDomainOutput) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *GetDomainOutput) SetArn(v string) *GetDomainOutput {
	s.Arn = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetDomainOutput) SetCreatedAt(v time.Time) *GetDomainOutput {
	s.CreatedAt = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetDomainOutput) SetDescription(v string) *GetDomainOutput {
	s.Description = &v
	return s
}

// SetDomainExecutionRole sets the DomainExecutionRole field's value.
func (s *GetDomainOutput) SetDomainExecutionRole(v string) *GetDomainOutput {
	s.DomainExecutionRole = &v
	return s
}

// SetId sets the Id field's value.
func (s *GetDomainOutput) SetId(v string) *GetDomainOutput {
	s.Id = &v
	return s
}

// SetKmsKeyIdentifier sets the KmsKeyIdentifier field's value.
func (s *GetDomainOutput) SetKmsKeyIdentifier(v string) *GetDomainOutput {
	s.KmsKeyIdentifier = &v
	return s
}

// SetLastUpdatedAt sets the LastUpdatedAt field's value.
func (s *GetDomainOutput) SetLastUpdatedAt(v time.Time) *GetDomainOutput {
	s.LastUpdatedAt = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetDomainOutput) SetName(v string) *GetDomainOutput {
	s.Name = &v
	return s
}

// SetPortalUrl sets the PortalUrl field's value.
func (s *GetDomainOutput) SetPortalUrl(v string) *GetDomainOutput {
	s.PortalUrl = &v
	return s
}

// SetSingleSignOn sets the SingleSignOn field's value.
func (s *GetDomainOutput) SetSingleSignOn(v *SingleSignOn) *GetDomainOutput {
	s.SingleSignOn = v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetDomainOutput) SetStatus(v string) *GetDomainOutput {
	s.Status = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *GetDomainOutput) SetTags(v map[string]*string) *GetDomainOutput {
	s.Tags = v
	return s
}

type GetEnvironmentBlueprintConfigurationInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon DataZone domain where this blueprint exists.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// He ID of the blueprint.
	//
	// EnvironmentBlueprintIdentifier is a required field
	EnvironmentBlueprintIdentifier *string `location:"uri" locationName:"environmentBlueprintIdentifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnvironmentBlueprintConfigurationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnvironmentBlueprintConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetEnvironmentBlueprintConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetEnvironmentBlueprintConfigurationInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.EnvironmentBlueprintIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("EnvironmentBlueprintIdentifier"))
	}
	if s.EnvironmentBlueprintIdentifier != nil && len(*s.EnvironmentBlueprintIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EnvironmentBlueprintIdentifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetEnvironmentBlueprintConfigurationInput) SetDomainIdentifier(v string) *GetEnvironmentBlueprintConfigurationInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnvironmentBlueprintIdentifier sets the EnvironmentBlueprintIdentifier field's value.
func (s *GetEnvironmentBlueprintConfigurationInput) SetEnvironmentBlueprintIdentifier(v string) *GetEnvironmentBlueprintConfigurationInput {
	s.EnvironmentBlueprintIdentifier = &v
	return s
}

type GetEnvironmentBlueprintConfigurationOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of when this blueprint was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The ID of the Amazon DataZone domain where this blueprint exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The Amazon Web Services regions in which this blueprint is enabled.
	EnabledRegions []*string `locationName:"enabledRegions" type:"list"`

	// The ID of the blueprint.
	//
	// EnvironmentBlueprintId is a required field
	EnvironmentBlueprintId *string `locationName:"environmentBlueprintId" type:"string" required:"true"`

	// The ARN of the manage access role with which this blueprint is created.
	ManageAccessRoleArn *string `locationName:"manageAccessRoleArn" type:"string"`

	// The ARN of the provisioning role with which this blueprint is created.
	ProvisioningRoleArn *string `locationName:"provisioningRoleArn" type:"string"`

	// The regional parameters of the blueprint.
	RegionalParameters map[string]map[string]*string `locationName:"regionalParameters" type:"map"`

	// The timestamp of when this blueprint was upated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnvironmentBlueprintConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnvironmentBlueprintConfigurationOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetEnvironmentBlueprintConfigurationOutput) SetCreatedAt(v time.Time) *GetEnvironmentBlueprintConfigurationOutput {
	s.CreatedAt = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetEnvironmentBlueprintConfigurationOutput) SetDomainId(v string) *GetEnvironmentBlueprintConfigurationOutput {
	s.DomainId = &v
	return s
}

// SetEnabledRegions sets the EnabledRegions field's value.
func (s *GetEnvironmentBlueprintConfigurationOutput) SetEnabledRegions(v []*string) *GetEnvironmentBlueprintConfigurationOutput {
	s.EnabledRegions = v
	return s
}

// SetEnvironmentBlueprintId sets the EnvironmentBlueprintId field's value.
func (s *GetEnvironmentBlueprintConfigurationOutput) SetEnvironmentBlueprintId(v string) *GetEnvironmentBlueprintConfigurationOutput {
	s.EnvironmentBlueprintId = &v
	return s
}

// SetManageAccessRoleArn sets the ManageAccessRoleArn field's value.
func (s *GetEnvironmentBlueprintConfigurationOutput) SetManageAccessRoleArn(v string) *GetEnvironmentBlueprintConfigurationOutput {
	s.ManageAccessRoleArn = &v
	return s
}

// SetProvisioningRoleArn sets the ProvisioningRoleArn field's value.
func (s *GetEnvironmentBlueprintConfigurationOutput) SetProvisioningRoleArn(v string) *GetEnvironmentBlueprintConfigurationOutput {
	s.ProvisioningRoleArn = &v
	return s
}

// SetRegionalParameters sets the RegionalParameters field's value.
func (s *GetEnvironmentBlueprintConfigurationOutput) SetRegionalParameters(v map[string]map[string]*string) *GetEnvironmentBlueprintConfigurationOutput {
	s.RegionalParameters = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GetEnvironmentBlueprintConfigurationOutput) SetUpdatedAt(v time.Time) *GetEnvironmentBlueprintConfigurationOutput {
	s.UpdatedAt = &v
	return s
}

type GetEnvironmentBlueprintInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the domain in which this blueprint exists.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of this Amazon DataZone blueprint.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnvironmentBlueprintInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnvironmentBlueprintInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetEnvironmentBlueprintInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetEnvironmentBlueprintInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetEnvironmentBlueprintInput) SetDomainIdentifier(v string) *GetEnvironmentBlueprintInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *GetEnvironmentBlueprintInput) SetIdentifier(v string) *GetEnvironmentBlueprintInput {
	s.Identifier = &v
	return s
}

type GetEnvironmentBlueprintOutput struct {
	_ struct{} `type:"structure"`

	// A timestamp of when this blueprint was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The deployment properties of this Amazon DataZone blueprint.
	DeploymentProperties *DeploymentProperties `locationName:"deploymentProperties" type:"structure"`

	// The description of this Amazon DataZone blueprint.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetEnvironmentBlueprintOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The glossary terms attached to this Amazon DataZone blueprint.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// The ID of this Amazon DataZone blueprint.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The name of this Amazon DataZone blueprint.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The provider of this Amazon DataZone blueprint.
	//
	// Provider is a required field
	Provider *string `locationName:"provider" type:"string" required:"true"`

	// The provisioning properties of this Amazon DataZone blueprint.
	//
	// ProvisioningProperties is a required field
	ProvisioningProperties *ProvisioningProperties `locationName:"provisioningProperties" type:"structure" required:"true"`

	// The timestamp of when this blueprint was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The user parameters of this blueprint.
	UserParameters []*CustomParameter `locationName:"userParameters" 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 GetEnvironmentBlueprintOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnvironmentBlueprintOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetEnvironmentBlueprintOutput) SetCreatedAt(v time.Time) *GetEnvironmentBlueprintOutput {
	s.CreatedAt = &v
	return s
}

// SetDeploymentProperties sets the DeploymentProperties field's value.
func (s *GetEnvironmentBlueprintOutput) SetDeploymentProperties(v *DeploymentProperties) *GetEnvironmentBlueprintOutput {
	s.DeploymentProperties = v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetEnvironmentBlueprintOutput) SetDescription(v string) *GetEnvironmentBlueprintOutput {
	s.Description = &v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *GetEnvironmentBlueprintOutput) SetGlossaryTerms(v []*string) *GetEnvironmentBlueprintOutput {
	s.GlossaryTerms = v
	return s
}

// SetId sets the Id field's value.
func (s *GetEnvironmentBlueprintOutput) SetId(v string) *GetEnvironmentBlueprintOutput {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetEnvironmentBlueprintOutput) SetName(v string) *GetEnvironmentBlueprintOutput {
	s.Name = &v
	return s
}

// SetProvider sets the Provider field's value.
func (s *GetEnvironmentBlueprintOutput) SetProvider(v string) *GetEnvironmentBlueprintOutput {
	s.Provider = &v
	return s
}

// SetProvisioningProperties sets the ProvisioningProperties field's value.
func (s *GetEnvironmentBlueprintOutput) SetProvisioningProperties(v *ProvisioningProperties) *GetEnvironmentBlueprintOutput {
	s.ProvisioningProperties = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GetEnvironmentBlueprintOutput) SetUpdatedAt(v time.Time) *GetEnvironmentBlueprintOutput {
	s.UpdatedAt = &v
	return s
}

// SetUserParameters sets the UserParameters field's value.
func (s *GetEnvironmentBlueprintOutput) SetUserParameters(v []*CustomParameter) *GetEnvironmentBlueprintOutput {
	s.UserParameters = v
	return s
}

type GetEnvironmentInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon DataZone domain where the environment exists.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the Amazon DataZone environment.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnvironmentInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnvironmentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetEnvironmentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetEnvironmentInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetEnvironmentInput) SetDomainIdentifier(v string) *GetEnvironmentInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *GetEnvironmentInput) SetIdentifier(v string) *GetEnvironmentInput {
	s.Identifier = &v
	return s
}

type GetEnvironmentOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account where the environment exists.
	AwsAccountId *string `locationName:"awsAccountId" type:"string"`

	// The Amazon Web Services region where the environment exists.
	AwsAccountRegion *string `locationName:"awsAccountRegion" type:"string"`

	// The timestamp of when the environment was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The Amazon DataZone user who created the environment.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The deployment properties of the environment.
	DeploymentProperties *DeploymentProperties `locationName:"deploymentProperties" type:"structure"`

	// The description of the environment.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetEnvironmentOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain where the environment exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The actions of the environment.
	EnvironmentActions []*ConfigurableEnvironmentAction `locationName:"environmentActions" type:"list"`

	// The blueprint with which the environment is created.
	EnvironmentBlueprintId *string `locationName:"environmentBlueprintId" type:"string"`

	// The ID of the environment profile with which the environment is created.
	//
	// EnvironmentProfileId is a required field
	EnvironmentProfileId *string `locationName:"environmentProfileId" type:"string" required:"true"`

	// The business glossary terms that can be used in this environment.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// The ID of the environment.
	Id *string `locationName:"id" type:"string"`

	// The details of the last deployment of the environment.
	LastDeployment *Deployment `locationName:"lastDeployment" type:"structure"`

	// The name of the environment.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetEnvironmentOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the Amazon DataZone project in which this environment is created.
	//
	// ProjectId is a required field
	ProjectId *string `locationName:"projectId" type:"string" required:"true"`

	// The provider of this Amazon DataZone environment.
	//
	// Provider is a required field
	Provider *string `locationName:"provider" type:"string" required:"true"`

	// The provisioned resources of this Amazon DataZone environment.
	ProvisionedResources []*Resource `locationName:"provisionedResources" type:"list"`

	// The provisioning properties of this Amazon DataZone environment.
	ProvisioningProperties *ProvisioningProperties `locationName:"provisioningProperties" type:"structure"`

	// The status of this Amazon DataZone environment.
	Status *string `locationName:"status" type:"string" enum:"EnvironmentStatus"`

	// The timestamp of when this environment was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The user parameters of this Amazon DataZone environment.
	UserParameters []*CustomParameter `locationName:"userParameters" 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 GetEnvironmentOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnvironmentOutput) GoString() string {
	return s.String()
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *GetEnvironmentOutput) SetAwsAccountId(v string) *GetEnvironmentOutput {
	s.AwsAccountId = &v
	return s
}

// SetAwsAccountRegion sets the AwsAccountRegion field's value.
func (s *GetEnvironmentOutput) SetAwsAccountRegion(v string) *GetEnvironmentOutput {
	s.AwsAccountRegion = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetEnvironmentOutput) SetCreatedAt(v time.Time) *GetEnvironmentOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *GetEnvironmentOutput) SetCreatedBy(v string) *GetEnvironmentOutput {
	s.CreatedBy = &v
	return s
}

// SetDeploymentProperties sets the DeploymentProperties field's value.
func (s *GetEnvironmentOutput) SetDeploymentProperties(v *DeploymentProperties) *GetEnvironmentOutput {
	s.DeploymentProperties = v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetEnvironmentOutput) SetDescription(v string) *GetEnvironmentOutput {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetEnvironmentOutput) SetDomainId(v string) *GetEnvironmentOutput {
	s.DomainId = &v
	return s
}

// SetEnvironmentActions sets the EnvironmentActions field's value.
func (s *GetEnvironmentOutput) SetEnvironmentActions(v []*ConfigurableEnvironmentAction) *GetEnvironmentOutput {
	s.EnvironmentActions = v
	return s
}

// SetEnvironmentBlueprintId sets the EnvironmentBlueprintId field's value.
func (s *GetEnvironmentOutput) SetEnvironmentBlueprintId(v string) *GetEnvironmentOutput {
	s.EnvironmentBlueprintId = &v
	return s
}

// SetEnvironmentProfileId sets the EnvironmentProfileId field's value.
func (s *GetEnvironmentOutput) SetEnvironmentProfileId(v string) *GetEnvironmentOutput {
	s.EnvironmentProfileId = &v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *GetEnvironmentOutput) SetGlossaryTerms(v []*string) *GetEnvironmentOutput {
	s.GlossaryTerms = v
	return s
}

// SetId sets the Id field's value.
func (s *GetEnvironmentOutput) SetId(v string) *GetEnvironmentOutput {
	s.Id = &v
	return s
}

// SetLastDeployment sets the LastDeployment field's value.
func (s *GetEnvironmentOutput) SetLastDeployment(v *Deployment) *GetEnvironmentOutput {
	s.LastDeployment = v
	return s
}

// SetName sets the Name field's value.
func (s *GetEnvironmentOutput) SetName(v string) *GetEnvironmentOutput {
	s.Name = &v
	return s
}

// SetProjectId sets the ProjectId field's value.
func (s *GetEnvironmentOutput) SetProjectId(v string) *GetEnvironmentOutput {
	s.ProjectId = &v
	return s
}

// SetProvider sets the Provider field's value.
func (s *GetEnvironmentOutput) SetProvider(v string) *GetEnvironmentOutput {
	s.Provider = &v
	return s
}

// SetProvisionedResources sets the ProvisionedResources field's value.
func (s *GetEnvironmentOutput) SetProvisionedResources(v []*Resource) *GetEnvironmentOutput {
	s.ProvisionedResources = v
	return s
}

// SetProvisioningProperties sets the ProvisioningProperties field's value.
func (s *GetEnvironmentOutput) SetProvisioningProperties(v *ProvisioningProperties) *GetEnvironmentOutput {
	s.ProvisioningProperties = v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetEnvironmentOutput) SetStatus(v string) *GetEnvironmentOutput {
	s.Status = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GetEnvironmentOutput) SetUpdatedAt(v time.Time) *GetEnvironmentOutput {
	s.UpdatedAt = &v
	return s
}

// SetUserParameters sets the UserParameters field's value.
func (s *GetEnvironmentOutput) SetUserParameters(v []*CustomParameter) *GetEnvironmentOutput {
	s.UserParameters = v
	return s
}

type GetEnvironmentProfileInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon DataZone domain in which this environment profile exists.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the environment profile.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnvironmentProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnvironmentProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetEnvironmentProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetEnvironmentProfileInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetEnvironmentProfileInput) SetDomainIdentifier(v string) *GetEnvironmentProfileInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *GetEnvironmentProfileInput) SetIdentifier(v string) *GetEnvironmentProfileInput {
	s.Identifier = &v
	return s
}

type GetEnvironmentProfileOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account where this environment profile
	// exists.
	AwsAccountId *string `locationName:"awsAccountId" type:"string"`

	// The Amazon Web Services region where this environment profile exists.
	AwsAccountRegion *string `locationName:"awsAccountRegion" type:"string"`

	// The timestamp of when this environment profile was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The Amazon DataZone user who created this environment profile.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The description of the environment profile.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetEnvironmentProfileOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which this environment profile exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The ID of the blueprint with which this environment profile is created.
	//
	// EnvironmentBlueprintId is a required field
	EnvironmentBlueprintId *string `locationName:"environmentBlueprintId" type:"string" required:"true"`

	// The ID of the environment profile.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The name of the environment profile.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetEnvironmentProfileOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the Amazon DataZone project in which this environment profile is
	// created.
	ProjectId *string `locationName:"projectId" type:"string"`

	// The timestamp of when this environment profile was upated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The user parameters of the environment profile.
	UserParameters []*CustomParameter `locationName:"userParameters" 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 GetEnvironmentProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetEnvironmentProfileOutput) GoString() string {
	return s.String()
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *GetEnvironmentProfileOutput) SetAwsAccountId(v string) *GetEnvironmentProfileOutput {
	s.AwsAccountId = &v
	return s
}

// SetAwsAccountRegion sets the AwsAccountRegion field's value.
func (s *GetEnvironmentProfileOutput) SetAwsAccountRegion(v string) *GetEnvironmentProfileOutput {
	s.AwsAccountRegion = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetEnvironmentProfileOutput) SetCreatedAt(v time.Time) *GetEnvironmentProfileOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *GetEnvironmentProfileOutput) SetCreatedBy(v string) *GetEnvironmentProfileOutput {
	s.CreatedBy = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetEnvironmentProfileOutput) SetDescription(v string) *GetEnvironmentProfileOutput {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetEnvironmentProfileOutput) SetDomainId(v string) *GetEnvironmentProfileOutput {
	s.DomainId = &v
	return s
}

// SetEnvironmentBlueprintId sets the EnvironmentBlueprintId field's value.
func (s *GetEnvironmentProfileOutput) SetEnvironmentBlueprintId(v string) *GetEnvironmentProfileOutput {
	s.EnvironmentBlueprintId = &v
	return s
}

// SetId sets the Id field's value.
func (s *GetEnvironmentProfileOutput) SetId(v string) *GetEnvironmentProfileOutput {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetEnvironmentProfileOutput) SetName(v string) *GetEnvironmentProfileOutput {
	s.Name = &v
	return s
}

// SetProjectId sets the ProjectId field's value.
func (s *GetEnvironmentProfileOutput) SetProjectId(v string) *GetEnvironmentProfileOutput {
	s.ProjectId = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GetEnvironmentProfileOutput) SetUpdatedAt(v time.Time) *GetEnvironmentProfileOutput {
	s.UpdatedAt = &v
	return s
}

// SetUserParameters sets the UserParameters field's value.
func (s *GetEnvironmentProfileOutput) SetUserParameters(v []*CustomParameter) *GetEnvironmentProfileOutput {
	s.UserParameters = v
	return s
}

type GetFormTypeInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon DataZone domain in which this metadata form type exists.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the metadata form type.
	//
	// FormTypeIdentifier is a required field
	FormTypeIdentifier *string `location:"uri" locationName:"formTypeIdentifier" min:"1" type:"string" required:"true"`

	// The revision of this metadata form type.
	Revision *string `location:"querystring" locationName:"revision" 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 GetFormTypeInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFormTypeInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetFormTypeInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetFormTypeInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.FormTypeIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("FormTypeIdentifier"))
	}
	if s.FormTypeIdentifier != nil && len(*s.FormTypeIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FormTypeIdentifier", 1))
	}
	if s.Revision != nil && len(*s.Revision) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Revision", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetFormTypeInput) SetDomainIdentifier(v string) *GetFormTypeInput {
	s.DomainIdentifier = &v
	return s
}

// SetFormTypeIdentifier sets the FormTypeIdentifier field's value.
func (s *GetFormTypeInput) SetFormTypeIdentifier(v string) *GetFormTypeInput {
	s.FormTypeIdentifier = &v
	return s
}

// SetRevision sets the Revision field's value.
func (s *GetFormTypeInput) SetRevision(v string) *GetFormTypeInput {
	s.Revision = &v
	return s
}

type GetFormTypeOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of when this metadata form type was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The Amazon DataZone user who created this metadata form type.
	CreatedBy *string `locationName:"createdBy" type:"string"`

	// The description of the metadata form type.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetFormTypeOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which this metadata form type exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The imports of the metadata form type.
	Imports []*Import `locationName:"imports" min:"1" type:"list"`

	// The model of the metadata form type.
	//
	// Model is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetFormTypeOutput's
	// String and GoString methods.
	//
	// Model is a required field
	Model *Model `locationName:"model" type:"structure" required:"true" sensitive:"true"`

	// The name of the metadata form type.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetFormTypeOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which the metadata form type was
	// originally created.
	OriginDomainId *string `locationName:"originDomainId" type:"string"`

	// The ID of the project in which this metadata form type was originally created.
	OriginProjectId *string `locationName:"originProjectId" type:"string"`

	// The ID of the project that owns this metadata form type.
	OwningProjectId *string `locationName:"owningProjectId" type:"string"`

	// The revision of the metadata form type.
	//
	// Revision is a required field
	Revision *string `locationName:"revision" min:"1" type:"string" required:"true"`

	// The status of the metadata form type.
	Status *string `locationName:"status" type:"string" enum:"FormTypeStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFormTypeOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetFormTypeOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetFormTypeOutput) SetCreatedAt(v time.Time) *GetFormTypeOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *GetFormTypeOutput) SetCreatedBy(v string) *GetFormTypeOutput {
	s.CreatedBy = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetFormTypeOutput) SetDescription(v string) *GetFormTypeOutput {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetFormTypeOutput) SetDomainId(v string) *GetFormTypeOutput {
	s.DomainId = &v
	return s
}

// SetImports sets the Imports field's value.
func (s *GetFormTypeOutput) SetImports(v []*Import) *GetFormTypeOutput {
	s.Imports = v
	return s
}

// SetModel sets the Model field's value.
func (s *GetFormTypeOutput) SetModel(v *Model) *GetFormTypeOutput {
	s.Model = v
	return s
}

// SetName sets the Name field's value.
func (s *GetFormTypeOutput) SetName(v string) *GetFormTypeOutput {
	s.Name = &v
	return s
}

// SetOriginDomainId sets the OriginDomainId field's value.
func (s *GetFormTypeOutput) SetOriginDomainId(v string) *GetFormTypeOutput {
	s.OriginDomainId = &v
	return s
}

// SetOriginProjectId sets the OriginProjectId field's value.
func (s *GetFormTypeOutput) SetOriginProjectId(v string) *GetFormTypeOutput {
	s.OriginProjectId = &v
	return s
}

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *GetFormTypeOutput) SetOwningProjectId(v string) *GetFormTypeOutput {
	s.OwningProjectId = &v
	return s
}

// SetRevision sets the Revision field's value.
func (s *GetFormTypeOutput) SetRevision(v string) *GetFormTypeOutput {
	s.Revision = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetFormTypeOutput) SetStatus(v string) *GetFormTypeOutput {
	s.Status = &v
	return s
}

type GetGlossaryInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon DataZone domain in which this business glossary exists.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the business glossary.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGlossaryInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGlossaryInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetGlossaryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetGlossaryInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetGlossaryInput) SetDomainIdentifier(v string) *GetGlossaryInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *GetGlossaryInput) SetIdentifier(v string) *GetGlossaryInput {
	s.Identifier = &v
	return s
}

type GetGlossaryOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of when this business glossary was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The Amazon DataZone user who created this business glossary.
	CreatedBy *string `locationName:"createdBy" type:"string"`

	// The description of the business glossary.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetGlossaryOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which this business glossary exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The ID of the business glossary.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The name of the business glossary.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetGlossaryOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the project that owns this business glossary.
	//
	// OwningProjectId is a required field
	OwningProjectId *string `locationName:"owningProjectId" type:"string" required:"true"`

	// The status of the business glossary.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"GlossaryStatus"`

	// The timestamp of when the business glossary was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`

	// The Amazon DataZone user who updated the business glossary.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGlossaryOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGlossaryOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetGlossaryOutput) SetCreatedAt(v time.Time) *GetGlossaryOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *GetGlossaryOutput) SetCreatedBy(v string) *GetGlossaryOutput {
	s.CreatedBy = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetGlossaryOutput) SetDescription(v string) *GetGlossaryOutput {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetGlossaryOutput) SetDomainId(v string) *GetGlossaryOutput {
	s.DomainId = &v
	return s
}

// SetId sets the Id field's value.
func (s *GetGlossaryOutput) SetId(v string) *GetGlossaryOutput {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetGlossaryOutput) SetName(v string) *GetGlossaryOutput {
	s.Name = &v
	return s
}

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *GetGlossaryOutput) SetOwningProjectId(v string) *GetGlossaryOutput {
	s.OwningProjectId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetGlossaryOutput) SetStatus(v string) *GetGlossaryOutput {
	s.Status = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GetGlossaryOutput) SetUpdatedAt(v time.Time) *GetGlossaryOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *GetGlossaryOutput) SetUpdatedBy(v string) *GetGlossaryOutput {
	s.UpdatedBy = &v
	return s
}

type GetGlossaryTermInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon DataZone domain in which this business glossary term
	// exists.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the business glossary term.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGlossaryTermInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGlossaryTermInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetGlossaryTermInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetGlossaryTermInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetGlossaryTermInput) SetDomainIdentifier(v string) *GetGlossaryTermInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *GetGlossaryTermInput) SetIdentifier(v string) *GetGlossaryTermInput {
	s.Identifier = &v
	return s
}

type GetGlossaryTermOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the business glossary term was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The Amazon DataZone user who created the business glossary.
	CreatedBy *string `locationName:"createdBy" type:"string"`

	// The ID of the Amazon DataZone domain in which this business glossary term
	// exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The ID of the business glossary to which this term belongs.
	//
	// GlossaryId is a required field
	GlossaryId *string `locationName:"glossaryId" type:"string" required:"true"`

	// The ID of the business glossary term.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The long description of the business glossary term.
	//
	// LongDescription is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetGlossaryTermOutput's
	// String and GoString methods.
	LongDescription *string `locationName:"longDescription" type:"string" sensitive:"true"`

	// The name of the business glossary term.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetGlossaryTermOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The short decription of the business glossary term.
	//
	// ShortDescription is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetGlossaryTermOutput's
	// String and GoString methods.
	ShortDescription *string `locationName:"shortDescription" type:"string" sensitive:"true"`

	// The status of the business glossary term.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"GlossaryTermStatus"`

	// The relations of the business glossary term.
	TermRelations *TermRelations `locationName:"termRelations" type:"structure"`

	// The timestamp of when the business glossary term was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`

	// The Amazon DataZone user who updated the business glossary term.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGlossaryTermOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGlossaryTermOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetGlossaryTermOutput) SetCreatedAt(v time.Time) *GetGlossaryTermOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *GetGlossaryTermOutput) SetCreatedBy(v string) *GetGlossaryTermOutput {
	s.CreatedBy = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetGlossaryTermOutput) SetDomainId(v string) *GetGlossaryTermOutput {
	s.DomainId = &v
	return s
}

// SetGlossaryId sets the GlossaryId field's value.
func (s *GetGlossaryTermOutput) SetGlossaryId(v string) *GetGlossaryTermOutput {
	s.GlossaryId = &v
	return s
}

// SetId sets the Id field's value.
func (s *GetGlossaryTermOutput) SetId(v string) *GetGlossaryTermOutput {
	s.Id = &v
	return s
}

// SetLongDescription sets the LongDescription field's value.
func (s *GetGlossaryTermOutput) SetLongDescription(v string) *GetGlossaryTermOutput {
	s.LongDescription = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetGlossaryTermOutput) SetName(v string) *GetGlossaryTermOutput {
	s.Name = &v
	return s
}

// SetShortDescription sets the ShortDescription field's value.
func (s *GetGlossaryTermOutput) SetShortDescription(v string) *GetGlossaryTermOutput {
	s.ShortDescription = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetGlossaryTermOutput) SetStatus(v string) *GetGlossaryTermOutput {
	s.Status = &v
	return s
}

// SetTermRelations sets the TermRelations field's value.
func (s *GetGlossaryTermOutput) SetTermRelations(v *TermRelations) *GetGlossaryTermOutput {
	s.TermRelations = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GetGlossaryTermOutput) SetUpdatedAt(v time.Time) *GetGlossaryTermOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *GetGlossaryTermOutput) SetUpdatedBy(v string) *GetGlossaryTermOutput {
	s.UpdatedBy = &v
	return s
}

type GetGroupProfileInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon DataZone domain in which the group profile exists.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the group profile.
	//
	// GroupIdentifier is a required field
	GroupIdentifier *string `location:"uri" locationName:"groupIdentifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGroupProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGroupProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetGroupProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetGroupProfileInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.GroupIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("GroupIdentifier"))
	}
	if s.GroupIdentifier != nil && len(*s.GroupIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GroupIdentifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetGroupProfileInput) SetDomainIdentifier(v string) *GetGroupProfileInput {
	s.DomainIdentifier = &v
	return s
}

// SetGroupIdentifier sets the GroupIdentifier field's value.
func (s *GetGroupProfileInput) SetGroupIdentifier(v string) *GetGroupProfileInput {
	s.GroupIdentifier = &v
	return s
}

type GetGroupProfileOutput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon DataZone domain in which the group profile exists.
	DomainId *string `locationName:"domainId" type:"string"`

	// The name of the group for which the specified group profile exists.
	//
	// GroupName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetGroupProfileOutput's
	// String and GoString methods.
	GroupName *string `locationName:"groupName" min:"1" type:"string" sensitive:"true"`

	// The identifier of the group profile.
	Id *string `locationName:"id" type:"string"`

	// The identifier of the group profile.
	Status *string `locationName:"status" type:"string" enum:"GroupProfileStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGroupProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetGroupProfileOutput) GoString() string {
	return s.String()
}

// SetDomainId sets the DomainId field's value.
func (s *GetGroupProfileOutput) SetDomainId(v string) *GetGroupProfileOutput {
	s.DomainId = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *GetGroupProfileOutput) SetGroupName(v string) *GetGroupProfileOutput {
	s.GroupName = &v
	return s
}

// SetId sets the Id field's value.
func (s *GetGroupProfileOutput) SetId(v string) *GetGroupProfileOutput {
	s.Id = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetGroupProfileOutput) SetStatus(v string) *GetGroupProfileOutput {
	s.Status = &v
	return s
}

type GetIamPortalLoginUrlInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// the ID of the Amazon DataZone domain the data portal of which you want to
	// get.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetIamPortalLoginUrlInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetIamPortalLoginUrlInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetIamPortalLoginUrlInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetIamPortalLoginUrlInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetIamPortalLoginUrlInput) SetDomainIdentifier(v string) *GetIamPortalLoginUrlInput {
	s.DomainIdentifier = &v
	return s
}

type GetIamPortalLoginUrlOutput struct {
	_ struct{} `type:"structure"`

	// The data portal URL of the specified Amazon DataZone domain.
	AuthCodeUrl *string `locationName:"authCodeUrl" type:"string"`

	// The ID of the user profile.
	//
	// UserProfileId is a required field
	UserProfileId *string `locationName:"userProfileId" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetIamPortalLoginUrlOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetIamPortalLoginUrlOutput) GoString() string {
	return s.String()
}

// SetAuthCodeUrl sets the AuthCodeUrl field's value.
func (s *GetIamPortalLoginUrlOutput) SetAuthCodeUrl(v string) *GetIamPortalLoginUrlOutput {
	s.AuthCodeUrl = &v
	return s
}

// SetUserProfileId sets the UserProfileId field's value.
func (s *GetIamPortalLoginUrlOutput) SetUserProfileId(v string) *GetIamPortalLoginUrlOutput {
	s.UserProfileId = &v
	return s
}

type GetListingInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	ListingRevision *string `location:"querystring" locationName:"listingRevision" 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 GetListingInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetListingInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetListingInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetListingInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}
	if s.ListingRevision != nil && len(*s.ListingRevision) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ListingRevision", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetListingInput) SetDomainIdentifier(v string) *GetListingInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *GetListingInput) SetIdentifier(v string) *GetListingInput {
	s.Identifier = &v
	return s
}

// SetListingRevision sets the ListingRevision field's value.
func (s *GetListingInput) SetListingRevision(v string) *GetListingInput {
	s.ListingRevision = &v
	return s
}

type GetListingOutput struct {
	_ struct{} `type:"structure"`

	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The Amazon DataZone user who created the listing.
	CreatedBy *string `locationName:"createdBy" type:"string"`

	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetListingOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The details of a listing (aka asset published in a Amazon DataZone catalog).
	Item *ListingItem `locationName:"item" type:"structure"`

	// ListingRevision is a required field
	ListingRevision *string `locationName:"listingRevision" min:"1" type:"string" required:"true"`

	Name *string `locationName:"name" min:"1" type:"string"`

	Status *string `locationName:"status" type:"string" enum:"ListingStatus"`

	// The timestamp of when the listing was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`

	// The Amazon DataZone user who updated the listing.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetListingOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetListingOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetListingOutput) SetCreatedAt(v time.Time) *GetListingOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *GetListingOutput) SetCreatedBy(v string) *GetListingOutput {
	s.CreatedBy = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetListingOutput) SetDescription(v string) *GetListingOutput {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetListingOutput) SetDomainId(v string) *GetListingOutput {
	s.DomainId = &v
	return s
}

// SetId sets the Id field's value.
func (s *GetListingOutput) SetId(v string) *GetListingOutput {
	s.Id = &v
	return s
}

// SetItem sets the Item field's value.
func (s *GetListingOutput) SetItem(v *ListingItem) *GetListingOutput {
	s.Item = v
	return s
}

// SetListingRevision sets the ListingRevision field's value.
func (s *GetListingOutput) SetListingRevision(v string) *GetListingOutput {
	s.ListingRevision = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetListingOutput) SetName(v string) *GetListingOutput {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetListingOutput) SetStatus(v string) *GetListingOutput {
	s.Status = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GetListingOutput) SetUpdatedAt(v time.Time) *GetListingOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *GetListingOutput) SetUpdatedBy(v string) *GetListingOutput {
	s.UpdatedBy = &v
	return s
}

type GetProjectInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon DataZone domain in which the project exists.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the project.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetProjectInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetProjectInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetProjectInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetProjectInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetProjectInput) SetDomainIdentifier(v string) *GetProjectInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *GetProjectInput) SetIdentifier(v string) *GetProjectInput {
	s.Identifier = &v
	return s
}

type GetProjectOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the project was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The Amazon DataZone user who created the project.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The description of the project.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetProjectOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The ID of the Amazon DataZone domain in which the project exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// Reasons for failed project deletion
	FailureReasons []*ProjectDeletionError `locationName:"failureReasons" type:"list"`

	// The business glossary terms that can be used in the project.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// >The ID of the project.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The timestamp of when the project was last updated.
	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The name of the project.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetProjectOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// Status of the project
	ProjectStatus *string `locationName:"projectStatus" type:"string" enum:"ProjectStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetProjectOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetProjectOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetProjectOutput) SetCreatedAt(v time.Time) *GetProjectOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *GetProjectOutput) SetCreatedBy(v string) *GetProjectOutput {
	s.CreatedBy = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GetProjectOutput) SetDescription(v string) *GetProjectOutput {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetProjectOutput) SetDomainId(v string) *GetProjectOutput {
	s.DomainId = &v
	return s
}

// SetFailureReasons sets the FailureReasons field's value.
func (s *GetProjectOutput) SetFailureReasons(v []*ProjectDeletionError) *GetProjectOutput {
	s.FailureReasons = v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *GetProjectOutput) SetGlossaryTerms(v []*string) *GetProjectOutput {
	s.GlossaryTerms = v
	return s
}

// SetId sets the Id field's value.
func (s *GetProjectOutput) SetId(v string) *GetProjectOutput {
	s.Id = &v
	return s
}

// SetLastUpdatedAt sets the LastUpdatedAt field's value.
func (s *GetProjectOutput) SetLastUpdatedAt(v time.Time) *GetProjectOutput {
	s.LastUpdatedAt = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetProjectOutput) SetName(v string) *GetProjectOutput {
	s.Name = &v
	return s
}

// SetProjectStatus sets the ProjectStatus field's value.
func (s *GetProjectOutput) SetProjectStatus(v string) *GetProjectOutput {
	s.ProjectStatus = &v
	return s
}

type GetSubscriptionGrantInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon DataZone domain in which the subscription grant exists.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the subscription grant.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSubscriptionGrantInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSubscriptionGrantInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetSubscriptionGrantInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetSubscriptionGrantInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetSubscriptionGrantInput) SetDomainIdentifier(v string) *GetSubscriptionGrantInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *GetSubscriptionGrantInput) SetIdentifier(v string) *GetSubscriptionGrantInput {
	s.Identifier = &v
	return s
}

type GetSubscriptionGrantOutput struct {
	_ struct{} `type:"structure"`

	// The assets for which the subscription grant is created.
	Assets []*SubscribedAsset `locationName:"assets" type:"list"`

	// The timestamp of when the subscription grant is created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who created the subscription grant.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The ID of the Amazon DataZone domain in which the subscription grant exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The entity to which the subscription is granted.
	//
	// GrantedEntity is a required field
	GrantedEntity *GrantedEntity `locationName:"grantedEntity" type:"structure" required:"true"`

	// The ID of the subscription grant.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The status of the subscription grant.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionGrantOverallStatus"`

	// The identifier of the subscription.
	SubscriptionId *string `locationName:"subscriptionId" type:"string"`

	// The subscription target ID associated with the subscription grant.
	//
	// SubscriptionTargetId is a required field
	SubscriptionTargetId *string `locationName:"subscriptionTargetId" type:"string" required:"true"`

	// The timestamp of when the subscription grant was upated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who updated the subscription grant.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSubscriptionGrantOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSubscriptionGrantOutput) GoString() string {
	return s.String()
}

// SetAssets sets the Assets field's value.
func (s *GetSubscriptionGrantOutput) SetAssets(v []*SubscribedAsset) *GetSubscriptionGrantOutput {
	s.Assets = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetSubscriptionGrantOutput) SetCreatedAt(v time.Time) *GetSubscriptionGrantOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *GetSubscriptionGrantOutput) SetCreatedBy(v string) *GetSubscriptionGrantOutput {
	s.CreatedBy = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetSubscriptionGrantOutput) SetDomainId(v string) *GetSubscriptionGrantOutput {
	s.DomainId = &v
	return s
}

// SetGrantedEntity sets the GrantedEntity field's value.
func (s *GetSubscriptionGrantOutput) SetGrantedEntity(v *GrantedEntity) *GetSubscriptionGrantOutput {
	s.GrantedEntity = v
	return s
}

// SetId sets the Id field's value.
func (s *GetSubscriptionGrantOutput) SetId(v string) *GetSubscriptionGrantOutput {
	s.Id = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetSubscriptionGrantOutput) SetStatus(v string) *GetSubscriptionGrantOutput {
	s.Status = &v
	return s
}

// SetSubscriptionId sets the SubscriptionId field's value.
func (s *GetSubscriptionGrantOutput) SetSubscriptionId(v string) *GetSubscriptionGrantOutput {
	s.SubscriptionId = &v
	return s
}

// SetSubscriptionTargetId sets the SubscriptionTargetId field's value.
func (s *GetSubscriptionGrantOutput) SetSubscriptionTargetId(v string) *GetSubscriptionGrantOutput {
	s.SubscriptionTargetId = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GetSubscriptionGrantOutput) SetUpdatedAt(v time.Time) *GetSubscriptionGrantOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *GetSubscriptionGrantOutput) SetUpdatedBy(v string) *GetSubscriptionGrantOutput {
	s.UpdatedBy = &v
	return s
}

type GetSubscriptionInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon DataZone domain in which the subscription exists.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the subscription.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSubscriptionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSubscriptionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetSubscriptionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetSubscriptionInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetSubscriptionInput) SetDomainIdentifier(v string) *GetSubscriptionInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *GetSubscriptionInput) SetIdentifier(v string) *GetSubscriptionInput {
	s.Identifier = &v
	return s
}

type GetSubscriptionOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the subscription was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who created the subscription.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The ID of the Amazon DataZone domain in which the subscription exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The ID of the subscription.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The retain permissions of the subscription.
	RetainPermissions *bool `locationName:"retainPermissions" type:"boolean"`

	// The status of the subscription.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionStatus"`

	// The details of the published asset for which the subscription grant is created.
	//
	// SubscribedListing is a required field
	SubscribedListing *SubscribedListing `locationName:"subscribedListing" type:"structure" required:"true"`

	// The principal that owns the subscription.
	//
	// SubscribedPrincipal is a required field
	SubscribedPrincipal *SubscribedPrincipal `locationName:"subscribedPrincipal" type:"structure" required:"true"`

	// The ID of the subscription request.
	SubscriptionRequestId *string `locationName:"subscriptionRequestId" type:"string"`

	// The timestamp of when the subscription was updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who updated the subscription.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSubscriptionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSubscriptionOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetSubscriptionOutput) SetCreatedAt(v time.Time) *GetSubscriptionOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *GetSubscriptionOutput) SetCreatedBy(v string) *GetSubscriptionOutput {
	s.CreatedBy = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetSubscriptionOutput) SetDomainId(v string) *GetSubscriptionOutput {
	s.DomainId = &v
	return s
}

// SetId sets the Id field's value.
func (s *GetSubscriptionOutput) SetId(v string) *GetSubscriptionOutput {
	s.Id = &v
	return s
}

// SetRetainPermissions sets the RetainPermissions field's value.
func (s *GetSubscriptionOutput) SetRetainPermissions(v bool) *GetSubscriptionOutput {
	s.RetainPermissions = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetSubscriptionOutput) SetStatus(v string) *GetSubscriptionOutput {
	s.Status = &v
	return s
}

// SetSubscribedListing sets the SubscribedListing field's value.
func (s *GetSubscriptionOutput) SetSubscribedListing(v *SubscribedListing) *GetSubscriptionOutput {
	s.SubscribedListing = v
	return s
}

// SetSubscribedPrincipal sets the SubscribedPrincipal field's value.
func (s *GetSubscriptionOutput) SetSubscribedPrincipal(v *SubscribedPrincipal) *GetSubscriptionOutput {
	s.SubscribedPrincipal = v
	return s
}

// SetSubscriptionRequestId sets the SubscriptionRequestId field's value.
func (s *GetSubscriptionOutput) SetSubscriptionRequestId(v string) *GetSubscriptionOutput {
	s.SubscriptionRequestId = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GetSubscriptionOutput) SetUpdatedAt(v time.Time) *GetSubscriptionOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *GetSubscriptionOutput) SetUpdatedBy(v string) *GetSubscriptionOutput {
	s.UpdatedBy = &v
	return s
}

type GetSubscriptionRequestDetailsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon DataZone domain in which to get the subscription
	// request details.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the subscription request the details of which to get.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSubscriptionRequestDetailsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSubscriptionRequestDetailsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetSubscriptionRequestDetailsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetSubscriptionRequestDetailsInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetSubscriptionRequestDetailsInput) SetDomainIdentifier(v string) *GetSubscriptionRequestDetailsInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *GetSubscriptionRequestDetailsInput) SetIdentifier(v string) *GetSubscriptionRequestDetailsInput {
	s.Identifier = &v
	return s
}

type GetSubscriptionRequestDetailsOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the specified subscription request was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who created the subscription request.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The decision comment of the subscription request.
	//
	// DecisionComment is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetSubscriptionRequestDetailsOutput's
	// String and GoString methods.
	DecisionComment *string `locationName:"decisionComment" min:"1" type:"string" sensitive:"true"`

	// The Amazon DataZone domain of the subscription request.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of the subscription request.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The reason for the subscription request.
	//
	// RequestReason is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetSubscriptionRequestDetailsOutput's
	// String and GoString methods.
	//
	// RequestReason is a required field
	RequestReason *string `locationName:"requestReason" min:"1" type:"string" required:"true" sensitive:"true"`

	// The identifier of the Amazon DataZone user who reviewed the subscription
	// request.
	ReviewerId *string `locationName:"reviewerId" type:"string"`

	// The status of the subscription request.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionRequestStatus"`

	// The subscribed listings in the subscription request.
	//
	// SubscribedListings is a required field
	SubscribedListings []*SubscribedListing `locationName:"subscribedListings" min:"1" type:"list" required:"true"`

	// The subscribed principals in the subscription request.
	//
	// SubscribedPrincipals is a required field
	SubscribedPrincipals []*SubscribedPrincipal `locationName:"subscribedPrincipals" min:"1" type:"list" required:"true"`

	// The timestamp of when the subscription request was updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who updated the subscription request.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSubscriptionRequestDetailsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSubscriptionRequestDetailsOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetSubscriptionRequestDetailsOutput) SetCreatedAt(v time.Time) *GetSubscriptionRequestDetailsOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *GetSubscriptionRequestDetailsOutput) SetCreatedBy(v string) *GetSubscriptionRequestDetailsOutput {
	s.CreatedBy = &v
	return s
}

// SetDecisionComment sets the DecisionComment field's value.
func (s *GetSubscriptionRequestDetailsOutput) SetDecisionComment(v string) *GetSubscriptionRequestDetailsOutput {
	s.DecisionComment = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetSubscriptionRequestDetailsOutput) SetDomainId(v string) *GetSubscriptionRequestDetailsOutput {
	s.DomainId = &v
	return s
}

// SetId sets the Id field's value.
func (s *GetSubscriptionRequestDetailsOutput) SetId(v string) *GetSubscriptionRequestDetailsOutput {
	s.Id = &v
	return s
}

// SetRequestReason sets the RequestReason field's value.
func (s *GetSubscriptionRequestDetailsOutput) SetRequestReason(v string) *GetSubscriptionRequestDetailsOutput {
	s.RequestReason = &v
	return s
}

// SetReviewerId sets the ReviewerId field's value.
func (s *GetSubscriptionRequestDetailsOutput) SetReviewerId(v string) *GetSubscriptionRequestDetailsOutput {
	s.ReviewerId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetSubscriptionRequestDetailsOutput) SetStatus(v string) *GetSubscriptionRequestDetailsOutput {
	s.Status = &v
	return s
}

// SetSubscribedListings sets the SubscribedListings field's value.
func (s *GetSubscriptionRequestDetailsOutput) SetSubscribedListings(v []*SubscribedListing) *GetSubscriptionRequestDetailsOutput {
	s.SubscribedListings = v
	return s
}

// SetSubscribedPrincipals sets the SubscribedPrincipals field's value.
func (s *GetSubscriptionRequestDetailsOutput) SetSubscribedPrincipals(v []*SubscribedPrincipal) *GetSubscriptionRequestDetailsOutput {
	s.SubscribedPrincipals = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GetSubscriptionRequestDetailsOutput) SetUpdatedAt(v time.Time) *GetSubscriptionRequestDetailsOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *GetSubscriptionRequestDetailsOutput) SetUpdatedBy(v string) *GetSubscriptionRequestDetailsOutput {
	s.UpdatedBy = &v
	return s
}

type GetSubscriptionTargetInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ID of the Amazon DataZone domain in which the subscription target exists.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The ID of the environment associated with the subscription target.
	//
	// EnvironmentIdentifier is a required field
	EnvironmentIdentifier *string `location:"uri" locationName:"environmentIdentifier" type:"string" required:"true"`

	// The ID of the subscription target.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSubscriptionTargetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSubscriptionTargetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetSubscriptionTargetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetSubscriptionTargetInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.EnvironmentIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("EnvironmentIdentifier"))
	}
	if s.EnvironmentIdentifier != nil && len(*s.EnvironmentIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EnvironmentIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetSubscriptionTargetInput) SetDomainIdentifier(v string) *GetSubscriptionTargetInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnvironmentIdentifier sets the EnvironmentIdentifier field's value.
func (s *GetSubscriptionTargetInput) SetEnvironmentIdentifier(v string) *GetSubscriptionTargetInput {
	s.EnvironmentIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *GetSubscriptionTargetInput) SetIdentifier(v string) *GetSubscriptionTargetInput {
	s.Identifier = &v
	return s
}

type GetSubscriptionTargetOutput struct {
	_ struct{} `type:"structure"`

	// The asset types associated with the subscription target.
	//
	// ApplicableAssetTypes is a required field
	ApplicableAssetTypes []*string `locationName:"applicableAssetTypes" type:"list" required:"true"`

	// The authorized principals of the subscription target.
	//
	// AuthorizedPrincipals is a required field
	AuthorizedPrincipals []*string `locationName:"authorizedPrincipals" min:"1" type:"list" required:"true"`

	// The timestamp of when the subscription target was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who created the subscription target.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The ID of the Amazon DataZone domain in which the subscription target exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The ID of the environment associated with the subscription target.
	//
	// EnvironmentId is a required field
	EnvironmentId *string `locationName:"environmentId" type:"string" required:"true"`

	// The ID of the subscription target.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The manage access role with which the subscription target was created.
	//
	// ManageAccessRole is a required field
	ManageAccessRole *string `locationName:"manageAccessRole" type:"string" required:"true"`

	// The name of the subscription target.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GetSubscriptionTargetOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The ID of the project associated with the subscription target.
	//
	// ProjectId is a required field
	ProjectId *string `locationName:"projectId" type:"string" required:"true"`

	// The provider of the subscription target.
	//
	// Provider is a required field
	Provider *string `locationName:"provider" type:"string" required:"true"`

	// The configuration of teh subscription target.
	//
	// SubscriptionTargetConfig is a required field
	SubscriptionTargetConfig []*SubscriptionTargetForm `locationName:"subscriptionTargetConfig" type:"list" required:"true"`

	// The type of the subscription target.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true"`

	// The timestamp of when the subscription target was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`

	// The Amazon DataZone user who updated the subscription target.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSubscriptionTargetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetSubscriptionTargetOutput) GoString() string {
	return s.String()
}

// SetApplicableAssetTypes sets the ApplicableAssetTypes field's value.
func (s *GetSubscriptionTargetOutput) SetApplicableAssetTypes(v []*string) *GetSubscriptionTargetOutput {
	s.ApplicableAssetTypes = v
	return s
}

// SetAuthorizedPrincipals sets the AuthorizedPrincipals field's value.
func (s *GetSubscriptionTargetOutput) SetAuthorizedPrincipals(v []*string) *GetSubscriptionTargetOutput {
	s.AuthorizedPrincipals = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GetSubscriptionTargetOutput) SetCreatedAt(v time.Time) *GetSubscriptionTargetOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *GetSubscriptionTargetOutput) SetCreatedBy(v string) *GetSubscriptionTargetOutput {
	s.CreatedBy = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetSubscriptionTargetOutput) SetDomainId(v string) *GetSubscriptionTargetOutput {
	s.DomainId = &v
	return s
}

// SetEnvironmentId sets the EnvironmentId field's value.
func (s *GetSubscriptionTargetOutput) SetEnvironmentId(v string) *GetSubscriptionTargetOutput {
	s.EnvironmentId = &v
	return s
}

// SetId sets the Id field's value.
func (s *GetSubscriptionTargetOutput) SetId(v string) *GetSubscriptionTargetOutput {
	s.Id = &v
	return s
}

// SetManageAccessRole sets the ManageAccessRole field's value.
func (s *GetSubscriptionTargetOutput) SetManageAccessRole(v string) *GetSubscriptionTargetOutput {
	s.ManageAccessRole = &v
	return s
}

// SetName sets the Name field's value.
func (s *GetSubscriptionTargetOutput) SetName(v string) *GetSubscriptionTargetOutput {
	s.Name = &v
	return s
}

// SetProjectId sets the ProjectId field's value.
func (s *GetSubscriptionTargetOutput) SetProjectId(v string) *GetSubscriptionTargetOutput {
	s.ProjectId = &v
	return s
}

// SetProvider sets the Provider field's value.
func (s *GetSubscriptionTargetOutput) SetProvider(v string) *GetSubscriptionTargetOutput {
	s.Provider = &v
	return s
}

// SetSubscriptionTargetConfig sets the SubscriptionTargetConfig field's value.
func (s *GetSubscriptionTargetOutput) SetSubscriptionTargetConfig(v []*SubscriptionTargetForm) *GetSubscriptionTargetOutput {
	s.SubscriptionTargetConfig = v
	return s
}

// SetType sets the Type field's value.
func (s *GetSubscriptionTargetOutput) SetType(v string) *GetSubscriptionTargetOutput {
	s.Type = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GetSubscriptionTargetOutput) SetUpdatedAt(v time.Time) *GetSubscriptionTargetOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *GetSubscriptionTargetOutput) SetUpdatedBy(v string) *GetSubscriptionTargetOutput {
	s.UpdatedBy = &v
	return s
}

type GetUserProfileInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// the ID of the Amazon DataZone domain the data portal of which you want to
	// get.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The type of the user profile.
	Type *string `location:"querystring" locationName:"type" type:"string" enum:"UserProfileType"`

	// The identifier of the user for which you want to get the user profile.
	//
	// UserIdentifier is a required field
	UserIdentifier *string `location:"uri" locationName:"userIdentifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUserProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUserProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetUserProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetUserProfileInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.UserIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("UserIdentifier"))
	}
	if s.UserIdentifier != nil && len(*s.UserIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserIdentifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *GetUserProfileInput) SetDomainIdentifier(v string) *GetUserProfileInput {
	s.DomainIdentifier = &v
	return s
}

// SetType sets the Type field's value.
func (s *GetUserProfileInput) SetType(v string) *GetUserProfileInput {
	s.Type = &v
	return s
}

// SetUserIdentifier sets the UserIdentifier field's value.
func (s *GetUserProfileInput) SetUserIdentifier(v string) *GetUserProfileInput {
	s.UserIdentifier = &v
	return s
}

type GetUserProfileOutput struct {
	_ struct{} `type:"structure"`

	// The details of the user profile in Amazon DataZone.
	Details *UserProfileDetails `locationName:"details" type:"structure"`

	// the identifier of the Amazon DataZone domain of which you want to get the
	// user profile.
	DomainId *string `locationName:"domainId" type:"string"`

	// The identifier of the user profile.
	Id *string `locationName:"id" type:"string"`

	// The status of the user profile.
	Status *string `locationName:"status" type:"string" enum:"UserProfileStatus"`

	// The type of the user profile.
	Type *string `locationName:"type" type:"string" enum:"UserProfileType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUserProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetUserProfileOutput) GoString() string {
	return s.String()
}

// SetDetails sets the Details field's value.
func (s *GetUserProfileOutput) SetDetails(v *UserProfileDetails) *GetUserProfileOutput {
	s.Details = v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GetUserProfileOutput) SetDomainId(v string) *GetUserProfileOutput {
	s.DomainId = &v
	return s
}

// SetId sets the Id field's value.
func (s *GetUserProfileOutput) SetId(v string) *GetUserProfileOutput {
	s.Id = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GetUserProfileOutput) SetStatus(v string) *GetUserProfileOutput {
	s.Status = &v
	return s
}

// SetType sets the Type field's value.
func (s *GetUserProfileOutput) SetType(v string) *GetUserProfileOutput {
	s.Type = &v
	return s
}

// The details of a business glossary.
type GlossaryItem struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the glossary was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The Amazon DataZone user who created the glossary.
	CreatedBy *string `locationName:"createdBy" type:"string"`

	// The business glossary description.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GlossaryItem's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which the business glossary
	// exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of the glossary.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The name of the glossary.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GlossaryItem's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The identifier of the project that owns the business glosary.
	//
	// OwningProjectId is a required field
	OwningProjectId *string `locationName:"owningProjectId" type:"string" required:"true"`

	// The business glossary status.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"GlossaryStatus"`

	// The timestamp of when the business glossary was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`

	// The Amazon DataZone user who updated the business glossary.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GlossaryItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GlossaryItem) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GlossaryItem) SetCreatedAt(v time.Time) *GlossaryItem {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *GlossaryItem) SetCreatedBy(v string) *GlossaryItem {
	s.CreatedBy = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *GlossaryItem) SetDescription(v string) *GlossaryItem {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GlossaryItem) SetDomainId(v string) *GlossaryItem {
	s.DomainId = &v
	return s
}

// SetId sets the Id field's value.
func (s *GlossaryItem) SetId(v string) *GlossaryItem {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *GlossaryItem) SetName(v string) *GlossaryItem {
	s.Name = &v
	return s
}

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *GlossaryItem) SetOwningProjectId(v string) *GlossaryItem {
	s.OwningProjectId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GlossaryItem) SetStatus(v string) *GlossaryItem {
	s.Status = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GlossaryItem) SetUpdatedAt(v time.Time) *GlossaryItem {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *GlossaryItem) SetUpdatedBy(v string) *GlossaryItem {
	s.UpdatedBy = &v
	return s
}

// The details of a business glossary term.
type GlossaryTermItem struct {
	_ struct{} `type:"structure"`

	// The timestamp of when a business glossary term was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`

	// The Amazon DataZone user who created the business glossary.
	CreatedBy *string `locationName:"createdBy" type:"string"`

	// The identifier of the Amazon DataZone domain in which the business glossary
	// exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of the business glossary to which the term belongs.
	//
	// GlossaryId is a required field
	GlossaryId *string `locationName:"glossaryId" type:"string" required:"true"`

	// The identifier of the business glossary term.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The long description of the business glossary term.
	//
	// LongDescription is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GlossaryTermItem's
	// String and GoString methods.
	LongDescription *string `locationName:"longDescription" type:"string" sensitive:"true"`

	// The name of the business glossary term.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GlossaryTermItem's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The short description of the business glossary term.
	//
	// ShortDescription is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GlossaryTermItem's
	// String and GoString methods.
	ShortDescription *string `locationName:"shortDescription" type:"string" sensitive:"true"`

	// The status of the business glossary term.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"GlossaryTermStatus"`

	// The relations of the business glossary term.
	TermRelations *TermRelations `locationName:"termRelations" type:"structure"`

	// The timestamp of when a business glossary term was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`

	// The Amazon DataZone user who updated the business glossary term.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GlossaryTermItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GlossaryTermItem) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *GlossaryTermItem) SetCreatedAt(v time.Time) *GlossaryTermItem {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *GlossaryTermItem) SetCreatedBy(v string) *GlossaryTermItem {
	s.CreatedBy = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *GlossaryTermItem) SetDomainId(v string) *GlossaryTermItem {
	s.DomainId = &v
	return s
}

// SetGlossaryId sets the GlossaryId field's value.
func (s *GlossaryTermItem) SetGlossaryId(v string) *GlossaryTermItem {
	s.GlossaryId = &v
	return s
}

// SetId sets the Id field's value.
func (s *GlossaryTermItem) SetId(v string) *GlossaryTermItem {
	s.Id = &v
	return s
}

// SetLongDescription sets the LongDescription field's value.
func (s *GlossaryTermItem) SetLongDescription(v string) *GlossaryTermItem {
	s.LongDescription = &v
	return s
}

// SetName sets the Name field's value.
func (s *GlossaryTermItem) SetName(v string) *GlossaryTermItem {
	s.Name = &v
	return s
}

// SetShortDescription sets the ShortDescription field's value.
func (s *GlossaryTermItem) SetShortDescription(v string) *GlossaryTermItem {
	s.ShortDescription = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GlossaryTermItem) SetStatus(v string) *GlossaryTermItem {
	s.Status = &v
	return s
}

// SetTermRelations sets the TermRelations field's value.
func (s *GlossaryTermItem) SetTermRelations(v *TermRelations) *GlossaryTermItem {
	s.TermRelations = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *GlossaryTermItem) SetUpdatedAt(v time.Time) *GlossaryTermItem {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *GlossaryTermItem) SetUpdatedBy(v string) *GlossaryTermItem {
	s.UpdatedBy = &v
	return s
}

// The configuration details of the Amazon Web Services Glue data source.
type GlueRunConfigurationInput_ struct {
	_ struct{} `type:"structure"`

	// The data access role included in the configuration details of the Amazon
	// Web Services Glue data source.
	DataAccessRole *string `locationName:"dataAccessRole" type:"string"`

	// The relational filter configurations included in the configuration details
	// of the Amazon Web Services Glue data source.
	//
	// RelationalFilterConfigurations is a required field
	RelationalFilterConfigurations []*RelationalFilterConfiguration `locationName:"relationalFilterConfigurations" 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 GlueRunConfigurationInput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GlueRunConfigurationInput_) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GlueRunConfigurationInput_) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GlueRunConfigurationInput_"}
	if s.RelationalFilterConfigurations == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalFilterConfigurations"))
	}
	if s.RelationalFilterConfigurations != nil {
		for i, v := range s.RelationalFilterConfigurations {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RelationalFilterConfigurations", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataAccessRole sets the DataAccessRole field's value.
func (s *GlueRunConfigurationInput_) SetDataAccessRole(v string) *GlueRunConfigurationInput_ {
	s.DataAccessRole = &v
	return s
}

// SetRelationalFilterConfigurations sets the RelationalFilterConfigurations field's value.
func (s *GlueRunConfigurationInput_) SetRelationalFilterConfigurations(v []*RelationalFilterConfiguration) *GlueRunConfigurationInput_ {
	s.RelationalFilterConfigurations = v
	return s
}

// The configuration details of the Amazon Web Services Glue data source.
type GlueRunConfigurationOutput_ struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account ID included in the configuration details
	// of the Amazon Web Services Glue data source.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// The data access role included in the configuration details of the Amazon
	// Web Services Glue data source.
	DataAccessRole *string `locationName:"dataAccessRole" type:"string"`

	// The Amazon Web Services region included in the configuration details of the
	// Amazon Web Services Glue data source.
	Region *string `locationName:"region" min:"4" type:"string"`

	// The relational filter configurations included in the configuration details
	// of the Amazon Web Services Glue data source.
	//
	// RelationalFilterConfigurations is a required field
	RelationalFilterConfigurations []*RelationalFilterConfiguration `locationName:"relationalFilterConfigurations" 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 GlueRunConfigurationOutput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GlueRunConfigurationOutput_) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *GlueRunConfigurationOutput_) SetAccountId(v string) *GlueRunConfigurationOutput_ {
	s.AccountId = &v
	return s
}

// SetDataAccessRole sets the DataAccessRole field's value.
func (s *GlueRunConfigurationOutput_) SetDataAccessRole(v string) *GlueRunConfigurationOutput_ {
	s.DataAccessRole = &v
	return s
}

// SetRegion sets the Region field's value.
func (s *GlueRunConfigurationOutput_) SetRegion(v string) *GlueRunConfigurationOutput_ {
	s.Region = &v
	return s
}

// SetRelationalFilterConfigurations sets the RelationalFilterConfigurations field's value.
func (s *GlueRunConfigurationOutput_) SetRelationalFilterConfigurations(v []*RelationalFilterConfiguration) *GlueRunConfigurationOutput_ {
	s.RelationalFilterConfigurations = v
	return s
}

// The details of a listing for which a subscription is granted.
type GrantedEntity struct {
	_ struct{} `type:"structure"`

	// The listing for which a subscription is granted.
	Listing *ListingRevision `locationName:"listing" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GrantedEntity) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GrantedEntity) GoString() string {
	return s.String()
}

// SetListing sets the Listing field's value.
func (s *GrantedEntity) SetListing(v *ListingRevision) *GrantedEntity {
	s.Listing = v
	return s
}

// The details of a listing for which a subscription is to be granted.
type GrantedEntityInput_ struct {
	_ struct{} `type:"structure"`

	// The listing for which a subscription is to be granted.
	Listing *ListingRevisionInput_ `locationName:"listing" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GrantedEntityInput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GrantedEntityInput_) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GrantedEntityInput_) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GrantedEntityInput_"}
	if s.Listing != nil {
		if err := s.Listing.Validate(); err != nil {
			invalidParams.AddNested("Listing", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetListing sets the Listing field's value.
func (s *GrantedEntityInput_) SetListing(v *ListingRevisionInput_) *GrantedEntityInput_ {
	s.Listing = v
	return s
}

// The details of a group in Amazon DataZone.
type GroupDetails struct {
	_ struct{} `type:"structure"`

	// The identifier of the group in Amazon DataZone.
	//
	// GroupId is a required field
	GroupId *string `locationName:"groupId" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupDetails) GoString() string {
	return s.String()
}

// SetGroupId sets the GroupId field's value.
func (s *GroupDetails) SetGroupId(v string) *GroupDetails {
	s.GroupId = &v
	return s
}

// The details of a group profile.
type GroupProfileSummary struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon DataZone domain of a group profile.
	DomainId *string `locationName:"domainId" type:"string"`

	// The group name of a group profile.
	//
	// GroupName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by GroupProfileSummary's
	// String and GoString methods.
	GroupName *string `locationName:"groupName" min:"1" type:"string" sensitive:"true"`

	// The ID of a group profile.
	Id *string `locationName:"id" type:"string"`

	// The status of a group profile.
	Status *string `locationName:"status" type:"string" enum:"GroupProfileStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupProfileSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GroupProfileSummary) GoString() string {
	return s.String()
}

// SetDomainId sets the DomainId field's value.
func (s *GroupProfileSummary) SetDomainId(v string) *GroupProfileSummary {
	s.DomainId = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *GroupProfileSummary) SetGroupName(v string) *GroupProfileSummary {
	s.GroupName = &v
	return s
}

// SetId sets the Id field's value.
func (s *GroupProfileSummary) SetId(v string) *GroupProfileSummary {
	s.Id = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *GroupProfileSummary) SetStatus(v string) *GroupProfileSummary {
	s.Status = &v
	return s
}

// The details of an IAM user profile in Amazon DataZone.
type IamUserProfileDetails struct {
	_ struct{} `type:"structure"`

	// The ARN of an IAM user profile in Amazon DataZone.
	Arn *string `locationName:"arn" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IamUserProfileDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IamUserProfileDetails) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *IamUserProfileDetails) SetArn(v string) *IamUserProfileDetails {
	s.Arn = &v
	return s
}

// The details of the import of the metadata form type.
type Import struct {
	_ struct{} `type:"structure"`

	// The name of the import.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by Import's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The revision of the import.
	//
	// Revision is a required field
	Revision *string `locationName:"revision" 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 Import) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Import) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *Import) SetName(v string) *Import {
	s.Name = &v
	return s
}

// SetRevision sets the Revision field's value.
func (s *Import) SetRevision(v string) *Import {
	s.Revision = &v
	return s
}

// The request has failed because of an unknown error, exception or failure.
type InternalServerException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InternalServerException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InternalServerException) GoString() string {
	return s.String()
}

func newErrorInternalServerException(v protocol.ResponseMetadata) error {
	return &InternalServerException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InternalServerException) Code() string {
	return "InternalServerException"
}

// Message returns the exception's message.
func (s *InternalServerException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InternalServerException) OrigErr() error {
	return nil
}

func (s *InternalServerException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *InternalServerException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InternalServerException) RequestID() string {
	return s.RespMetadata.RequestID
}

type ListAssetRevisionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the domain.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the asset.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// The maximum number of revisions to return in a single call to ListAssetRevisions.
	// When the number of revisions to be listed is greater than the value of MaxResults,
	// the response contains a NextToken value that you can use in a subsequent
	// call to ListAssetRevisions to list the next set of revisions.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// When the number of revisions is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of revisions, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to ListAssetRevisions
	// to list the next set of revisions.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAssetRevisionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAssetRevisionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListAssetRevisionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListAssetRevisionsInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *ListAssetRevisionsInput) SetDomainIdentifier(v string) *ListAssetRevisionsInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *ListAssetRevisionsInput) SetIdentifier(v string) *ListAssetRevisionsInput {
	s.Identifier = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListAssetRevisionsInput) SetMaxResults(v int64) *ListAssetRevisionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssetRevisionsInput) SetNextToken(v string) *ListAssetRevisionsInput {
	s.NextToken = &v
	return s
}

type ListAssetRevisionsOutput struct {
	_ struct{} `type:"structure"`

	// The results of the ListAssetRevisions action.
	Items []*AssetRevision `locationName:"items" type:"list"`

	// When the number of revisions is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of revisions, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to ListAssetRevisions
	// to list the next set of revisions.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAssetRevisionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListAssetRevisionsOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *ListAssetRevisionsOutput) SetItems(v []*AssetRevision) *ListAssetRevisionsOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListAssetRevisionsOutput) SetNextToken(v string) *ListAssetRevisionsOutput {
	s.NextToken = &v
	return s
}

type ListDataSourceRunActivitiesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon DataZone domain in which to list data source
	// run activities.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the data source run.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// The maximum number of activities to return in a single call to ListDataSourceRunActivities.
	// When the number of activities to be listed is greater than the value of MaxResults,
	// the response contains a NextToken value that you can use in a subsequent
	// call to ListDataSourceRunActivities to list the next set of activities.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// When the number of activities is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of activities, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to ListDataSourceRunActivities
	// to list the next set of activities.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The status of the data source run.
	Status *string `location:"querystring" locationName:"status" type:"string" enum:"DataAssetActivityStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataSourceRunActivitiesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataSourceRunActivitiesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDataSourceRunActivitiesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDataSourceRunActivitiesInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *ListDataSourceRunActivitiesInput) SetDomainIdentifier(v string) *ListDataSourceRunActivitiesInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *ListDataSourceRunActivitiesInput) SetIdentifier(v string) *ListDataSourceRunActivitiesInput {
	s.Identifier = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDataSourceRunActivitiesInput) SetMaxResults(v int64) *ListDataSourceRunActivitiesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataSourceRunActivitiesInput) SetNextToken(v string) *ListDataSourceRunActivitiesInput {
	s.NextToken = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListDataSourceRunActivitiesInput) SetStatus(v string) *ListDataSourceRunActivitiesInput {
	s.Status = &v
	return s
}

type ListDataSourceRunActivitiesOutput struct {
	_ struct{} `type:"structure"`

	// The results of the ListDataSourceRunActivities action.
	//
	// Items is a required field
	Items []*DataSourceRunActivity `locationName:"items" type:"list" required:"true"`

	// When the number of activities is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of activities, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to ListDataSourceRunActivities
	// to list the next set of activities.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataSourceRunActivitiesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataSourceRunActivitiesOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *ListDataSourceRunActivitiesOutput) SetItems(v []*DataSourceRunActivity) *ListDataSourceRunActivitiesOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataSourceRunActivitiesOutput) SetNextToken(v string) *ListDataSourceRunActivitiesOutput {
	s.NextToken = &v
	return s
}

type ListDataSourceRunsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the data source.
	//
	// DataSourceIdentifier is a required field
	DataSourceIdentifier *string `location:"uri" locationName:"dataSourceIdentifier" type:"string" required:"true"`

	// The identifier of the Amazon DataZone domain in which to invoke the ListDataSourceRuns
	// action.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The maximum number of runs to return in a single call to ListDataSourceRuns.
	// When the number of runs to be listed is greater than the value of MaxResults,
	// the response contains a NextToken value that you can use in a subsequent
	// call to ListDataSourceRuns to list the next set of runs.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// When the number of runs is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of runs, the response includes a pagination token named NextToken.
	// You can specify this NextToken value in a subsequent call to ListDataSourceRuns
	// to list the next set of runs.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The status of the data source.
	Status *string `location:"querystring" locationName:"status" type:"string" enum:"DataSourceRunStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataSourceRunsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataSourceRunsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDataSourceRunsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDataSourceRunsInput"}
	if s.DataSourceIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSourceIdentifier"))
	}
	if s.DataSourceIdentifier != nil && len(*s.DataSourceIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSourceIdentifier", 1))
	}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataSourceIdentifier sets the DataSourceIdentifier field's value.
func (s *ListDataSourceRunsInput) SetDataSourceIdentifier(v string) *ListDataSourceRunsInput {
	s.DataSourceIdentifier = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *ListDataSourceRunsInput) SetDomainIdentifier(v string) *ListDataSourceRunsInput {
	s.DomainIdentifier = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDataSourceRunsInput) SetMaxResults(v int64) *ListDataSourceRunsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataSourceRunsInput) SetNextToken(v string) *ListDataSourceRunsInput {
	s.NextToken = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListDataSourceRunsInput) SetStatus(v string) *ListDataSourceRunsInput {
	s.Status = &v
	return s
}

type ListDataSourceRunsOutput struct {
	_ struct{} `type:"structure"`

	// The results of the ListDataSourceRuns action.
	//
	// Items is a required field
	Items []*DataSourceRunSummary `locationName:"items" type:"list" required:"true"`

	// When the number of runs is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of runs, the response includes a pagination token named NextToken.
	// You can specify this NextToken value in a subsequent call to ListDataSourceRuns
	// to list the next set of runs.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataSourceRunsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataSourceRunsOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *ListDataSourceRunsOutput) SetItems(v []*DataSourceRunSummary) *ListDataSourceRunsOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataSourceRunsOutput) SetNextToken(v string) *ListDataSourceRunsOutput {
	s.NextToken = &v
	return s
}

type ListDataSourcesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon DataZone domain in which to list the data sources.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the environment in which to list the data sources.
	EnvironmentIdentifier *string `location:"querystring" locationName:"environmentIdentifier" type:"string"`

	// The maximum number of data sources to return in a single call to ListDataSources.
	// When the number of data sources to be listed is greater than the value of
	// MaxResults, the response contains a NextToken value that you can use in a
	// subsequent call to ListDataSources to list the next set of data sources.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The name of the data source.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ListDataSourcesInput's
	// String and GoString methods.
	Name *string `location:"querystring" locationName:"name" min:"1" type:"string" sensitive:"true"`

	// When the number of data sources is greater than the default value for the
	// MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of data sources, the response includes a pagination
	// token named NextToken. You can specify this NextToken value in a subsequent
	// call to ListDataSources to list the next set of data sources.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The identifier of the project in which to list data sources.
	//
	// ProjectIdentifier is a required field
	ProjectIdentifier *string `location:"querystring" locationName:"projectIdentifier" type:"string" required:"true"`

	// The status of the data source.
	Status *string `location:"querystring" locationName:"status" type:"string" enum:"DataSourceStatus"`

	// The type of the data source.
	Type *string `location:"querystring" locationName:"type" 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 ListDataSourcesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataSourcesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDataSourcesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDataSourcesInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}
	if s.ProjectIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("ProjectIdentifier"))
	}
	if s.Type != nil && len(*s.Type) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Type", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *ListDataSourcesInput) SetDomainIdentifier(v string) *ListDataSourcesInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnvironmentIdentifier sets the EnvironmentIdentifier field's value.
func (s *ListDataSourcesInput) SetEnvironmentIdentifier(v string) *ListDataSourcesInput {
	s.EnvironmentIdentifier = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDataSourcesInput) SetMaxResults(v int64) *ListDataSourcesInput {
	s.MaxResults = &v
	return s
}

// SetName sets the Name field's value.
func (s *ListDataSourcesInput) SetName(v string) *ListDataSourcesInput {
	s.Name = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataSourcesInput) SetNextToken(v string) *ListDataSourcesInput {
	s.NextToken = &v
	return s
}

// SetProjectIdentifier sets the ProjectIdentifier field's value.
func (s *ListDataSourcesInput) SetProjectIdentifier(v string) *ListDataSourcesInput {
	s.ProjectIdentifier = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListDataSourcesInput) SetStatus(v string) *ListDataSourcesInput {
	s.Status = &v
	return s
}

// SetType sets the Type field's value.
func (s *ListDataSourcesInput) SetType(v string) *ListDataSourcesInput {
	s.Type = &v
	return s
}

type ListDataSourcesOutput struct {
	_ struct{} `type:"structure"`

	// The results of the ListDataSources action.
	//
	// Items is a required field
	Items []*DataSourceSummary `locationName:"items" type:"list" required:"true"`

	// When the number of data sources is greater than the default value for the
	// MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of data sources, the response includes a pagination
	// token named NextToken. You can specify this NextToken value in a subsequent
	// call to ListDataSources to list the next set of data sources.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataSourcesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDataSourcesOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *ListDataSourcesOutput) SetItems(v []*DataSourceSummary) *ListDataSourcesOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDataSourcesOutput) SetNextToken(v string) *ListDataSourcesOutput {
	s.NextToken = &v
	return s
}

type ListDomainsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The maximum number of domains to return in a single call to ListDomains.
	// When the number of domains to be listed is greater than the value of MaxResults,
	// the response contains a NextToken value that you can use in a subsequent
	// call to ListDomains to list the next set of domains.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// When the number of domains is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of domains, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to ListDomains
	// to list the next set of domains.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The status of the data source.
	Status *string `location:"querystring" locationName:"status" type:"string" enum:"DomainStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDomainsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDomainsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDomainsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDomainsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDomainsInput) SetMaxResults(v int64) *ListDomainsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDomainsInput) SetNextToken(v string) *ListDomainsInput {
	s.NextToken = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListDomainsInput) SetStatus(v string) *ListDomainsInput {
	s.Status = &v
	return s
}

type ListDomainsOutput struct {
	_ struct{} `type:"structure"`

	// The results of the ListDomains action.
	//
	// Items is a required field
	Items []*DomainSummary `locationName:"items" type:"list" required:"true"`

	// When the number of domains is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of domains, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to ListDomains
	// to list the next set of domains.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDomainsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDomainsOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *ListDomainsOutput) SetItems(v []*DomainSummary) *ListDomainsOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDomainsOutput) SetNextToken(v string) *ListDomainsOutput {
	s.NextToken = &v
	return s
}

type ListEnvironmentBlueprintConfigurationsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon DataZone domain.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The maximum number of blueprint configurations to return in a single call
	// to ListEnvironmentBlueprintConfigurations. When the number of configurations
	// to be listed is greater than the value of MaxResults, the response contains
	// a NextToken value that you can use in a subsequent call to ListEnvironmentBlueprintConfigurations
	// to list the next set of configurations.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// When the number of blueprint configurations is greater than the default value
	// for the MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of configurations, the response includes a pagination
	// token named NextToken. You can specify this NextToken value in a subsequent
	// call to ListEnvironmentBlueprintConfigurations to list the next set of configurations.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnvironmentBlueprintConfigurationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnvironmentBlueprintConfigurationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListEnvironmentBlueprintConfigurationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListEnvironmentBlueprintConfigurationsInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *ListEnvironmentBlueprintConfigurationsInput) SetDomainIdentifier(v string) *ListEnvironmentBlueprintConfigurationsInput {
	s.DomainIdentifier = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListEnvironmentBlueprintConfigurationsInput) SetMaxResults(v int64) *ListEnvironmentBlueprintConfigurationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEnvironmentBlueprintConfigurationsInput) SetNextToken(v string) *ListEnvironmentBlueprintConfigurationsInput {
	s.NextToken = &v
	return s
}

type ListEnvironmentBlueprintConfigurationsOutput struct {
	_ struct{} `type:"structure"`

	// The results of the ListEnvironmentBlueprintConfigurations action.
	Items []*EnvironmentBlueprintConfigurationItem `locationName:"items" type:"list"`

	// When the number of blueprint configurations is greater than the default value
	// for the MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of configurations, the response includes a pagination
	// token named NextToken. You can specify this NextToken value in a subsequent
	// call to ListEnvironmentBlueprintConfigurations to list the next set of configurations.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnvironmentBlueprintConfigurationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnvironmentBlueprintConfigurationsOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *ListEnvironmentBlueprintConfigurationsOutput) SetItems(v []*EnvironmentBlueprintConfigurationItem) *ListEnvironmentBlueprintConfigurationsOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEnvironmentBlueprintConfigurationsOutput) SetNextToken(v string) *ListEnvironmentBlueprintConfigurationsOutput {
	s.NextToken = &v
	return s
}

type ListEnvironmentBlueprintsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon DataZone domain.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// Specifies whether the environment blueprint is managed by Amazon DataZone.
	Managed *bool `location:"querystring" locationName:"managed" type:"boolean"`

	// The maximum number of blueprints to return in a single call to ListEnvironmentBlueprints.
	// When the number of blueprints to be listed is greater than the value of MaxResults,
	// the response contains a NextToken value that you can use in a subsequent
	// call to ListEnvironmentBlueprints to list the next set of blueprints.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// The name of the Amazon DataZone environment.
	Name *string `location:"querystring" locationName:"name" min:"1" type:"string"`

	// When the number of blueprints in the environment is greater than the default
	// value for the MaxResults parameter, or if you explicitly specify a value
	// for MaxResults that is less than the number of blueprints in the environment,
	// the response includes a pagination token named NextToken. You can specify
	// this NextToken value in a subsequent call to ListEnvironmentBlueprintsto
	// list the next set of blueprints.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnvironmentBlueprintsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnvironmentBlueprintsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListEnvironmentBlueprintsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListEnvironmentBlueprintsInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *ListEnvironmentBlueprintsInput) SetDomainIdentifier(v string) *ListEnvironmentBlueprintsInput {
	s.DomainIdentifier = &v
	return s
}

// SetManaged sets the Managed field's value.
func (s *ListEnvironmentBlueprintsInput) SetManaged(v bool) *ListEnvironmentBlueprintsInput {
	s.Managed = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListEnvironmentBlueprintsInput) SetMaxResults(v int64) *ListEnvironmentBlueprintsInput {
	s.MaxResults = &v
	return s
}

// SetName sets the Name field's value.
func (s *ListEnvironmentBlueprintsInput) SetName(v string) *ListEnvironmentBlueprintsInput {
	s.Name = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEnvironmentBlueprintsInput) SetNextToken(v string) *ListEnvironmentBlueprintsInput {
	s.NextToken = &v
	return s
}

type ListEnvironmentBlueprintsOutput struct {
	_ struct{} `type:"structure"`

	// The results of the ListEnvironmentBlueprints action.
	//
	// Items is a required field
	Items []*EnvironmentBlueprintSummary `locationName:"items" type:"list" required:"true"`

	// When the number of blueprints in the environment is greater than the default
	// value for the MaxResults parameter, or if you explicitly specify a value
	// for MaxResults that is less than the number of blueprints in the environment,
	// the response includes a pagination token named NextToken. You can specify
	// this NextToken value in a subsequent call to ListEnvironmentBlueprintsto
	// list the next set of blueprints.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnvironmentBlueprintsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnvironmentBlueprintsOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *ListEnvironmentBlueprintsOutput) SetItems(v []*EnvironmentBlueprintSummary) *ListEnvironmentBlueprintsOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEnvironmentBlueprintsOutput) SetNextToken(v string) *ListEnvironmentBlueprintsOutput {
	s.NextToken = &v
	return s
}

type ListEnvironmentProfilesInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Web Services account where you want to list
	// environment profiles.
	AwsAccountId *string `location:"querystring" locationName:"awsAccountId" type:"string"`

	// The Amazon Web Services region where you want to list environment profiles.
	AwsAccountRegion *string `location:"querystring" locationName:"awsAccountRegion" type:"string"`

	// The identifier of the Amazon DataZone domain.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the blueprint that was used to create the environment profiles
	// that you want to list.
	EnvironmentBlueprintIdentifier *string `location:"querystring" locationName:"environmentBlueprintIdentifier" type:"string"`

	// The maximum number of environment profiles to return in a single call to
	// ListEnvironmentProfiles. When the number of environment profiles to be listed
	// is greater than the value of MaxResults, the response contains a NextToken
	// value that you can use in a subsequent call to ListEnvironmentProfiles to
	// list the next set of environment profiles.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ListEnvironmentProfilesInput's
	// String and GoString methods.
	Name *string `location:"querystring" locationName:"name" min:"1" type:"string" sensitive:"true"`

	// When the number of environment profiles is greater than the default value
	// for the MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of environment profiles, the response includes
	// a pagination token named NextToken. You can specify this NextToken value
	// in a subsequent call to ListEnvironmentProfiles to list the next set of environment
	// profiles.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The identifier of the Amazon DataZone project.
	ProjectIdentifier *string `location:"querystring" locationName:"projectIdentifier" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnvironmentProfilesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnvironmentProfilesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListEnvironmentProfilesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListEnvironmentProfilesInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListEnvironmentProfilesInput) SetAwsAccountId(v string) *ListEnvironmentProfilesInput {
	s.AwsAccountId = &v
	return s
}

// SetAwsAccountRegion sets the AwsAccountRegion field's value.
func (s *ListEnvironmentProfilesInput) SetAwsAccountRegion(v string) *ListEnvironmentProfilesInput {
	s.AwsAccountRegion = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *ListEnvironmentProfilesInput) SetDomainIdentifier(v string) *ListEnvironmentProfilesInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnvironmentBlueprintIdentifier sets the EnvironmentBlueprintIdentifier field's value.
func (s *ListEnvironmentProfilesInput) SetEnvironmentBlueprintIdentifier(v string) *ListEnvironmentProfilesInput {
	s.EnvironmentBlueprintIdentifier = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListEnvironmentProfilesInput) SetMaxResults(v int64) *ListEnvironmentProfilesInput {
	s.MaxResults = &v
	return s
}

// SetName sets the Name field's value.
func (s *ListEnvironmentProfilesInput) SetName(v string) *ListEnvironmentProfilesInput {
	s.Name = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEnvironmentProfilesInput) SetNextToken(v string) *ListEnvironmentProfilesInput {
	s.NextToken = &v
	return s
}

// SetProjectIdentifier sets the ProjectIdentifier field's value.
func (s *ListEnvironmentProfilesInput) SetProjectIdentifier(v string) *ListEnvironmentProfilesInput {
	s.ProjectIdentifier = &v
	return s
}

type ListEnvironmentProfilesOutput struct {
	_ struct{} `type:"structure"`

	// The results of the ListEnvironmentProfiles action.
	//
	// Items is a required field
	Items []*EnvironmentProfileSummary `locationName:"items" type:"list" required:"true"`

	// When the number of environment profiles is greater than the default value
	// for the MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of environment profiles, the response includes
	// a pagination token named NextToken. You can specify this NextToken value
	// in a subsequent call to ListEnvironmentProfiles to list the next set of environment
	// profiles.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnvironmentProfilesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnvironmentProfilesOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *ListEnvironmentProfilesOutput) SetItems(v []*EnvironmentProfileSummary) *ListEnvironmentProfilesOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEnvironmentProfilesOutput) SetNextToken(v string) *ListEnvironmentProfilesOutput {
	s.NextToken = &v
	return s
}

type ListEnvironmentsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon Web Services account where you want to list
	// environments.
	AwsAccountId *string `location:"querystring" locationName:"awsAccountId" type:"string"`

	// The Amazon Web Services region where you want to list environments.
	AwsAccountRegion *string `location:"querystring" locationName:"awsAccountRegion" type:"string"`

	// The identifier of the Amazon DataZone domain.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the Amazon DataZone blueprint.
	EnvironmentBlueprintIdentifier *string `location:"querystring" locationName:"environmentBlueprintIdentifier" type:"string"`

	// The identifier of the environment profile.
	EnvironmentProfileIdentifier *string `location:"querystring" locationName:"environmentProfileIdentifier" type:"string"`

	// The maximum number of environments to return in a single call to ListEnvironments.
	// When the number of environments to be listed is greater than the value of
	// MaxResults, the response contains a NextToken value that you can use in a
	// subsequent call to ListEnvironments to list the next set of environments.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	Name *string `location:"querystring" locationName:"name" type:"string"`

	// When the number of environments is greater than the default value for the
	// MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of environments, the response includes a pagination
	// token named NextToken. You can specify this NextToken value in a subsequent
	// call to ListEnvironments to list the next set of environments.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The identifier of the Amazon DataZone project.
	//
	// ProjectIdentifier is a required field
	ProjectIdentifier *string `location:"querystring" locationName:"projectIdentifier" type:"string" required:"true"`

	// The provider of the environment.
	Provider *string `location:"querystring" locationName:"provider" type:"string"`

	// The status of the environments that you want to list.
	Status *string `location:"querystring" locationName:"status" type:"string" enum:"EnvironmentStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnvironmentsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnvironmentsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListEnvironmentsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListEnvironmentsInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}
	if s.ProjectIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("ProjectIdentifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *ListEnvironmentsInput) SetAwsAccountId(v string) *ListEnvironmentsInput {
	s.AwsAccountId = &v
	return s
}

// SetAwsAccountRegion sets the AwsAccountRegion field's value.
func (s *ListEnvironmentsInput) SetAwsAccountRegion(v string) *ListEnvironmentsInput {
	s.AwsAccountRegion = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *ListEnvironmentsInput) SetDomainIdentifier(v string) *ListEnvironmentsInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnvironmentBlueprintIdentifier sets the EnvironmentBlueprintIdentifier field's value.
func (s *ListEnvironmentsInput) SetEnvironmentBlueprintIdentifier(v string) *ListEnvironmentsInput {
	s.EnvironmentBlueprintIdentifier = &v
	return s
}

// SetEnvironmentProfileIdentifier sets the EnvironmentProfileIdentifier field's value.
func (s *ListEnvironmentsInput) SetEnvironmentProfileIdentifier(v string) *ListEnvironmentsInput {
	s.EnvironmentProfileIdentifier = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListEnvironmentsInput) SetMaxResults(v int64) *ListEnvironmentsInput {
	s.MaxResults = &v
	return s
}

// SetName sets the Name field's value.
func (s *ListEnvironmentsInput) SetName(v string) *ListEnvironmentsInput {
	s.Name = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEnvironmentsInput) SetNextToken(v string) *ListEnvironmentsInput {
	s.NextToken = &v
	return s
}

// SetProjectIdentifier sets the ProjectIdentifier field's value.
func (s *ListEnvironmentsInput) SetProjectIdentifier(v string) *ListEnvironmentsInput {
	s.ProjectIdentifier = &v
	return s
}

// SetProvider sets the Provider field's value.
func (s *ListEnvironmentsInput) SetProvider(v string) *ListEnvironmentsInput {
	s.Provider = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListEnvironmentsInput) SetStatus(v string) *ListEnvironmentsInput {
	s.Status = &v
	return s
}

type ListEnvironmentsOutput struct {
	_ struct{} `type:"structure"`

	// The results of the ListEnvironments action.
	//
	// Items is a required field
	Items []*EnvironmentSummary `locationName:"items" type:"list" required:"true"`

	// When the number of environments is greater than the default value for the
	// MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of environments, the response includes a pagination
	// token named NextToken. You can specify this NextToken value in a subsequent
	// call to ListEnvironments to list the next set of environments.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnvironmentsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListEnvironmentsOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *ListEnvironmentsOutput) SetItems(v []*EnvironmentSummary) *ListEnvironmentsOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListEnvironmentsOutput) SetNextToken(v string) *ListEnvironmentsOutput {
	s.NextToken = &v
	return s
}

type ListNotificationsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The time after which you want to list notifications.
	AfterTimestamp *time.Time `location:"querystring" locationName:"afterTimestamp" type:"timestamp"`

	// The time before which you want to list notifications.
	BeforeTimestamp *time.Time `location:"querystring" locationName:"beforeTimestamp" type:"timestamp"`

	// The identifier of the Amazon DataZone domain.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The maximum number of notifications to return in a single call to ListNotifications.
	// When the number of notifications to be listed is greater than the value of
	// MaxResults, the response contains a NextToken value that you can use in a
	// subsequent call to ListNotifications to list the next set of notifications.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// When the number of notifications is greater than the default value for the
	// MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of notifications, the response includes a pagination
	// token named NextToken. You can specify this NextToken value in a subsequent
	// call to ListNotifications to list the next set of notifications.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The subjects of notifications.
	Subjects []*string `location:"querystring" locationName:"subjects" type:"list"`

	// The task status of notifications.
	TaskStatus *string `location:"querystring" locationName:"taskStatus" type:"string" enum:"TaskStatus"`

	// The type of notifications.
	//
	// Type is a required field
	Type *string `location:"querystring" locationName:"type" type:"string" required:"true" enum:"NotificationType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListNotificationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListNotificationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListNotificationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListNotificationsInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}
	if s.Type == nil {
		invalidParams.Add(request.NewErrParamRequired("Type"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAfterTimestamp sets the AfterTimestamp field's value.
func (s *ListNotificationsInput) SetAfterTimestamp(v time.Time) *ListNotificationsInput {
	s.AfterTimestamp = &v
	return s
}

// SetBeforeTimestamp sets the BeforeTimestamp field's value.
func (s *ListNotificationsInput) SetBeforeTimestamp(v time.Time) *ListNotificationsInput {
	s.BeforeTimestamp = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *ListNotificationsInput) SetDomainIdentifier(v string) *ListNotificationsInput {
	s.DomainIdentifier = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListNotificationsInput) SetMaxResults(v int64) *ListNotificationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListNotificationsInput) SetNextToken(v string) *ListNotificationsInput {
	s.NextToken = &v
	return s
}

// SetSubjects sets the Subjects field's value.
func (s *ListNotificationsInput) SetSubjects(v []*string) *ListNotificationsInput {
	s.Subjects = v
	return s
}

// SetTaskStatus sets the TaskStatus field's value.
func (s *ListNotificationsInput) SetTaskStatus(v string) *ListNotificationsInput {
	s.TaskStatus = &v
	return s
}

// SetType sets the Type field's value.
func (s *ListNotificationsInput) SetType(v string) *ListNotificationsInput {
	s.Type = &v
	return s
}

type ListNotificationsOutput struct {
	_ struct{} `type:"structure"`

	// When the number of notifications is greater than the default value for the
	// MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of notifications, the response includes a pagination
	// token named NextToken. You can specify this NextToken value in a subsequent
	// call to ListNotifications to list the next set of notifications.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The results of the ListNotifications action.
	Notifications []*NotificationOutput_ `locationName:"notifications" 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 ListNotificationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListNotificationsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListNotificationsOutput) SetNextToken(v string) *ListNotificationsOutput {
	s.NextToken = &v
	return s
}

// SetNotifications sets the Notifications field's value.
func (s *ListNotificationsOutput) SetNotifications(v []*NotificationOutput_) *ListNotificationsOutput {
	s.Notifications = v
	return s
}

type ListProjectMembershipsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon DataZone domain in which you want to list project
	// memberships.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The maximum number of memberships to return in a single call to ListProjectMemberships.
	// When the number of memberships to be listed is greater than the value of
	// MaxResults, the response contains a NextToken value that you can use in a
	// subsequent call to ListProjectMemberships to list the next set of memberships.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// When the number of memberships is greater than the default value for the
	// MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of memberships, the response includes a pagination
	// token named NextToken. You can specify this NextToken value in a subsequent
	// call to ListProjectMemberships to list the next set of memberships.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The identifier of the project whose memberships you want to list.
	//
	// ProjectIdentifier is a required field
	ProjectIdentifier *string `location:"uri" locationName:"projectIdentifier" type:"string" required:"true"`

	// The method by which you want to sort the project memberships.
	SortBy *string `location:"querystring" locationName:"sortBy" type:"string" enum:"SortFieldProject"`

	// The sort order of the project memberships.
	SortOrder *string `location:"querystring" locationName:"sortOrder" type:"string" enum:"SortOrder"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListProjectMembershipsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListProjectMembershipsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListProjectMembershipsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListProjectMembershipsInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}
	if s.ProjectIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("ProjectIdentifier"))
	}
	if s.ProjectIdentifier != nil && len(*s.ProjectIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ProjectIdentifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *ListProjectMembershipsInput) SetDomainIdentifier(v string) *ListProjectMembershipsInput {
	s.DomainIdentifier = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListProjectMembershipsInput) SetMaxResults(v int64) *ListProjectMembershipsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListProjectMembershipsInput) SetNextToken(v string) *ListProjectMembershipsInput {
	s.NextToken = &v
	return s
}

// SetProjectIdentifier sets the ProjectIdentifier field's value.
func (s *ListProjectMembershipsInput) SetProjectIdentifier(v string) *ListProjectMembershipsInput {
	s.ProjectIdentifier = &v
	return s
}

// SetSortBy sets the SortBy field's value.
func (s *ListProjectMembershipsInput) SetSortBy(v string) *ListProjectMembershipsInput {
	s.SortBy = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *ListProjectMembershipsInput) SetSortOrder(v string) *ListProjectMembershipsInput {
	s.SortOrder = &v
	return s
}

type ListProjectMembershipsOutput struct {
	_ struct{} `type:"structure"`

	// The members of the project.
	//
	// Members is a required field
	Members []*ProjectMember `locationName:"members" type:"list" required:"true"`

	// When the number of memberships is greater than the default value for the
	// MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of memberships, the response includes a pagination
	// token named NextToken. You can specify this NextToken value in a subsequent
	// call to ListProjectMemberships to list the next set of memberships.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListProjectMembershipsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListProjectMembershipsOutput) GoString() string {
	return s.String()
}

// SetMembers sets the Members field's value.
func (s *ListProjectMembershipsOutput) SetMembers(v []*ProjectMember) *ListProjectMembershipsOutput {
	s.Members = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListProjectMembershipsOutput) SetNextToken(v string) *ListProjectMembershipsOutput {
	s.NextToken = &v
	return s
}

type ListProjectsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon DataZone domain.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of a group.
	GroupIdentifier *string `location:"querystring" locationName:"groupIdentifier" type:"string"`

	// The maximum number of projects to return in a single call to ListProjects.
	// When the number of projects to be listed is greater than the value of MaxResults,
	// the response contains a NextToken value that you can use in a subsequent
	// call to ListProjects to list the next set of projects.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ListProjectsInput's
	// String and GoString methods.
	Name *string `location:"querystring" locationName:"name" min:"1" type:"string" sensitive:"true"`

	// When the number of projects is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of projects, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to ListProjects
	// to list the next set of projects.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The identifier of the Amazon DataZone user.
	UserIdentifier *string `location:"querystring" locationName:"userIdentifier" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListProjectsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListProjectsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListProjectsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListProjectsInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *ListProjectsInput) SetDomainIdentifier(v string) *ListProjectsInput {
	s.DomainIdentifier = &v
	return s
}

// SetGroupIdentifier sets the GroupIdentifier field's value.
func (s *ListProjectsInput) SetGroupIdentifier(v string) *ListProjectsInput {
	s.GroupIdentifier = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListProjectsInput) SetMaxResults(v int64) *ListProjectsInput {
	s.MaxResults = &v
	return s
}

// SetName sets the Name field's value.
func (s *ListProjectsInput) SetName(v string) *ListProjectsInput {
	s.Name = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListProjectsInput) SetNextToken(v string) *ListProjectsInput {
	s.NextToken = &v
	return s
}

// SetUserIdentifier sets the UserIdentifier field's value.
func (s *ListProjectsInput) SetUserIdentifier(v string) *ListProjectsInput {
	s.UserIdentifier = &v
	return s
}

type ListProjectsOutput struct {
	_ struct{} `type:"structure"`

	// The results of the ListProjects action.
	Items []*ProjectSummary `locationName:"items" type:"list"`

	// When the number of projects is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of projects, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to ListProjects
	// to list the next set of projects.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListProjectsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListProjectsOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *ListProjectsOutput) SetItems(v []*ProjectSummary) *ListProjectsOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListProjectsOutput) SetNextToken(v string) *ListProjectsOutput {
	s.NextToken = &v
	return s
}

type ListSubscriptionGrantsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon DataZone domain.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the Amazon DataZone environment.
	EnvironmentId *string `location:"querystring" locationName:"environmentId" type:"string"`

	// The maximum number of subscription grants to return in a single call to ListSubscriptionGrants.
	// When the number of subscription grants to be listed is greater than the value
	// of MaxResults, the response contains a NextToken value that you can use in
	// a subsequent call to ListSubscriptionGrants to list the next set of subscription
	// grants.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// When the number of subscription grants is greater than the default value
	// for the MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of subscription grants, the response includes
	// a pagination token named NextToken. You can specify this NextToken value
	// in a subsequent call to ListSubscriptionGrants to list the next set of subscription
	// grants.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// Specifies the way of sorting the results of this action.
	SortBy *string `location:"querystring" locationName:"sortBy" type:"string" enum:"SortKey"`

	// Specifies the sort order of this action.
	SortOrder *string `location:"querystring" locationName:"sortOrder" type:"string" enum:"SortOrder"`

	// The identifier of the subscribed listing.
	SubscribedListingId *string `location:"querystring" locationName:"subscribedListingId" type:"string"`

	// The identifier of the subscription.
	SubscriptionId *string `location:"querystring" locationName:"subscriptionId" type:"string"`

	// The identifier of the subscription target.
	SubscriptionTargetId *string `location:"querystring" locationName:"subscriptionTargetId" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSubscriptionGrantsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSubscriptionGrantsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListSubscriptionGrantsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListSubscriptionGrantsInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *ListSubscriptionGrantsInput) SetDomainIdentifier(v string) *ListSubscriptionGrantsInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnvironmentId sets the EnvironmentId field's value.
func (s *ListSubscriptionGrantsInput) SetEnvironmentId(v string) *ListSubscriptionGrantsInput {
	s.EnvironmentId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListSubscriptionGrantsInput) SetMaxResults(v int64) *ListSubscriptionGrantsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSubscriptionGrantsInput) SetNextToken(v string) *ListSubscriptionGrantsInput {
	s.NextToken = &v
	return s
}

// SetSortBy sets the SortBy field's value.
func (s *ListSubscriptionGrantsInput) SetSortBy(v string) *ListSubscriptionGrantsInput {
	s.SortBy = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *ListSubscriptionGrantsInput) SetSortOrder(v string) *ListSubscriptionGrantsInput {
	s.SortOrder = &v
	return s
}

// SetSubscribedListingId sets the SubscribedListingId field's value.
func (s *ListSubscriptionGrantsInput) SetSubscribedListingId(v string) *ListSubscriptionGrantsInput {
	s.SubscribedListingId = &v
	return s
}

// SetSubscriptionId sets the SubscriptionId field's value.
func (s *ListSubscriptionGrantsInput) SetSubscriptionId(v string) *ListSubscriptionGrantsInput {
	s.SubscriptionId = &v
	return s
}

// SetSubscriptionTargetId sets the SubscriptionTargetId field's value.
func (s *ListSubscriptionGrantsInput) SetSubscriptionTargetId(v string) *ListSubscriptionGrantsInput {
	s.SubscriptionTargetId = &v
	return s
}

type ListSubscriptionGrantsOutput struct {
	_ struct{} `type:"structure"`

	// The results of the ListSubscriptionGrants action.
	//
	// Items is a required field
	Items []*SubscriptionGrantSummary `locationName:"items" type:"list" required:"true"`

	// When the number of subscription grants is greater than the default value
	// for the MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of subscription grants, the response includes
	// a pagination token named NextToken. You can specify this NextToken value
	// in a subsequent call to ListSubscriptionGrants to list the next set of subscription
	// grants.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSubscriptionGrantsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSubscriptionGrantsOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *ListSubscriptionGrantsOutput) SetItems(v []*SubscriptionGrantSummary) *ListSubscriptionGrantsOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSubscriptionGrantsOutput) SetNextToken(v string) *ListSubscriptionGrantsOutput {
	s.NextToken = &v
	return s
}

type ListSubscriptionRequestsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the subscription request approver's project.
	ApproverProjectId *string `location:"querystring" locationName:"approverProjectId" type:"string"`

	// The identifier of the Amazon DataZone domain.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The maximum number of subscription requests to return in a single call to
	// ListSubscriptionRequests. When the number of subscription requests to be
	// listed is greater than the value of MaxResults, the response contains a NextToken
	// value that you can use in a subsequent call to ListSubscriptionRequests to
	// list the next set of subscription requests.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// When the number of subscription requests is greater than the default value
	// for the MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of subscription requests, the response includes
	// a pagination token named NextToken. You can specify this NextToken value
	// in a subsequent call to ListSubscriptionRequests to list the next set of
	// subscription requests.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The identifier of the project for the subscription requests.
	OwningProjectId *string `location:"querystring" locationName:"owningProjectId" type:"string"`

	// Specifies the way to sort the results of this action.
	SortBy *string `location:"querystring" locationName:"sortBy" type:"string" enum:"SortKey"`

	// Specifies the sort order for the results of this action.
	SortOrder *string `location:"querystring" locationName:"sortOrder" type:"string" enum:"SortOrder"`

	// Specifies the status of the subscription requests.
	Status *string `location:"querystring" locationName:"status" type:"string" enum:"SubscriptionRequestStatus"`

	// The identifier of the subscribed listing.
	SubscribedListingId *string `location:"querystring" locationName:"subscribedListingId" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSubscriptionRequestsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSubscriptionRequestsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListSubscriptionRequestsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListSubscriptionRequestsInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApproverProjectId sets the ApproverProjectId field's value.
func (s *ListSubscriptionRequestsInput) SetApproverProjectId(v string) *ListSubscriptionRequestsInput {
	s.ApproverProjectId = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *ListSubscriptionRequestsInput) SetDomainIdentifier(v string) *ListSubscriptionRequestsInput {
	s.DomainIdentifier = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListSubscriptionRequestsInput) SetMaxResults(v int64) *ListSubscriptionRequestsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSubscriptionRequestsInput) SetNextToken(v string) *ListSubscriptionRequestsInput {
	s.NextToken = &v
	return s
}

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *ListSubscriptionRequestsInput) SetOwningProjectId(v string) *ListSubscriptionRequestsInput {
	s.OwningProjectId = &v
	return s
}

// SetSortBy sets the SortBy field's value.
func (s *ListSubscriptionRequestsInput) SetSortBy(v string) *ListSubscriptionRequestsInput {
	s.SortBy = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *ListSubscriptionRequestsInput) SetSortOrder(v string) *ListSubscriptionRequestsInput {
	s.SortOrder = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListSubscriptionRequestsInput) SetStatus(v string) *ListSubscriptionRequestsInput {
	s.Status = &v
	return s
}

// SetSubscribedListingId sets the SubscribedListingId field's value.
func (s *ListSubscriptionRequestsInput) SetSubscribedListingId(v string) *ListSubscriptionRequestsInput {
	s.SubscribedListingId = &v
	return s
}

type ListSubscriptionRequestsOutput struct {
	_ struct{} `type:"structure"`

	// The results of the ListSubscriptionRequests action.
	//
	// Items is a required field
	Items []*SubscriptionRequestSummary `locationName:"items" type:"list" required:"true"`

	// When the number of subscription requests is greater than the default value
	// for the MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of subscription requests, the response includes
	// a pagination token named NextToken. You can specify this NextToken value
	// in a subsequent call to ListSubscriptionRequests to list the next set of
	// subscription requests.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSubscriptionRequestsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSubscriptionRequestsOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *ListSubscriptionRequestsOutput) SetItems(v []*SubscriptionRequestSummary) *ListSubscriptionRequestsOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSubscriptionRequestsOutput) SetNextToken(v string) *ListSubscriptionRequestsOutput {
	s.NextToken = &v
	return s
}

type ListSubscriptionTargetsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the Amazon DataZone domain where you want to list subscription
	// targets.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the environment where you want to list subscription targets.
	//
	// EnvironmentIdentifier is a required field
	EnvironmentIdentifier *string `location:"uri" locationName:"environmentIdentifier" type:"string" required:"true"`

	// The maximum number of subscription targets to return in a single call to
	// ListSubscriptionTargets. When the number of subscription targets to be listed
	// is greater than the value of MaxResults, the response contains a NextToken
	// value that you can use in a subsequent call to ListSubscriptionTargets to
	// list the next set of subscription targets.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// When the number of subscription targets is greater than the default value
	// for the MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of subscription targets, the response includes
	// a pagination token named NextToken. You can specify this NextToken value
	// in a subsequent call to ListSubscriptionTargets to list the next set of subscription
	// targets.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// Specifies the way in which the results of this action are to be sorted.
	SortBy *string `location:"querystring" locationName:"sortBy" type:"string" enum:"SortKey"`

	// Specifies the sort order for the results of this action.
	SortOrder *string `location:"querystring" locationName:"sortOrder" type:"string" enum:"SortOrder"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSubscriptionTargetsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSubscriptionTargetsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListSubscriptionTargetsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListSubscriptionTargetsInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.EnvironmentIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("EnvironmentIdentifier"))
	}
	if s.EnvironmentIdentifier != nil && len(*s.EnvironmentIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EnvironmentIdentifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *ListSubscriptionTargetsInput) SetDomainIdentifier(v string) *ListSubscriptionTargetsInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnvironmentIdentifier sets the EnvironmentIdentifier field's value.
func (s *ListSubscriptionTargetsInput) SetEnvironmentIdentifier(v string) *ListSubscriptionTargetsInput {
	s.EnvironmentIdentifier = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListSubscriptionTargetsInput) SetMaxResults(v int64) *ListSubscriptionTargetsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSubscriptionTargetsInput) SetNextToken(v string) *ListSubscriptionTargetsInput {
	s.NextToken = &v
	return s
}

// SetSortBy sets the SortBy field's value.
func (s *ListSubscriptionTargetsInput) SetSortBy(v string) *ListSubscriptionTargetsInput {
	s.SortBy = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *ListSubscriptionTargetsInput) SetSortOrder(v string) *ListSubscriptionTargetsInput {
	s.SortOrder = &v
	return s
}

type ListSubscriptionTargetsOutput struct {
	_ struct{} `type:"structure"`

	// The results of the ListSubscriptionTargets action.
	//
	// Items is a required field
	Items []*SubscriptionTargetSummary `locationName:"items" type:"list" required:"true"`

	// When the number of subscription targets is greater than the default value
	// for the MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of subscription targets, the response includes
	// a pagination token named NextToken. You can specify this NextToken value
	// in a subsequent call to ListSubscriptionTargets to list the next set of subscription
	// targets.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSubscriptionTargetsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSubscriptionTargetsOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *ListSubscriptionTargetsOutput) SetItems(v []*SubscriptionTargetSummary) *ListSubscriptionTargetsOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSubscriptionTargetsOutput) SetNextToken(v string) *ListSubscriptionTargetsOutput {
	s.NextToken = &v
	return s
}

type ListSubscriptionsInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The identifier of the project for the subscription's approver.
	ApproverProjectId *string `location:"querystring" locationName:"approverProjectId" type:"string"`

	// The identifier of the Amazon DataZone domain.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The maximum number of subscriptions to return in a single call to ListSubscriptions.
	// When the number of subscriptions to be listed is greater than the value of
	// MaxResults, the response contains a NextToken value that you can use in a
	// subsequent call to ListSubscriptions to list the next set of Subscriptions.
	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`

	// When the number of subscriptions is greater than the default value for the
	// MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of subscriptions, the response includes a pagination
	// token named NextToken. You can specify this NextToken value in a subsequent
	// call to ListSubscriptions to list the next set of subscriptions.
	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`

	// The identifier of the owning project.
	OwningProjectId *string `location:"querystring" locationName:"owningProjectId" type:"string"`

	// Specifies the way in which the results of this action are to be sorted.
	SortBy *string `location:"querystring" locationName:"sortBy" type:"string" enum:"SortKey"`

	// Specifies the sort order for the results of this action.
	SortOrder *string `location:"querystring" locationName:"sortOrder" type:"string" enum:"SortOrder"`

	// The status of the subscriptions that you want to list.
	Status *string `location:"querystring" locationName:"status" type:"string" enum:"SubscriptionStatus"`

	// The identifier of the subscribed listing for the subscriptions that you want
	// to list.
	SubscribedListingId *string `location:"querystring" locationName:"subscribedListingId" type:"string"`

	// The identifier of the subscription request for the subscriptions that you
	// want to list.
	SubscriptionRequestIdentifier *string `location:"querystring" locationName:"subscriptionRequestIdentifier" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSubscriptionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSubscriptionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListSubscriptionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListSubscriptionsInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApproverProjectId sets the ApproverProjectId field's value.
func (s *ListSubscriptionsInput) SetApproverProjectId(v string) *ListSubscriptionsInput {
	s.ApproverProjectId = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *ListSubscriptionsInput) SetDomainIdentifier(v string) *ListSubscriptionsInput {
	s.DomainIdentifier = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListSubscriptionsInput) SetMaxResults(v int64) *ListSubscriptionsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSubscriptionsInput) SetNextToken(v string) *ListSubscriptionsInput {
	s.NextToken = &v
	return s
}

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *ListSubscriptionsInput) SetOwningProjectId(v string) *ListSubscriptionsInput {
	s.OwningProjectId = &v
	return s
}

// SetSortBy sets the SortBy field's value.
func (s *ListSubscriptionsInput) SetSortBy(v string) *ListSubscriptionsInput {
	s.SortBy = &v
	return s
}

// SetSortOrder sets the SortOrder field's value.
func (s *ListSubscriptionsInput) SetSortOrder(v string) *ListSubscriptionsInput {
	s.SortOrder = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *ListSubscriptionsInput) SetStatus(v string) *ListSubscriptionsInput {
	s.Status = &v
	return s
}

// SetSubscribedListingId sets the SubscribedListingId field's value.
func (s *ListSubscriptionsInput) SetSubscribedListingId(v string) *ListSubscriptionsInput {
	s.SubscribedListingId = &v
	return s
}

// SetSubscriptionRequestIdentifier sets the SubscriptionRequestIdentifier field's value.
func (s *ListSubscriptionsInput) SetSubscriptionRequestIdentifier(v string) *ListSubscriptionsInput {
	s.SubscriptionRequestIdentifier = &v
	return s
}

type ListSubscriptionsOutput struct {
	_ struct{} `type:"structure"`

	// The results of the ListSubscriptions action.
	//
	// Items is a required field
	Items []*SubscriptionSummary `locationName:"items" type:"list" required:"true"`

	// When the number of subscriptions is greater than the default value for the
	// MaxResults parameter, or if you explicitly specify a value for MaxResults
	// that is less than the number of subscriptions, the response includes a pagination
	// token named NextToken. You can specify this NextToken value in a subsequent
	// call to ListSubscriptions to list the next set of subscriptions.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSubscriptionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListSubscriptionsOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *ListSubscriptionsOutput) SetItems(v []*SubscriptionSummary) *ListSubscriptionsOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListSubscriptionsOutput) SetNextToken(v string) *ListSubscriptionsOutput {
	s.NextToken = &v
	return s
}

type ListTagsForResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ARN of the resource whose tags you want to list.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTagsForResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTagsForResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTagsForResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput {
	s.ResourceArn = &v
	return s
}

type ListTagsForResourceOutput struct {
	_ struct{} `type:"structure"`

	// The tags of the specified resource.
	Tags map[string]*string `locationName:"tags" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTagsForResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTagsForResourceOutput) GoString() string {
	return s.String()
}

// SetTags sets the Tags field's value.
func (s *ListTagsForResourceOutput) SetTags(v map[string]*string) *ListTagsForResourceOutput {
	s.Tags = v
	return s
}

// The details of a listing (aka asset published in a Amazon DataZone catalog).
type ListingItem struct {
	_ struct{} `type:"structure"`

	// An asset published in an Amazon DataZone catalog.
	AssetListing *AssetListing `locationName:"assetListing" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListingItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListingItem) GoString() string {
	return s.String()
}

// SetAssetListing sets the AssetListing field's value.
func (s *ListingItem) SetAssetListing(v *AssetListing) *ListingItem {
	s.AssetListing = v
	return s
}

// A revision of an asset published in a Amazon DataZone catalog.
type ListingRevision struct {
	_ struct{} `type:"structure"`

	// An identifier of a revision of an asset published in a Amazon DataZone catalog.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The details of a revision of an asset published in a Amazon DataZone catalog.
	//
	// Revision is a required field
	Revision *string `locationName:"revision" 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 ListingRevision) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListingRevision) GoString() string {
	return s.String()
}

// SetId sets the Id field's value.
func (s *ListingRevision) SetId(v string) *ListingRevision {
	s.Id = &v
	return s
}

// SetRevision sets the Revision field's value.
func (s *ListingRevision) SetRevision(v string) *ListingRevision {
	s.Revision = &v
	return s
}

// A revision to be made to an asset published in a Amazon DataZone catalog.
type ListingRevisionInput_ struct {
	_ struct{} `type:"structure"`

	// An identifier of revision to be made to an asset published in a Amazon DataZone
	// catalog.
	//
	// Identifier is a required field
	Identifier *string `locationName:"identifier" type:"string" required:"true"`

	// The details of a revision to be made to an asset published in a Amazon DataZone
	// catalog.
	//
	// Revision is a required field
	Revision *string `locationName:"revision" 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 ListingRevisionInput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListingRevisionInput_) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListingRevisionInput_) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListingRevisionInput_"}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Revision == nil {
		invalidParams.Add(request.NewErrParamRequired("Revision"))
	}
	if s.Revision != nil && len(*s.Revision) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Revision", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIdentifier sets the Identifier field's value.
func (s *ListingRevisionInput_) SetIdentifier(v string) *ListingRevisionInput_ {
	s.Identifier = &v
	return s
}

// SetRevision sets the Revision field's value.
func (s *ListingRevisionInput_) SetRevision(v string) *ListingRevisionInput_ {
	s.Revision = &v
	return s
}

// The details about a project member.
type Member struct {
	_ struct{} `type:"structure"`

	// The ID of the group of a project member.
	GroupIdentifier *string `locationName:"groupIdentifier" type:"string"`

	// The user ID of a project member.
	UserIdentifier *string `locationName:"userIdentifier" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Member) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Member) GoString() string {
	return s.String()
}

// SetGroupIdentifier sets the GroupIdentifier field's value.
func (s *Member) SetGroupIdentifier(v string) *Member {
	s.GroupIdentifier = &v
	return s
}

// SetUserIdentifier sets the UserIdentifier field's value.
func (s *Member) SetUserIdentifier(v string) *Member {
	s.UserIdentifier = &v
	return s
}

// The details about a project member.
type MemberDetails struct {
	_ struct{} `type:"structure"`

	// The group details of a project member.
	Group *GroupDetails `locationName:"group" type:"structure"`

	// The user details of a project member.
	User *UserDetails `locationName:"user" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MemberDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s MemberDetails) GoString() string {
	return s.String()
}

// SetGroup sets the Group field's value.
func (s *MemberDetails) SetGroup(v *GroupDetails) *MemberDetails {
	s.Group = v
	return s
}

// SetUser sets the User field's value.
func (s *MemberDetails) SetUser(v *UserDetails) *MemberDetails {
	s.User = v
	return s
}

type Model struct {
	_ struct{} `type:"structure" sensitive:"true"`

	Smithy *string `locationName:"smithy" 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 Model) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Model) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Model) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Model"}
	if s.Smithy != nil && len(*s.Smithy) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Smithy", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSmithy sets the Smithy field's value.
func (s *Model) SetSmithy(v string) *Model {
	s.Smithy = &v
	return s
}

// The details of a notification generated in Amazon DataZone.
type NotificationOutput_ struct {
	_ struct{} `type:"structure"`

	// The action link included in the notification.
	//
	// ActionLink is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by NotificationOutput_'s
	// String and GoString methods.
	//
	// ActionLink is a required field
	ActionLink *string `locationName:"actionLink" type:"string" required:"true" sensitive:"true"`

	// The timestamp of when a notification was created.
	//
	// CreationTimestamp is a required field
	CreationTimestamp *time.Time `locationName:"creationTimestamp" type:"timestamp" required:"true"`

	// The identifier of a Amazon DataZone domain in which the notification exists.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the notification.
	//
	// Identifier is a required field
	Identifier *string `locationName:"identifier" type:"string" required:"true"`

	// The timestamp of when the notification was last updated.
	//
	// LastUpdatedTimestamp is a required field
	LastUpdatedTimestamp *time.Time `locationName:"lastUpdatedTimestamp" type:"timestamp" required:"true"`

	// The message included in the notification.
	//
	// Message is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by NotificationOutput_'s
	// String and GoString methods.
	//
	// Message is a required field
	Message *string `locationName:"message" type:"string" required:"true" sensitive:"true"`

	// The metadata included in the notification.
	Metadata map[string]*string `locationName:"metadata" type:"map"`

	// The status included in the notification.
	Status *string `locationName:"status" type:"string" enum:"TaskStatus"`

	// The title of the notification.
	//
	// Title is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by NotificationOutput_'s
	// String and GoString methods.
	//
	// Title is a required field
	Title *string `locationName:"title" type:"string" required:"true" sensitive:"true"`

	// The topic of the notification.
	//
	// Topic is a required field
	Topic *Topic `locationName:"topic" type:"structure" required:"true"`

	// The type of the notification.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"NotificationType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NotificationOutput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NotificationOutput_) GoString() string {
	return s.String()
}

// SetActionLink sets the ActionLink field's value.
func (s *NotificationOutput_) SetActionLink(v string) *NotificationOutput_ {
	s.ActionLink = &v
	return s
}

// SetCreationTimestamp sets the CreationTimestamp field's value.
func (s *NotificationOutput_) SetCreationTimestamp(v time.Time) *NotificationOutput_ {
	s.CreationTimestamp = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *NotificationOutput_) SetDomainIdentifier(v string) *NotificationOutput_ {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *NotificationOutput_) SetIdentifier(v string) *NotificationOutput_ {
	s.Identifier = &v
	return s
}

// SetLastUpdatedTimestamp sets the LastUpdatedTimestamp field's value.
func (s *NotificationOutput_) SetLastUpdatedTimestamp(v time.Time) *NotificationOutput_ {
	s.LastUpdatedTimestamp = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *NotificationOutput_) SetMessage(v string) *NotificationOutput_ {
	s.Message = &v
	return s
}

// SetMetadata sets the Metadata field's value.
func (s *NotificationOutput_) SetMetadata(v map[string]*string) *NotificationOutput_ {
	s.Metadata = v
	return s
}

// SetStatus sets the Status field's value.
func (s *NotificationOutput_) SetStatus(v string) *NotificationOutput_ {
	s.Status = &v
	return s
}

// SetTitle sets the Title field's value.
func (s *NotificationOutput_) SetTitle(v string) *NotificationOutput_ {
	s.Title = &v
	return s
}

// SetTopic sets the Topic field's value.
func (s *NotificationOutput_) SetTopic(v *Topic) *NotificationOutput_ {
	s.Topic = v
	return s
}

// SetType sets the Type field's value.
func (s *NotificationOutput_) SetType(v string) *NotificationOutput_ {
	s.Type = &v
	return s
}

// The details of the resource mentioned in a notification.
type NotificationResource struct {
	_ struct{} `type:"structure"`

	// The ID of the resource mentioned in a notification.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The name of the resource mentioned in a notification.
	Name *string `locationName:"name" type:"string"`

	// The type of the resource mentioned in a notification.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"NotificationResourceType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NotificationResource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s NotificationResource) GoString() string {
	return s.String()
}

// SetId sets the Id field's value.
func (s *NotificationResource) SetId(v string) *NotificationResource {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *NotificationResource) SetName(v string) *NotificationResource {
	s.Name = &v
	return s
}

// SetType sets the Type field's value.
func (s *NotificationResource) SetType(v string) *NotificationResource {
	s.Type = &v
	return s
}

// The configuration of the prediction.
type PredictionConfiguration struct {
	_ struct{} `type:"structure"`

	// The business name generation mechanism.
	BusinessNameGeneration *BusinessNameGenerationConfiguration `locationName:"businessNameGeneration" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PredictionConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PredictionConfiguration) GoString() string {
	return s.String()
}

// SetBusinessNameGeneration sets the BusinessNameGeneration field's value.
func (s *PredictionConfiguration) SetBusinessNameGeneration(v *BusinessNameGenerationConfiguration) *PredictionConfiguration {
	s.BusinessNameGeneration = v
	return s
}

// Error that occurred during project deletion
type ProjectDeletionError struct {
	_ struct{} `type:"structure"`

	// Project Deletion Error Code
	Code *string `locationName:"code" type:"string"`

	// Project Deletion Error Message
	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 ProjectDeletionError) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProjectDeletionError) GoString() string {
	return s.String()
}

// SetCode sets the Code field's value.
func (s *ProjectDeletionError) SetCode(v string) *ProjectDeletionError {
	s.Code = &v
	return s
}

// SetMessage sets the Message field's value.
func (s *ProjectDeletionError) SetMessage(v string) *ProjectDeletionError {
	s.Message = &v
	return s
}

// The details of a project member.
type ProjectMember struct {
	_ struct{} `type:"structure"`

	// The designated role of a project member.
	//
	// Designation is a required field
	Designation *string `locationName:"designation" type:"string" required:"true" enum:"UserDesignation"`

	// The membership details of a project member.
	//
	// MemberDetails is a required field
	MemberDetails *MemberDetails `locationName:"memberDetails" 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 ProjectMember) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProjectMember) GoString() string {
	return s.String()
}

// SetDesignation sets the Designation field's value.
func (s *ProjectMember) SetDesignation(v string) *ProjectMember {
	s.Designation = &v
	return s
}

// SetMemberDetails sets the MemberDetails field's value.
func (s *ProjectMember) SetMemberDetails(v *MemberDetails) *ProjectMember {
	s.MemberDetails = v
	return s
}

// The details of a Amazon DataZone project.
type ProjectSummary struct {
	_ struct{} `type:"structure"`

	// The timestamp of when a project was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The Amazon DataZone user who created the project.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The description of a project.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ProjectSummary's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of a Amazon DataZone domain where the project exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// Reasons for failed project deletion
	FailureReasons []*ProjectDeletionError `locationName:"failureReasons" type:"list"`

	// The identifier of a project.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The name of a project.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ProjectSummary's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// Status of the project
	ProjectStatus *string `locationName:"projectStatus" type:"string" enum:"ProjectStatus"`

	// The timestamp of when the project was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProjectSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProjectSummary) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *ProjectSummary) SetCreatedAt(v time.Time) *ProjectSummary {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *ProjectSummary) SetCreatedBy(v string) *ProjectSummary {
	s.CreatedBy = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *ProjectSummary) SetDescription(v string) *ProjectSummary {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *ProjectSummary) SetDomainId(v string) *ProjectSummary {
	s.DomainId = &v
	return s
}

// SetFailureReasons sets the FailureReasons field's value.
func (s *ProjectSummary) SetFailureReasons(v []*ProjectDeletionError) *ProjectSummary {
	s.FailureReasons = v
	return s
}

// SetId sets the Id field's value.
func (s *ProjectSummary) SetId(v string) *ProjectSummary {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *ProjectSummary) SetName(v string) *ProjectSummary {
	s.Name = &v
	return s
}

// SetProjectStatus sets the ProjectStatus field's value.
func (s *ProjectSummary) SetProjectStatus(v string) *ProjectSummary {
	s.ProjectStatus = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *ProjectSummary) SetUpdatedAt(v time.Time) *ProjectSummary {
	s.UpdatedAt = &v
	return s
}

// The provisioning properties of an environment blueprint.
type ProvisioningProperties struct {
	_ struct{} `type:"structure"`

	// The cloud formation properties included as part of the provisioning properties
	// of an environment blueprint.
	CloudFormation *CloudFormationProperties `locationName:"cloudFormation" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProvisioningProperties) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ProvisioningProperties) GoString() string {
	return s.String()
}

// SetCloudFormation sets the CloudFormation field's value.
func (s *ProvisioningProperties) SetCloudFormation(v *CloudFormationProperties) *ProvisioningProperties {
	s.CloudFormation = v
	return s
}

type PutEnvironmentBlueprintConfigurationInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon DataZone domain.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// Specifies the enabled Amazon Web Services Regions.
	//
	// EnabledRegions is a required field
	EnabledRegions []*string `locationName:"enabledRegions" type:"list" required:"true"`

	// The identifier of the environment blueprint.
	//
	// EnvironmentBlueprintIdentifier is a required field
	EnvironmentBlueprintIdentifier *string `location:"uri" locationName:"environmentBlueprintIdentifier" type:"string" required:"true"`

	// The ARN of the manage access role.
	ManageAccessRoleArn *string `locationName:"manageAccessRoleArn" type:"string"`

	// The ARN of the provisioning role.
	ProvisioningRoleArn *string `locationName:"provisioningRoleArn" type:"string"`

	// The regional parameters in the environment blueprint.
	RegionalParameters map[string]map[string]*string `locationName:"regionalParameters" 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 PutEnvironmentBlueprintConfigurationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutEnvironmentBlueprintConfigurationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutEnvironmentBlueprintConfigurationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutEnvironmentBlueprintConfigurationInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.EnabledRegions == nil {
		invalidParams.Add(request.NewErrParamRequired("EnabledRegions"))
	}
	if s.EnvironmentBlueprintIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("EnvironmentBlueprintIdentifier"))
	}
	if s.EnvironmentBlueprintIdentifier != nil && len(*s.EnvironmentBlueprintIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EnvironmentBlueprintIdentifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *PutEnvironmentBlueprintConfigurationInput) SetDomainIdentifier(v string) *PutEnvironmentBlueprintConfigurationInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnabledRegions sets the EnabledRegions field's value.
func (s *PutEnvironmentBlueprintConfigurationInput) SetEnabledRegions(v []*string) *PutEnvironmentBlueprintConfigurationInput {
	s.EnabledRegions = v
	return s
}

// SetEnvironmentBlueprintIdentifier sets the EnvironmentBlueprintIdentifier field's value.
func (s *PutEnvironmentBlueprintConfigurationInput) SetEnvironmentBlueprintIdentifier(v string) *PutEnvironmentBlueprintConfigurationInput {
	s.EnvironmentBlueprintIdentifier = &v
	return s
}

// SetManageAccessRoleArn sets the ManageAccessRoleArn field's value.
func (s *PutEnvironmentBlueprintConfigurationInput) SetManageAccessRoleArn(v string) *PutEnvironmentBlueprintConfigurationInput {
	s.ManageAccessRoleArn = &v
	return s
}

// SetProvisioningRoleArn sets the ProvisioningRoleArn field's value.
func (s *PutEnvironmentBlueprintConfigurationInput) SetProvisioningRoleArn(v string) *PutEnvironmentBlueprintConfigurationInput {
	s.ProvisioningRoleArn = &v
	return s
}

// SetRegionalParameters sets the RegionalParameters field's value.
func (s *PutEnvironmentBlueprintConfigurationInput) SetRegionalParameters(v map[string]map[string]*string) *PutEnvironmentBlueprintConfigurationInput {
	s.RegionalParameters = v
	return s
}

type PutEnvironmentBlueprintConfigurationOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the environment blueprint was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The identifier of the Amazon DataZone domain.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// Specifies the enabled Amazon Web Services Regions.
	EnabledRegions []*string `locationName:"enabledRegions" type:"list"`

	// The identifier of the environment blueprint.
	//
	// EnvironmentBlueprintId is a required field
	EnvironmentBlueprintId *string `locationName:"environmentBlueprintId" type:"string" required:"true"`

	// The ARN of the manage access role.
	ManageAccessRoleArn *string `locationName:"manageAccessRoleArn" type:"string"`

	// The ARN of the provisioning role.
	ProvisioningRoleArn *string `locationName:"provisioningRoleArn" type:"string"`

	// The regional parameters in the environment blueprint.
	RegionalParameters map[string]map[string]*string `locationName:"regionalParameters" type:"map"`

	// The timestamp of when the environment blueprint was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutEnvironmentBlueprintConfigurationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutEnvironmentBlueprintConfigurationOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *PutEnvironmentBlueprintConfigurationOutput) SetCreatedAt(v time.Time) *PutEnvironmentBlueprintConfigurationOutput {
	s.CreatedAt = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *PutEnvironmentBlueprintConfigurationOutput) SetDomainId(v string) *PutEnvironmentBlueprintConfigurationOutput {
	s.DomainId = &v
	return s
}

// SetEnabledRegions sets the EnabledRegions field's value.
func (s *PutEnvironmentBlueprintConfigurationOutput) SetEnabledRegions(v []*string) *PutEnvironmentBlueprintConfigurationOutput {
	s.EnabledRegions = v
	return s
}

// SetEnvironmentBlueprintId sets the EnvironmentBlueprintId field's value.
func (s *PutEnvironmentBlueprintConfigurationOutput) SetEnvironmentBlueprintId(v string) *PutEnvironmentBlueprintConfigurationOutput {
	s.EnvironmentBlueprintId = &v
	return s
}

// SetManageAccessRoleArn sets the ManageAccessRoleArn field's value.
func (s *PutEnvironmentBlueprintConfigurationOutput) SetManageAccessRoleArn(v string) *PutEnvironmentBlueprintConfigurationOutput {
	s.ManageAccessRoleArn = &v
	return s
}

// SetProvisioningRoleArn sets the ProvisioningRoleArn field's value.
func (s *PutEnvironmentBlueprintConfigurationOutput) SetProvisioningRoleArn(v string) *PutEnvironmentBlueprintConfigurationOutput {
	s.ProvisioningRoleArn = &v
	return s
}

// SetRegionalParameters sets the RegionalParameters field's value.
func (s *PutEnvironmentBlueprintConfigurationOutput) SetRegionalParameters(v map[string]map[string]*string) *PutEnvironmentBlueprintConfigurationOutput {
	s.RegionalParameters = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *PutEnvironmentBlueprintConfigurationOutput) SetUpdatedAt(v time.Time) *PutEnvironmentBlueprintConfigurationOutput {
	s.UpdatedAt = &v
	return s
}

// The recommendation to be updated as part of the UpdateDataSource action.
type RecommendationConfiguration struct {
	_ struct{} `type:"structure"`

	// Specifies whether automatic business name generation is to be enabled or
	// not as part of the recommendation configuration.
	EnableBusinessNameGeneration *bool `locationName:"enableBusinessNameGeneration" 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 RecommendationConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RecommendationConfiguration) GoString() string {
	return s.String()
}

// SetEnableBusinessNameGeneration sets the EnableBusinessNameGeneration field's value.
func (s *RecommendationConfiguration) SetEnableBusinessNameGeneration(v bool) *RecommendationConfiguration {
	s.EnableBusinessNameGeneration = &v
	return s
}

// The details of the Amazon Redshift cluster storage.
type RedshiftClusterStorage struct {
	_ struct{} `type:"structure"`

	// The name of an Amazon Redshift cluster.
	//
	// ClusterName is a required field
	ClusterName *string `locationName:"clusterName" 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 RedshiftClusterStorage) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RedshiftClusterStorage) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RedshiftClusterStorage) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RedshiftClusterStorage"}
	if s.ClusterName == nil {
		invalidParams.Add(request.NewErrParamRequired("ClusterName"))
	}
	if s.ClusterName != nil && len(*s.ClusterName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClusterName sets the ClusterName field's value.
func (s *RedshiftClusterStorage) SetClusterName(v string) *RedshiftClusterStorage {
	s.ClusterName = &v
	return s
}

// The details of the credentials required to access an Amazon Redshift cluster.
type RedshiftCredentialConfiguration struct {
	_ struct{} `type:"structure"`

	// The ARN of a secret manager for an Amazon Redshift cluster.
	//
	// SecretManagerArn is a required field
	SecretManagerArn *string `locationName:"secretManagerArn" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RedshiftCredentialConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RedshiftCredentialConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RedshiftCredentialConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RedshiftCredentialConfiguration"}
	if s.SecretManagerArn == nil {
		invalidParams.Add(request.NewErrParamRequired("SecretManagerArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSecretManagerArn sets the SecretManagerArn field's value.
func (s *RedshiftCredentialConfiguration) SetSecretManagerArn(v string) *RedshiftCredentialConfiguration {
	s.SecretManagerArn = &v
	return s
}

// The configuration details of the Amazon Redshift data source.
type RedshiftRunConfigurationInput_ struct {
	_ struct{} `type:"structure"`

	// The data access role included in the configuration details of the Amazon
	// Redshift data source.
	DataAccessRole *string `locationName:"dataAccessRole" type:"string"`

	// The details of the credentials required to access an Amazon Redshift cluster.
	//
	// RedshiftCredentialConfiguration is a required field
	RedshiftCredentialConfiguration *RedshiftCredentialConfiguration `locationName:"redshiftCredentialConfiguration" type:"structure" required:"true"`

	// The details of the Amazon Redshift storage as part of the configuration of
	// an Amazon Redshift data source run.
	//
	// RedshiftStorage is a required field
	RedshiftStorage *RedshiftStorage `locationName:"redshiftStorage" type:"structure" required:"true"`

	// The relational filger configurations included in the configuration details
	// of the Amazon Redshift data source.
	//
	// RelationalFilterConfigurations is a required field
	RelationalFilterConfigurations []*RelationalFilterConfiguration `locationName:"relationalFilterConfigurations" 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 RedshiftRunConfigurationInput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RedshiftRunConfigurationInput_) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RedshiftRunConfigurationInput_) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RedshiftRunConfigurationInput_"}
	if s.RedshiftCredentialConfiguration == nil {
		invalidParams.Add(request.NewErrParamRequired("RedshiftCredentialConfiguration"))
	}
	if s.RedshiftStorage == nil {
		invalidParams.Add(request.NewErrParamRequired("RedshiftStorage"))
	}
	if s.RelationalFilterConfigurations == nil {
		invalidParams.Add(request.NewErrParamRequired("RelationalFilterConfigurations"))
	}
	if s.RedshiftCredentialConfiguration != nil {
		if err := s.RedshiftCredentialConfiguration.Validate(); err != nil {
			invalidParams.AddNested("RedshiftCredentialConfiguration", err.(request.ErrInvalidParams))
		}
	}
	if s.RedshiftStorage != nil {
		if err := s.RedshiftStorage.Validate(); err != nil {
			invalidParams.AddNested("RedshiftStorage", err.(request.ErrInvalidParams))
		}
	}
	if s.RelationalFilterConfigurations != nil {
		for i, v := range s.RelationalFilterConfigurations {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RelationalFilterConfigurations", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDataAccessRole sets the DataAccessRole field's value.
func (s *RedshiftRunConfigurationInput_) SetDataAccessRole(v string) *RedshiftRunConfigurationInput_ {
	s.DataAccessRole = &v
	return s
}

// SetRedshiftCredentialConfiguration sets the RedshiftCredentialConfiguration field's value.
func (s *RedshiftRunConfigurationInput_) SetRedshiftCredentialConfiguration(v *RedshiftCredentialConfiguration) *RedshiftRunConfigurationInput_ {
	s.RedshiftCredentialConfiguration = v
	return s
}

// SetRedshiftStorage sets the RedshiftStorage field's value.
func (s *RedshiftRunConfigurationInput_) SetRedshiftStorage(v *RedshiftStorage) *RedshiftRunConfigurationInput_ {
	s.RedshiftStorage = v
	return s
}

// SetRelationalFilterConfigurations sets the RelationalFilterConfigurations field's value.
func (s *RedshiftRunConfigurationInput_) SetRelationalFilterConfigurations(v []*RelationalFilterConfiguration) *RedshiftRunConfigurationInput_ {
	s.RelationalFilterConfigurations = v
	return s
}

// The configuration details of the Amazon Redshift data source.
type RedshiftRunConfigurationOutput_ struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon Web Services account included in the configuration details
	// of the Amazon Redshift data source.
	AccountId *string `locationName:"accountId" min:"12" type:"string"`

	// The data access role included in the configuration details of the Amazon
	// Redshift data source.
	DataAccessRole *string `locationName:"dataAccessRole" type:"string"`

	// The details of the credentials required to access an Amazon Redshift cluster.
	//
	// RedshiftCredentialConfiguration is a required field
	RedshiftCredentialConfiguration *RedshiftCredentialConfiguration `locationName:"redshiftCredentialConfiguration" type:"structure" required:"true"`

	// The details of the Amazon Redshift storage as part of the configuration of
	// an Amazon Redshift data source run.
	//
	// RedshiftStorage is a required field
	RedshiftStorage *RedshiftStorage `locationName:"redshiftStorage" type:"structure" required:"true"`

	// The Amazon Web Services region included in the configuration details of the
	// Amazon Redshift data source.
	Region *string `locationName:"region" min:"4" type:"string"`

	// The relational filger configurations included in the configuration details
	// of the Amazon Redshift data source.
	//
	// RelationalFilterConfigurations is a required field
	RelationalFilterConfigurations []*RelationalFilterConfiguration `locationName:"relationalFilterConfigurations" 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 RedshiftRunConfigurationOutput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RedshiftRunConfigurationOutput_) GoString() string {
	return s.String()
}

// SetAccountId sets the AccountId field's value.
func (s *RedshiftRunConfigurationOutput_) SetAccountId(v string) *RedshiftRunConfigurationOutput_ {
	s.AccountId = &v
	return s
}

// SetDataAccessRole sets the DataAccessRole field's value.
func (s *RedshiftRunConfigurationOutput_) SetDataAccessRole(v string) *RedshiftRunConfigurationOutput_ {
	s.DataAccessRole = &v
	return s
}

// SetRedshiftCredentialConfiguration sets the RedshiftCredentialConfiguration field's value.
func (s *RedshiftRunConfigurationOutput_) SetRedshiftCredentialConfiguration(v *RedshiftCredentialConfiguration) *RedshiftRunConfigurationOutput_ {
	s.RedshiftCredentialConfiguration = v
	return s
}

// SetRedshiftStorage sets the RedshiftStorage field's value.
func (s *RedshiftRunConfigurationOutput_) SetRedshiftStorage(v *RedshiftStorage) *RedshiftRunConfigurationOutput_ {
	s.RedshiftStorage = v
	return s
}

// SetRegion sets the Region field's value.
func (s *RedshiftRunConfigurationOutput_) SetRegion(v string) *RedshiftRunConfigurationOutput_ {
	s.Region = &v
	return s
}

// SetRelationalFilterConfigurations sets the RelationalFilterConfigurations field's value.
func (s *RedshiftRunConfigurationOutput_) SetRelationalFilterConfigurations(v []*RelationalFilterConfiguration) *RedshiftRunConfigurationOutput_ {
	s.RelationalFilterConfigurations = v
	return s
}

// The details of the Amazon Redshift Serverless workgroup storage.
type RedshiftServerlessStorage struct {
	_ struct{} `type:"structure"`

	// The name of the Amazon Redshift Serverless workgroup.
	//
	// WorkgroupName is a required field
	WorkgroupName *string `locationName:"workgroupName" min:"3" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RedshiftServerlessStorage) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RedshiftServerlessStorage) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RedshiftServerlessStorage) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RedshiftServerlessStorage"}
	if s.WorkgroupName == nil {
		invalidParams.Add(request.NewErrParamRequired("WorkgroupName"))
	}
	if s.WorkgroupName != nil && len(*s.WorkgroupName) < 3 {
		invalidParams.Add(request.NewErrParamMinLen("WorkgroupName", 3))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetWorkgroupName sets the WorkgroupName field's value.
func (s *RedshiftServerlessStorage) SetWorkgroupName(v string) *RedshiftServerlessStorage {
	s.WorkgroupName = &v
	return s
}

// The details of the Amazon Redshift storage as part of the configuration of
// an Amazon Redshift data source run.
type RedshiftStorage struct {
	_ struct{} `type:"structure"`

	// The details of the Amazon Redshift cluster source.
	RedshiftClusterSource *RedshiftClusterStorage `locationName:"redshiftClusterSource" type:"structure"`

	// The details of the Amazon Redshift Serverless workgroup source.
	RedshiftServerlessSource *RedshiftServerlessStorage `locationName:"redshiftServerlessSource" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RedshiftStorage) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RedshiftStorage) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RedshiftStorage) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RedshiftStorage"}
	if s.RedshiftClusterSource != nil {
		if err := s.RedshiftClusterSource.Validate(); err != nil {
			invalidParams.AddNested("RedshiftClusterSource", err.(request.ErrInvalidParams))
		}
	}
	if s.RedshiftServerlessSource != nil {
		if err := s.RedshiftServerlessSource.Validate(); err != nil {
			invalidParams.AddNested("RedshiftServerlessSource", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetRedshiftClusterSource sets the RedshiftClusterSource field's value.
func (s *RedshiftStorage) SetRedshiftClusterSource(v *RedshiftClusterStorage) *RedshiftStorage {
	s.RedshiftClusterSource = v
	return s
}

// SetRedshiftServerlessSource sets the RedshiftServerlessSource field's value.
func (s *RedshiftStorage) SetRedshiftServerlessSource(v *RedshiftServerlessStorage) *RedshiftStorage {
	s.RedshiftServerlessSource = v
	return s
}

// The details of the automatically generated business metadata that is rejected.
type RejectChoice struct {
	_ struct{} `type:"structure"`

	// Specifies the the automatically generated business metadata that can be rejected.
	PredictionChoices []*int64 `locationName:"predictionChoices" type:"list"`

	// Specifies the target (for example, a column name) where a prediction can
	// be rejected.
	PredictionTarget *string `locationName:"predictionTarget" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RejectChoice) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RejectChoice) GoString() string {
	return s.String()
}

// SetPredictionChoices sets the PredictionChoices field's value.
func (s *RejectChoice) SetPredictionChoices(v []*int64) *RejectChoice {
	s.PredictionChoices = v
	return s
}

// SetPredictionTarget sets the PredictionTarget field's value.
func (s *RejectChoice) SetPredictionTarget(v string) *RejectChoice {
	s.PredictionTarget = &v
	return s
}

type RejectPredictionsInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The identifier of the Amazon DataZone domain.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the prediction.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	RejectChoices []*RejectChoice `locationName:"rejectChoices" type:"list"`

	// Specifies the rule and the threshold under which a prediction can be rejected.
	RejectRule *RejectRule `locationName:"rejectRule" type:"structure"`

	Revision *string `location:"querystring" locationName:"revision" 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 RejectPredictionsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RejectPredictionsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RejectPredictionsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RejectPredictionsInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}
	if s.Revision != nil && len(*s.Revision) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Revision", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *RejectPredictionsInput) SetClientToken(v string) *RejectPredictionsInput {
	s.ClientToken = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *RejectPredictionsInput) SetDomainIdentifier(v string) *RejectPredictionsInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *RejectPredictionsInput) SetIdentifier(v string) *RejectPredictionsInput {
	s.Identifier = &v
	return s
}

// SetRejectChoices sets the RejectChoices field's value.
func (s *RejectPredictionsInput) SetRejectChoices(v []*RejectChoice) *RejectPredictionsInput {
	s.RejectChoices = v
	return s
}

// SetRejectRule sets the RejectRule field's value.
func (s *RejectPredictionsInput) SetRejectRule(v *RejectRule) *RejectPredictionsInput {
	s.RejectRule = v
	return s
}

// SetRevision sets the Revision field's value.
func (s *RejectPredictionsInput) SetRevision(v string) *RejectPredictionsInput {
	s.Revision = &v
	return s
}

type RejectPredictionsOutput struct {
	_ struct{} `type:"structure"`

	// AssetId is a required field
	AssetId *string `locationName:"assetId" type:"string" required:"true"`

	// AssetRevision is a required field
	AssetRevision *string `locationName:"assetRevision" min:"1" type:"string" required:"true"`

	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RejectPredictionsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RejectPredictionsOutput) GoString() string {
	return s.String()
}

// SetAssetId sets the AssetId field's value.
func (s *RejectPredictionsOutput) SetAssetId(v string) *RejectPredictionsOutput {
	s.AssetId = &v
	return s
}

// SetAssetRevision sets the AssetRevision field's value.
func (s *RejectPredictionsOutput) SetAssetRevision(v string) *RejectPredictionsOutput {
	s.AssetRevision = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *RejectPredictionsOutput) SetDomainId(v string) *RejectPredictionsOutput {
	s.DomainId = &v
	return s
}

// Specifies the rule and the threshold under which a prediction can be rejected.
type RejectRule struct {
	_ struct{} `type:"structure"`

	// Specifies whether you want to reject the top prediction for all targets or
	// none.
	Rule *string `locationName:"rule" type:"string" enum:"RejectRuleBehavior"`

	// The confidence score that specifies the condition at which a prediction can
	// be rejected.
	Threshold *float64 `locationName:"threshold" type:"float"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RejectRule) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RejectRule) GoString() string {
	return s.String()
}

// SetRule sets the Rule field's value.
func (s *RejectRule) SetRule(v string) *RejectRule {
	s.Rule = &v
	return s
}

// SetThreshold sets the Threshold field's value.
func (s *RejectRule) SetThreshold(v float64) *RejectRule {
	s.Threshold = &v
	return s
}

type RejectSubscriptionRequestInput struct {
	_ struct{} `type:"structure"`

	// The decision comment of the rejected subscription request.
	//
	// DecisionComment is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by RejectSubscriptionRequestInput's
	// String and GoString methods.
	DecisionComment *string `locationName:"decisionComment" min:"1" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which the subscription request
	// was rejected.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the subscription request that was rejected.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RejectSubscriptionRequestInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RejectSubscriptionRequestInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RejectSubscriptionRequestInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RejectSubscriptionRequestInput"}
	if s.DecisionComment != nil && len(*s.DecisionComment) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DecisionComment", 1))
	}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDecisionComment sets the DecisionComment field's value.
func (s *RejectSubscriptionRequestInput) SetDecisionComment(v string) *RejectSubscriptionRequestInput {
	s.DecisionComment = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *RejectSubscriptionRequestInput) SetDomainIdentifier(v string) *RejectSubscriptionRequestInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *RejectSubscriptionRequestInput) SetIdentifier(v string) *RejectSubscriptionRequestInput {
	s.Identifier = &v
	return s
}

type RejectSubscriptionRequestOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the subscription request was rejected.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The timestamp of when the subscription request was rejected.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The decision comment of the rejected subscription request.
	//
	// DecisionComment is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by RejectSubscriptionRequestOutput's
	// String and GoString methods.
	DecisionComment *string `locationName:"decisionComment" min:"1" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which the subscription request
	// was rejected.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of the subscription request that was rejected.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The reason for the subscription request.
	//
	// RequestReason is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by RejectSubscriptionRequestOutput's
	// String and GoString methods.
	//
	// RequestReason is a required field
	RequestReason *string `locationName:"requestReason" min:"1" type:"string" required:"true" sensitive:"true"`

	// The identifier of the subscription request reviewer.
	ReviewerId *string `locationName:"reviewerId" type:"string"`

	// The status of the subscription request.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionRequestStatus"`

	// The subscribed listings of the subscription request.
	//
	// SubscribedListings is a required field
	SubscribedListings []*SubscribedListing `locationName:"subscribedListings" min:"1" type:"list" required:"true"`

	// The subscribed principals of the subscription request.
	//
	// SubscribedPrincipals is a required field
	SubscribedPrincipals []*SubscribedPrincipal `locationName:"subscribedPrincipals" min:"1" type:"list" required:"true"`

	// The timestamp of when the subscription request was updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who updated the subscription request.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RejectSubscriptionRequestOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RejectSubscriptionRequestOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *RejectSubscriptionRequestOutput) SetCreatedAt(v time.Time) *RejectSubscriptionRequestOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *RejectSubscriptionRequestOutput) SetCreatedBy(v string) *RejectSubscriptionRequestOutput {
	s.CreatedBy = &v
	return s
}

// SetDecisionComment sets the DecisionComment field's value.
func (s *RejectSubscriptionRequestOutput) SetDecisionComment(v string) *RejectSubscriptionRequestOutput {
	s.DecisionComment = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *RejectSubscriptionRequestOutput) SetDomainId(v string) *RejectSubscriptionRequestOutput {
	s.DomainId = &v
	return s
}

// SetId sets the Id field's value.
func (s *RejectSubscriptionRequestOutput) SetId(v string) *RejectSubscriptionRequestOutput {
	s.Id = &v
	return s
}

// SetRequestReason sets the RequestReason field's value.
func (s *RejectSubscriptionRequestOutput) SetRequestReason(v string) *RejectSubscriptionRequestOutput {
	s.RequestReason = &v
	return s
}

// SetReviewerId sets the ReviewerId field's value.
func (s *RejectSubscriptionRequestOutput) SetReviewerId(v string) *RejectSubscriptionRequestOutput {
	s.ReviewerId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *RejectSubscriptionRequestOutput) SetStatus(v string) *RejectSubscriptionRequestOutput {
	s.Status = &v
	return s
}

// SetSubscribedListings sets the SubscribedListings field's value.
func (s *RejectSubscriptionRequestOutput) SetSubscribedListings(v []*SubscribedListing) *RejectSubscriptionRequestOutput {
	s.SubscribedListings = v
	return s
}

// SetSubscribedPrincipals sets the SubscribedPrincipals field's value.
func (s *RejectSubscriptionRequestOutput) SetSubscribedPrincipals(v []*SubscribedPrincipal) *RejectSubscriptionRequestOutput {
	s.SubscribedPrincipals = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *RejectSubscriptionRequestOutput) SetUpdatedAt(v time.Time) *RejectSubscriptionRequestOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *RejectSubscriptionRequestOutput) SetUpdatedBy(v string) *RejectSubscriptionRequestOutput {
	s.UpdatedBy = &v
	return s
}

// The relational filter configuration for the data source.
type RelationalFilterConfiguration struct {
	_ struct{} `type:"structure"`

	// The database name specified in the relational filter configuration for the
	// data source.
	//
	// DatabaseName is a required field
	DatabaseName *string `locationName:"databaseName" min:"1" type:"string" required:"true"`

	// The filter expressions specified in the relational filter configuration for
	// the data source.
	FilterExpressions []*FilterExpression `locationName:"filterExpressions" type:"list"`

	// The schema name specified in the relational filter configuration for the
	// data source.
	SchemaName *string `locationName:"schemaName" 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 RelationalFilterConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RelationalFilterConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RelationalFilterConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RelationalFilterConfiguration"}
	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.SchemaName != nil && len(*s.SchemaName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SchemaName", 1))
	}
	if s.FilterExpressions != nil {
		for i, v := range s.FilterExpressions {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "FilterExpressions", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *RelationalFilterConfiguration) SetDatabaseName(v string) *RelationalFilterConfiguration {
	s.DatabaseName = &v
	return s
}

// SetFilterExpressions sets the FilterExpressions field's value.
func (s *RelationalFilterConfiguration) SetFilterExpressions(v []*FilterExpression) *RelationalFilterConfiguration {
	s.FilterExpressions = v
	return s
}

// SetSchemaName sets the SchemaName field's value.
func (s *RelationalFilterConfiguration) SetSchemaName(v string) *RelationalFilterConfiguration {
	s.SchemaName = &v
	return s
}

// The details of a provisioned resource of this Amazon DataZone environment.
type Resource struct {
	_ struct{} `type:"structure"`

	// The name of a provisioned resource of this Amazon DataZone environment.
	Name *string `locationName:"name" type:"string"`

	// The provider of a provisioned resource of this Amazon DataZone environment.
	Provider *string `locationName:"provider" type:"string"`

	// The type of a provisioned resource of this Amazon DataZone environment.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true"`

	// The value of a provisioned resource of this Amazon DataZone environment.
	//
	// Value is a required field
	Value *string `locationName:"value" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Resource) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Resource) GoString() string {
	return s.String()
}

// SetName sets the Name field's value.
func (s *Resource) SetName(v string) *Resource {
	s.Name = &v
	return s
}

// SetProvider sets the Provider field's value.
func (s *Resource) SetProvider(v string) *Resource {
	s.Provider = &v
	return s
}

// SetType sets the Type field's value.
func (s *Resource) SetType(v string) *Resource {
	s.Type = &v
	return s
}

// SetValue sets the Value field's value.
func (s *Resource) SetValue(v string) *Resource {
	s.Value = &v
	return s
}

// The specified resource cannot be found.
type ResourceNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotFoundException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotFoundException) GoString() string {
	return s.String()
}

func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
	return &ResourceNotFoundException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceNotFoundException) Code() string {
	return "ResourceNotFoundException"
}

// Message returns the exception's message.
func (s *ResourceNotFoundException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceNotFoundException) OrigErr() error {
	return nil
}

func (s *ResourceNotFoundException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ResourceNotFoundException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceNotFoundException) RequestID() string {
	return s.RespMetadata.RequestID
}

type RevokeSubscriptionInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon DataZone domain where you want to revoke a subscription.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the revoked subscription.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// Specifies whether permissions are retained when the subscription is revoked.
	RetainPermissions *bool `locationName:"retainPermissions" 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 RevokeSubscriptionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RevokeSubscriptionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RevokeSubscriptionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RevokeSubscriptionInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *RevokeSubscriptionInput) SetDomainIdentifier(v string) *RevokeSubscriptionInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *RevokeSubscriptionInput) SetIdentifier(v string) *RevokeSubscriptionInput {
	s.Identifier = &v
	return s
}

// SetRetainPermissions sets the RetainPermissions field's value.
func (s *RevokeSubscriptionInput) SetRetainPermissions(v bool) *RevokeSubscriptionInput {
	s.RetainPermissions = &v
	return s
}

type RevokeSubscriptionOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the subscription was revoked.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The identifier of the user who revoked the subscription.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The identifier of the Amazon DataZone domain where you want to revoke a subscription.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of the revoked subscription.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// Specifies whether permissions are retained when the subscription is revoked.
	RetainPermissions *bool `locationName:"retainPermissions" type:"boolean"`

	// The status of the revoked subscription.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionStatus"`

	// The subscribed listing of the revoked subscription.
	//
	// SubscribedListing is a required field
	SubscribedListing *SubscribedListing `locationName:"subscribedListing" type:"structure" required:"true"`

	// The subscribed principal of the revoked subscription.
	//
	// SubscribedPrincipal is a required field
	SubscribedPrincipal *SubscribedPrincipal `locationName:"subscribedPrincipal" type:"structure" required:"true"`

	// The identifier of the subscription request for the revoked subscription.
	SubscriptionRequestId *string `locationName:"subscriptionRequestId" type:"string"`

	// The timestamp of when the subscription was revoked.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who revoked the subscription.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RevokeSubscriptionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RevokeSubscriptionOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *RevokeSubscriptionOutput) SetCreatedAt(v time.Time) *RevokeSubscriptionOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *RevokeSubscriptionOutput) SetCreatedBy(v string) *RevokeSubscriptionOutput {
	s.CreatedBy = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *RevokeSubscriptionOutput) SetDomainId(v string) *RevokeSubscriptionOutput {
	s.DomainId = &v
	return s
}

// SetId sets the Id field's value.
func (s *RevokeSubscriptionOutput) SetId(v string) *RevokeSubscriptionOutput {
	s.Id = &v
	return s
}

// SetRetainPermissions sets the RetainPermissions field's value.
func (s *RevokeSubscriptionOutput) SetRetainPermissions(v bool) *RevokeSubscriptionOutput {
	s.RetainPermissions = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *RevokeSubscriptionOutput) SetStatus(v string) *RevokeSubscriptionOutput {
	s.Status = &v
	return s
}

// SetSubscribedListing sets the SubscribedListing field's value.
func (s *RevokeSubscriptionOutput) SetSubscribedListing(v *SubscribedListing) *RevokeSubscriptionOutput {
	s.SubscribedListing = v
	return s
}

// SetSubscribedPrincipal sets the SubscribedPrincipal field's value.
func (s *RevokeSubscriptionOutput) SetSubscribedPrincipal(v *SubscribedPrincipal) *RevokeSubscriptionOutput {
	s.SubscribedPrincipal = v
	return s
}

// SetSubscriptionRequestId sets the SubscriptionRequestId field's value.
func (s *RevokeSubscriptionOutput) SetSubscriptionRequestId(v string) *RevokeSubscriptionOutput {
	s.SubscriptionRequestId = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *RevokeSubscriptionOutput) SetUpdatedAt(v time.Time) *RevokeSubscriptionOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *RevokeSubscriptionOutput) SetUpdatedBy(v string) *RevokeSubscriptionOutput {
	s.UpdatedBy = &v
	return s
}

// The asset statistics from the data source run.
type RunStatisticsForAssets struct {
	_ struct{} `type:"structure"`

	// The added statistic for the data source run.
	Added *int64 `locationName:"added" type:"integer"`

	// The failed statistic for the data source run.
	Failed *int64 `locationName:"failed" type:"integer"`

	// The skipped statistic for the data source run.
	Skipped *int64 `locationName:"skipped" type:"integer"`

	// The unchanged statistic for the data source run.
	Unchanged *int64 `locationName:"unchanged" type:"integer"`

	// The updated statistic for the data source run.
	Updated *int64 `locationName:"updated" 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 RunStatisticsForAssets) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RunStatisticsForAssets) GoString() string {
	return s.String()
}

// SetAdded sets the Added field's value.
func (s *RunStatisticsForAssets) SetAdded(v int64) *RunStatisticsForAssets {
	s.Added = &v
	return s
}

// SetFailed sets the Failed field's value.
func (s *RunStatisticsForAssets) SetFailed(v int64) *RunStatisticsForAssets {
	s.Failed = &v
	return s
}

// SetSkipped sets the Skipped field's value.
func (s *RunStatisticsForAssets) SetSkipped(v int64) *RunStatisticsForAssets {
	s.Skipped = &v
	return s
}

// SetUnchanged sets the Unchanged field's value.
func (s *RunStatisticsForAssets) SetUnchanged(v int64) *RunStatisticsForAssets {
	s.Unchanged = &v
	return s
}

// SetUpdated sets the Updated field's value.
func (s *RunStatisticsForAssets) SetUpdated(v int64) *RunStatisticsForAssets {
	s.Updated = &v
	return s
}

// The details of the schedule of the data source runs.
type ScheduleConfiguration struct {
	_ struct{} `type:"structure" sensitive:"true"`

	// The schedule of the data source runs.
	Schedule *string `locationName:"schedule" min:"1" type:"string"`

	// The timezone of the data source run.
	Timezone *string `locationName:"timezone" type:"string" enum:"Timezone"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScheduleConfiguration) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ScheduleConfiguration) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ScheduleConfiguration) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ScheduleConfiguration"}
	if s.Schedule != nil && len(*s.Schedule) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Schedule", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetSchedule sets the Schedule field's value.
func (s *ScheduleConfiguration) SetSchedule(v string) *ScheduleConfiguration {
	s.Schedule = &v
	return s
}

// SetTimezone sets the Timezone field's value.
func (s *ScheduleConfiguration) SetTimezone(v string) *ScheduleConfiguration {
	s.Timezone = &v
	return s
}

type SearchGroupProfilesInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon DataZone domain in which you want to search
	// group profiles.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The group type for which to search.
	//
	// GroupType is a required field
	GroupType *string `locationName:"groupType" type:"string" required:"true" enum:"GroupSearchType"`

	// The maximum number of results to return in a single call to SearchGroupProfiles.
	// When the number of results to be listed is greater than the value of MaxResults,
	// the response contains a NextToken value that you can use in a subsequent
	// call to SearchGroupProfiles to list the next set of results.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// When the number of results is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of results, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to SearchGroupProfiles
	// to list the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// Specifies the text for which to search.
	//
	// SearchText is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SearchGroupProfilesInput's
	// String and GoString methods.
	SearchText *string `locationName:"searchText" type:"string" sensitive:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchGroupProfilesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchGroupProfilesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchGroupProfilesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchGroupProfilesInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.GroupType == nil {
		invalidParams.Add(request.NewErrParamRequired("GroupType"))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *SearchGroupProfilesInput) SetDomainIdentifier(v string) *SearchGroupProfilesInput {
	s.DomainIdentifier = &v
	return s
}

// SetGroupType sets the GroupType field's value.
func (s *SearchGroupProfilesInput) SetGroupType(v string) *SearchGroupProfilesInput {
	s.GroupType = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchGroupProfilesInput) SetMaxResults(v int64) *SearchGroupProfilesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchGroupProfilesInput) SetNextToken(v string) *SearchGroupProfilesInput {
	s.NextToken = &v
	return s
}

// SetSearchText sets the SearchText field's value.
func (s *SearchGroupProfilesInput) SetSearchText(v string) *SearchGroupProfilesInput {
	s.SearchText = &v
	return s
}

type SearchGroupProfilesOutput struct {
	_ struct{} `type:"structure"`

	// The results of the SearchGroupProfiles action.
	Items []*GroupProfileSummary `locationName:"items" type:"list"`

	// When the number of results is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of results, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to SearchGroupProfiles
	// to list the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchGroupProfilesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchGroupProfilesOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *SearchGroupProfilesOutput) SetItems(v []*GroupProfileSummary) *SearchGroupProfilesOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchGroupProfilesOutput) SetNextToken(v string) *SearchGroupProfilesOutput {
	s.NextToken = &v
	return s
}

// The details of the search.
type SearchInItem struct {
	_ struct{} `type:"structure"`

	// The search attribute.
	//
	// Attribute is a required field
	Attribute *string `locationName:"attribute" 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 SearchInItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchInItem) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchInItem) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchInItem"}
	if s.Attribute == nil {
		invalidParams.Add(request.NewErrParamRequired("Attribute"))
	}
	if s.Attribute != nil && len(*s.Attribute) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Attribute", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttribute sets the Attribute field's value.
func (s *SearchInItem) SetAttribute(v string) *SearchInItem {
	s.Attribute = &v
	return s
}

type SearchInput struct {
	_ struct{} `type:"structure"`

	// Specifies additional attributes for the Search action.
	AdditionalAttributes []*string `locationName:"additionalAttributes" type:"list" enum:"SearchOutputAdditionalAttribute"`

	// The identifier of the Amazon DataZone domain.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// Specifies the search filters.
	Filters *FilterClause `locationName:"filters" type:"structure"`

	// The maximum number of results to return in a single call to Search. When
	// the number of results to be listed is greater than the value of MaxResults,
	// the response contains a NextToken value that you can use in a subsequent
	// call to Search to list the next set of results.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// When the number of results is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of results, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to Search
	// to list the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// The identifier of the owning project specified for the search.
	OwningProjectIdentifier *string `locationName:"owningProjectIdentifier" type:"string"`

	SearchIn []*SearchInItem `locationName:"searchIn" min:"1" type:"list"`

	// The scope of the search.
	//
	// SearchScope is a required field
	SearchScope *string `locationName:"searchScope" type:"string" required:"true" enum:"InventorySearchScope"`

	// Specifies the text for which to search.
	SearchText *string `locationName:"searchText" min:"1" type:"string"`

	// Specifies the way in which the search results are to be sorted.
	Sort *SearchSort `locationName:"sort" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}
	if s.SearchIn != nil && len(s.SearchIn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SearchIn", 1))
	}
	if s.SearchScope == nil {
		invalidParams.Add(request.NewErrParamRequired("SearchScope"))
	}
	if s.SearchText != nil && len(*s.SearchText) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SearchText", 1))
	}
	if s.Filters != nil {
		if err := s.Filters.Validate(); err != nil {
			invalidParams.AddNested("Filters", err.(request.ErrInvalidParams))
		}
	}
	if s.SearchIn != nil {
		for i, v := range s.SearchIn {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SearchIn", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Sort != nil {
		if err := s.Sort.Validate(); err != nil {
			invalidParams.AddNested("Sort", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalAttributes sets the AdditionalAttributes field's value.
func (s *SearchInput) SetAdditionalAttributes(v []*string) *SearchInput {
	s.AdditionalAttributes = v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *SearchInput) SetDomainIdentifier(v string) *SearchInput {
	s.DomainIdentifier = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *SearchInput) SetFilters(v *FilterClause) *SearchInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchInput) SetMaxResults(v int64) *SearchInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchInput) SetNextToken(v string) *SearchInput {
	s.NextToken = &v
	return s
}

// SetOwningProjectIdentifier sets the OwningProjectIdentifier field's value.
func (s *SearchInput) SetOwningProjectIdentifier(v string) *SearchInput {
	s.OwningProjectIdentifier = &v
	return s
}

// SetSearchIn sets the SearchIn field's value.
func (s *SearchInput) SetSearchIn(v []*SearchInItem) *SearchInput {
	s.SearchIn = v
	return s
}

// SetSearchScope sets the SearchScope field's value.
func (s *SearchInput) SetSearchScope(v string) *SearchInput {
	s.SearchScope = &v
	return s
}

// SetSearchText sets the SearchText field's value.
func (s *SearchInput) SetSearchText(v string) *SearchInput {
	s.SearchText = &v
	return s
}

// SetSort sets the Sort field's value.
func (s *SearchInput) SetSort(v *SearchSort) *SearchInput {
	s.Sort = v
	return s
}

// The details of the search results.
type SearchInventoryResultItem struct {
	_ struct{} `type:"structure"`

	// The asset item included in the search results.
	AssetItem *AssetItem `locationName:"assetItem" type:"structure"`

	// The data product item included in the search results.
	DataProductItem *DataProductSummary `locationName:"dataProductItem" type:"structure"`

	// The glossary item included in the search results.
	GlossaryItem *GlossaryItem `locationName:"glossaryItem" type:"structure"`

	// The glossary term item included in the search results.
	GlossaryTermItem *GlossaryTermItem `locationName:"glossaryTermItem" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchInventoryResultItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchInventoryResultItem) GoString() string {
	return s.String()
}

// SetAssetItem sets the AssetItem field's value.
func (s *SearchInventoryResultItem) SetAssetItem(v *AssetItem) *SearchInventoryResultItem {
	s.AssetItem = v
	return s
}

// SetDataProductItem sets the DataProductItem field's value.
func (s *SearchInventoryResultItem) SetDataProductItem(v *DataProductSummary) *SearchInventoryResultItem {
	s.DataProductItem = v
	return s
}

// SetGlossaryItem sets the GlossaryItem field's value.
func (s *SearchInventoryResultItem) SetGlossaryItem(v *GlossaryItem) *SearchInventoryResultItem {
	s.GlossaryItem = v
	return s
}

// SetGlossaryTermItem sets the GlossaryTermItem field's value.
func (s *SearchInventoryResultItem) SetGlossaryTermItem(v *GlossaryTermItem) *SearchInventoryResultItem {
	s.GlossaryTermItem = v
	return s
}

type SearchListingsInput struct {
	_ struct{} `type:"structure"`

	// Specifies additional attributes for the search.
	AdditionalAttributes []*string `locationName:"additionalAttributes" type:"list" enum:"SearchOutputAdditionalAttribute"`

	// The identifier of the domain in which to search listings.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// Specifies the filters for the search of listings.
	Filters *FilterClause `locationName:"filters" type:"structure"`

	// The maximum number of results to return in a single call to SearchListings.
	// When the number of results to be listed is greater than the value of MaxResults,
	// the response contains a NextToken value that you can use in a subsequent
	// call to SearchListings to list the next set of results.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// When the number of results is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of results, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to SearchListings
	// to list the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	SearchIn []*SearchInItem `locationName:"searchIn" min:"1" type:"list"`

	// Specifies the text for which to search.
	SearchText *string `locationName:"searchText" type:"string"`

	// Specifies the way for sorting the search results.
	Sort *SearchSort `locationName:"sort" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchListingsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchListingsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchListingsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchListingsInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}
	if s.SearchIn != nil && len(s.SearchIn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SearchIn", 1))
	}
	if s.Filters != nil {
		if err := s.Filters.Validate(); err != nil {
			invalidParams.AddNested("Filters", err.(request.ErrInvalidParams))
		}
	}
	if s.SearchIn != nil {
		for i, v := range s.SearchIn {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SearchIn", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Sort != nil {
		if err := s.Sort.Validate(); err != nil {
			invalidParams.AddNested("Sort", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAdditionalAttributes sets the AdditionalAttributes field's value.
func (s *SearchListingsInput) SetAdditionalAttributes(v []*string) *SearchListingsInput {
	s.AdditionalAttributes = v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *SearchListingsInput) SetDomainIdentifier(v string) *SearchListingsInput {
	s.DomainIdentifier = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *SearchListingsInput) SetFilters(v *FilterClause) *SearchListingsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchListingsInput) SetMaxResults(v int64) *SearchListingsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchListingsInput) SetNextToken(v string) *SearchListingsInput {
	s.NextToken = &v
	return s
}

// SetSearchIn sets the SearchIn field's value.
func (s *SearchListingsInput) SetSearchIn(v []*SearchInItem) *SearchListingsInput {
	s.SearchIn = v
	return s
}

// SetSearchText sets the SearchText field's value.
func (s *SearchListingsInput) SetSearchText(v string) *SearchListingsInput {
	s.SearchText = &v
	return s
}

// SetSort sets the Sort field's value.
func (s *SearchListingsInput) SetSort(v *SearchSort) *SearchListingsInput {
	s.Sort = v
	return s
}

type SearchListingsOutput struct {
	_ struct{} `type:"structure"`

	// The results of the SearchListings action.
	Items []*SearchResultItem `locationName:"items" type:"list"`

	// When the number of results is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of results, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to SearchListings
	// to list the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// Total number of search results.
	TotalMatchCount *int64 `locationName:"totalMatchCount" 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 SearchListingsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchListingsOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *SearchListingsOutput) SetItems(v []*SearchResultItem) *SearchListingsOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchListingsOutput) SetNextToken(v string) *SearchListingsOutput {
	s.NextToken = &v
	return s
}

// SetTotalMatchCount sets the TotalMatchCount field's value.
func (s *SearchListingsOutput) SetTotalMatchCount(v int64) *SearchListingsOutput {
	s.TotalMatchCount = &v
	return s
}

type SearchOutput struct {
	_ struct{} `type:"structure"`

	// The results of the Search action.
	Items []*SearchInventoryResultItem `locationName:"items" type:"list"`

	// When the number of results is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of results, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to Search
	// to list the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// Total number of search results.
	TotalMatchCount *int64 `locationName:"totalMatchCount" 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 SearchOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *SearchOutput) SetItems(v []*SearchInventoryResultItem) *SearchOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchOutput) SetNextToken(v string) *SearchOutput {
	s.NextToken = &v
	return s
}

// SetTotalMatchCount sets the TotalMatchCount field's value.
func (s *SearchOutput) SetTotalMatchCount(v int64) *SearchOutput {
	s.TotalMatchCount = &v
	return s
}

// The details of the results of the SearchListings action.
type SearchResultItem struct {
	_ struct{} `type:"structure"`

	// The asset listing included in the results of the SearchListings action.
	AssetListing *AssetListingItem `locationName:"assetListing" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResultItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchResultItem) GoString() string {
	return s.String()
}

// SetAssetListing sets the AssetListing field's value.
func (s *SearchResultItem) SetAssetListing(v *AssetListingItem) *SearchResultItem {
	s.AssetListing = v
	return s
}

// The details of the way to sort search results.
type SearchSort struct {
	_ struct{} `type:"structure"`

	// The attribute detail of the way to sort search results.
	//
	// Attribute is a required field
	Attribute *string `locationName:"attribute" min:"1" type:"string" required:"true"`

	// The order detail of the wya to sort search results.
	Order *string `locationName:"order" type:"string" enum:"SortOrder"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchSort) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchSort) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchSort) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchSort"}
	if s.Attribute == nil {
		invalidParams.Add(request.NewErrParamRequired("Attribute"))
	}
	if s.Attribute != nil && len(*s.Attribute) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Attribute", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAttribute sets the Attribute field's value.
func (s *SearchSort) SetAttribute(v string) *SearchSort {
	s.Attribute = &v
	return s
}

// SetOrder sets the Order field's value.
func (s *SearchSort) SetOrder(v string) *SearchSort {
	s.Order = &v
	return s
}

type SearchTypesInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon DataZone domain in which to invoke the SearchTypes
	// action.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The filters for the SearchTypes action.
	Filters *FilterClause `locationName:"filters" type:"structure"`

	// Managed is a required field
	Managed *bool `locationName:"managed" type:"boolean" required:"true"`

	// The maximum number of results to return in a single call to SearchTypes.
	// When the number of results to be listed is greater than the value of MaxResults,
	// the response contains a NextToken value that you can use in a subsequent
	// call to SearchTypes to list the next set of results.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// When the number of results is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of results, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to SearchTypes
	// to list the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	SearchIn []*SearchInItem `locationName:"searchIn" min:"1" type:"list"`

	// Specifies the scope of the search for types.
	//
	// SearchScope is a required field
	SearchScope *string `locationName:"searchScope" type:"string" required:"true" enum:"TypesSearchScope"`

	// Specifies the text for which to search.
	SearchText *string `locationName:"searchText" min:"1" type:"string"`

	// The specifies the way to sort the SearchTypes results.
	Sort *SearchSort `locationName:"sort" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchTypesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchTypesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchTypesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchTypesInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Managed == nil {
		invalidParams.Add(request.NewErrParamRequired("Managed"))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}
	if s.SearchIn != nil && len(s.SearchIn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SearchIn", 1))
	}
	if s.SearchScope == nil {
		invalidParams.Add(request.NewErrParamRequired("SearchScope"))
	}
	if s.SearchText != nil && len(*s.SearchText) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SearchText", 1))
	}
	if s.Filters != nil {
		if err := s.Filters.Validate(); err != nil {
			invalidParams.AddNested("Filters", err.(request.ErrInvalidParams))
		}
	}
	if s.SearchIn != nil {
		for i, v := range s.SearchIn {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SearchIn", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Sort != nil {
		if err := s.Sort.Validate(); err != nil {
			invalidParams.AddNested("Sort", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *SearchTypesInput) SetDomainIdentifier(v string) *SearchTypesInput {
	s.DomainIdentifier = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *SearchTypesInput) SetFilters(v *FilterClause) *SearchTypesInput {
	s.Filters = v
	return s
}

// SetManaged sets the Managed field's value.
func (s *SearchTypesInput) SetManaged(v bool) *SearchTypesInput {
	s.Managed = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchTypesInput) SetMaxResults(v int64) *SearchTypesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchTypesInput) SetNextToken(v string) *SearchTypesInput {
	s.NextToken = &v
	return s
}

// SetSearchIn sets the SearchIn field's value.
func (s *SearchTypesInput) SetSearchIn(v []*SearchInItem) *SearchTypesInput {
	s.SearchIn = v
	return s
}

// SetSearchScope sets the SearchScope field's value.
func (s *SearchTypesInput) SetSearchScope(v string) *SearchTypesInput {
	s.SearchScope = &v
	return s
}

// SetSearchText sets the SearchText field's value.
func (s *SearchTypesInput) SetSearchText(v string) *SearchTypesInput {
	s.SearchText = &v
	return s
}

// SetSort sets the Sort field's value.
func (s *SearchTypesInput) SetSort(v *SearchSort) *SearchTypesInput {
	s.Sort = v
	return s
}

type SearchTypesOutput struct {
	_ struct{} `type:"structure"`

	// The results of the SearchTypes action.
	Items []*SearchTypesResultItem `locationName:"items" type:"list"`

	// When the number of results is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of results, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to SearchTypes
	// to list the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// Total number of search results.
	TotalMatchCount *int64 `locationName:"totalMatchCount" 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 SearchTypesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchTypesOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *SearchTypesOutput) SetItems(v []*SearchTypesResultItem) *SearchTypesOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchTypesOutput) SetNextToken(v string) *SearchTypesOutput {
	s.NextToken = &v
	return s
}

// SetTotalMatchCount sets the TotalMatchCount field's value.
func (s *SearchTypesOutput) SetTotalMatchCount(v int64) *SearchTypesOutput {
	s.TotalMatchCount = &v
	return s
}

// The details of the results of the SearchTypes action.
type SearchTypesResultItem struct {
	_ struct{} `type:"structure"`

	// The asset type included in the results of the SearchTypes action.
	AssetTypeItem *AssetTypeItem `locationName:"assetTypeItem" type:"structure"`

	// The form type included in the results of the SearchTypes action.
	FormTypeItem *FormTypeData `locationName:"formTypeItem" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchTypesResultItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchTypesResultItem) GoString() string {
	return s.String()
}

// SetAssetTypeItem sets the AssetTypeItem field's value.
func (s *SearchTypesResultItem) SetAssetTypeItem(v *AssetTypeItem) *SearchTypesResultItem {
	s.AssetTypeItem = v
	return s
}

// SetFormTypeItem sets the FormTypeItem field's value.
func (s *SearchTypesResultItem) SetFormTypeItem(v *FormTypeData) *SearchTypesResultItem {
	s.FormTypeItem = v
	return s
}

type SearchUserProfilesInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon DataZone domain in which you want to search
	// user profiles.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The maximum number of results to return in a single call to SearchUserProfiles.
	// When the number of results to be listed is greater than the value of MaxResults,
	// the response contains a NextToken value that you can use in a subsequent
	// call to SearchUserProfiles to list the next set of results.
	MaxResults *int64 `locationName:"maxResults" min:"1" type:"integer"`

	// When the number of results is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of results, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to SearchUserProfiles
	// to list the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`

	// Specifies the text for which to search.
	//
	// SearchText is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SearchUserProfilesInput's
	// String and GoString methods.
	SearchText *string `locationName:"searchText" type:"string" sensitive:"true"`

	// Specifies the user type for the SearchUserProfiles action.
	//
	// UserType is a required field
	UserType *string `locationName:"userType" type:"string" required:"true" enum:"UserSearchType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchUserProfilesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchUserProfilesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SearchUserProfilesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SearchUserProfilesInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.NextToken != nil && len(*s.NextToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
	}
	if s.UserType == nil {
		invalidParams.Add(request.NewErrParamRequired("UserType"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *SearchUserProfilesInput) SetDomainIdentifier(v string) *SearchUserProfilesInput {
	s.DomainIdentifier = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *SearchUserProfilesInput) SetMaxResults(v int64) *SearchUserProfilesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchUserProfilesInput) SetNextToken(v string) *SearchUserProfilesInput {
	s.NextToken = &v
	return s
}

// SetSearchText sets the SearchText field's value.
func (s *SearchUserProfilesInput) SetSearchText(v string) *SearchUserProfilesInput {
	s.SearchText = &v
	return s
}

// SetUserType sets the UserType field's value.
func (s *SearchUserProfilesInput) SetUserType(v string) *SearchUserProfilesInput {
	s.UserType = &v
	return s
}

type SearchUserProfilesOutput struct {
	_ struct{} `type:"structure"`

	// The results of the SearchUserProfiles action.
	Items []*UserProfileSummary `locationName:"items" type:"list"`

	// When the number of results is greater than the default value for the MaxResults
	// parameter, or if you explicitly specify a value for MaxResults that is less
	// than the number of results, the response includes a pagination token named
	// NextToken. You can specify this NextToken value in a subsequent call to SearchUserProfiles
	// to list the next set of results.
	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchUserProfilesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SearchUserProfilesOutput) GoString() string {
	return s.String()
}

// SetItems sets the Items field's value.
func (s *SearchUserProfilesOutput) SetItems(v []*UserProfileSummary) *SearchUserProfilesOutput {
	s.Items = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *SearchUserProfilesOutput) SetNextToken(v string) *SearchUserProfilesOutput {
	s.NextToken = &v
	return s
}

// The request has exceeded the specified service quota.
type ServiceQuotaExceededException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceQuotaExceededException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ServiceQuotaExceededException) GoString() string {
	return s.String()
}

func newErrorServiceQuotaExceededException(v protocol.ResponseMetadata) error {
	return &ServiceQuotaExceededException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ServiceQuotaExceededException) Code() string {
	return "ServiceQuotaExceededException"
}

// Message returns the exception's message.
func (s *ServiceQuotaExceededException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ServiceQuotaExceededException) OrigErr() error {
	return nil
}

func (s *ServiceQuotaExceededException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ServiceQuotaExceededException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ServiceQuotaExceededException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The single sign-on details in Amazon DataZone.
type SingleSignOn struct {
	_ struct{} `type:"structure"`

	// The type of single sign-on in Amazon DataZone.
	Type *string `locationName:"type" type:"string" enum:"AuthType"`

	// The single sign-on user assignment in Amazon DataZone.
	UserAssignment *string `locationName:"userAssignment" type:"string" enum:"UserAssignment"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SingleSignOn) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SingleSignOn) GoString() string {
	return s.String()
}

// SetType sets the Type field's value.
func (s *SingleSignOn) SetType(v string) *SingleSignOn {
	s.Type = &v
	return s
}

// SetUserAssignment sets the UserAssignment field's value.
func (s *SingleSignOn) SetUserAssignment(v string) *SingleSignOn {
	s.UserAssignment = &v
	return s
}

// The single sign-on details of the user profile.
type SsoUserProfileDetails struct {
	_ struct{} `type:"structure"`

	// The first name included in the single sign-on details of the user profile.
	//
	// FirstName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SsoUserProfileDetails's
	// String and GoString methods.
	FirstName *string `locationName:"firstName" type:"string" sensitive:"true"`

	// The last name included in the single sign-on details of the user profile.
	//
	// LastName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SsoUserProfileDetails's
	// String and GoString methods.
	LastName *string `locationName:"lastName" type:"string" sensitive:"true"`

	// The username included in the single sign-on details of the user profile.
	//
	// Username is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SsoUserProfileDetails's
	// String and GoString methods.
	Username *string `locationName:"username" min:"1" type:"string" sensitive:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SsoUserProfileDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SsoUserProfileDetails) GoString() string {
	return s.String()
}

// SetFirstName sets the FirstName field's value.
func (s *SsoUserProfileDetails) SetFirstName(v string) *SsoUserProfileDetails {
	s.FirstName = &v
	return s
}

// SetLastName sets the LastName field's value.
func (s *SsoUserProfileDetails) SetLastName(v string) *SsoUserProfileDetails {
	s.LastName = &v
	return s
}

// SetUsername sets the Username field's value.
func (s *SsoUserProfileDetails) SetUsername(v string) *SsoUserProfileDetails {
	s.Username = &v
	return s
}

type StartDataSourceRunInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`

	// The identifier of the data source.
	//
	// DataSourceIdentifier is a required field
	DataSourceIdentifier *string `location:"uri" locationName:"dataSourceIdentifier" type:"string" required:"true"`

	// The identifier of the Amazon DataZone domain in which to start a data source
	// run.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartDataSourceRunInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartDataSourceRunInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartDataSourceRunInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartDataSourceRunInput"}
	if s.DataSourceIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DataSourceIdentifier"))
	}
	if s.DataSourceIdentifier != nil && len(*s.DataSourceIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DataSourceIdentifier", 1))
	}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *StartDataSourceRunInput) SetClientToken(v string) *StartDataSourceRunInput {
	s.ClientToken = &v
	return s
}

// SetDataSourceIdentifier sets the DataSourceIdentifier field's value.
func (s *StartDataSourceRunInput) SetDataSourceIdentifier(v string) *StartDataSourceRunInput {
	s.DataSourceIdentifier = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *StartDataSourceRunInput) SetDomainIdentifier(v string) *StartDataSourceRunInput {
	s.DomainIdentifier = &v
	return s
}

type StartDataSourceRunOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of when data source run was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601" required:"true"`

	// The configuration snapshot of the data source that is being run.
	DataSourceConfigurationSnapshot *string `locationName:"dataSourceConfigurationSnapshot" type:"string"`

	// The identifier of the data source.
	//
	// DataSourceId is a required field
	DataSourceId *string `locationName:"dataSourceId" type:"string" required:"true"`

	// The identifier of the Amazon DataZone domain in which to start a data source
	// run.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// Specifies the error message that is returned if the operation cannot be successfully
	// completed.
	ErrorMessage *DataSourceErrorMessage `locationName:"errorMessage" type:"structure"`

	// The identifier of the data source run.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The identifier of the project.
	//
	// ProjectId is a required field
	ProjectId *string `locationName:"projectId" type:"string" required:"true"`

	// Specifies run statistics for assets.
	RunStatisticsForAssets *RunStatisticsForAssets `locationName:"runStatisticsForAssets" type:"structure"`

	// The timestamp of when the data source run was started.
	StartedAt *time.Time `locationName:"startedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The status of the data source run.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"DataSourceRunStatus"`

	// The timestamp of when the data source run was stopped.
	StoppedAt *time.Time `locationName:"stoppedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The type of the data source run.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true" enum:"DataSourceRunType"`

	// The timestamp of when the data source run was updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartDataSourceRunOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartDataSourceRunOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *StartDataSourceRunOutput) SetCreatedAt(v time.Time) *StartDataSourceRunOutput {
	s.CreatedAt = &v
	return s
}

// SetDataSourceConfigurationSnapshot sets the DataSourceConfigurationSnapshot field's value.
func (s *StartDataSourceRunOutput) SetDataSourceConfigurationSnapshot(v string) *StartDataSourceRunOutput {
	s.DataSourceConfigurationSnapshot = &v
	return s
}

// SetDataSourceId sets the DataSourceId field's value.
func (s *StartDataSourceRunOutput) SetDataSourceId(v string) *StartDataSourceRunOutput {
	s.DataSourceId = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *StartDataSourceRunOutput) SetDomainId(v string) *StartDataSourceRunOutput {
	s.DomainId = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *StartDataSourceRunOutput) SetErrorMessage(v *DataSourceErrorMessage) *StartDataSourceRunOutput {
	s.ErrorMessage = v
	return s
}

// SetId sets the Id field's value.
func (s *StartDataSourceRunOutput) SetId(v string) *StartDataSourceRunOutput {
	s.Id = &v
	return s
}

// SetProjectId sets the ProjectId field's value.
func (s *StartDataSourceRunOutput) SetProjectId(v string) *StartDataSourceRunOutput {
	s.ProjectId = &v
	return s
}

// SetRunStatisticsForAssets sets the RunStatisticsForAssets field's value.
func (s *StartDataSourceRunOutput) SetRunStatisticsForAssets(v *RunStatisticsForAssets) *StartDataSourceRunOutput {
	s.RunStatisticsForAssets = v
	return s
}

// SetStartedAt sets the StartedAt field's value.
func (s *StartDataSourceRunOutput) SetStartedAt(v time.Time) *StartDataSourceRunOutput {
	s.StartedAt = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *StartDataSourceRunOutput) SetStatus(v string) *StartDataSourceRunOutput {
	s.Status = &v
	return s
}

// SetStoppedAt sets the StoppedAt field's value.
func (s *StartDataSourceRunOutput) SetStoppedAt(v time.Time) *StartDataSourceRunOutput {
	s.StoppedAt = &v
	return s
}

// SetType sets the Type field's value.
func (s *StartDataSourceRunOutput) SetType(v string) *StartDataSourceRunOutput {
	s.Type = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *StartDataSourceRunOutput) SetUpdatedAt(v time.Time) *StartDataSourceRunOutput {
	s.UpdatedAt = &v
	return s
}

// The details of the asset for which the subscription grant is created.
type SubscribedAsset struct {
	_ struct{} `type:"structure"`

	// The identifier of the asset for which the subscription grant is created.
	//
	// AssetId is a required field
	AssetId *string `locationName:"assetId" type:"string" required:"true"`

	// The revision of the asset for which the subscription grant is created.
	//
	// AssetRevision is a required field
	AssetRevision *string `locationName:"assetRevision" min:"1" type:"string" required:"true"`

	// The failure cause included in the details of the asset for which the subscription
	// grant is created.
	FailureCause *FailureCause `locationName:"failureCause" type:"structure"`

	// The failure timestamp included in the details of the asset for which the
	// subscription grant is created.
	FailureTimestamp *time.Time `locationName:"failureTimestamp" type:"timestamp"`

	// The timestamp of when the subscription grant to the asset is created.
	GrantedTimestamp *time.Time `locationName:"grantedTimestamp" type:"timestamp"`

	// The status of the asset for which the subscription grant is created.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionGrantStatus"`

	// The target name of the asset for which the subscription grant is created.
	TargetName *string `locationName:"targetName" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscribedAsset) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscribedAsset) GoString() string {
	return s.String()
}

// SetAssetId sets the AssetId field's value.
func (s *SubscribedAsset) SetAssetId(v string) *SubscribedAsset {
	s.AssetId = &v
	return s
}

// SetAssetRevision sets the AssetRevision field's value.
func (s *SubscribedAsset) SetAssetRevision(v string) *SubscribedAsset {
	s.AssetRevision = &v
	return s
}

// SetFailureCause sets the FailureCause field's value.
func (s *SubscribedAsset) SetFailureCause(v *FailureCause) *SubscribedAsset {
	s.FailureCause = v
	return s
}

// SetFailureTimestamp sets the FailureTimestamp field's value.
func (s *SubscribedAsset) SetFailureTimestamp(v time.Time) *SubscribedAsset {
	s.FailureTimestamp = &v
	return s
}

// SetGrantedTimestamp sets the GrantedTimestamp field's value.
func (s *SubscribedAsset) SetGrantedTimestamp(v time.Time) *SubscribedAsset {
	s.GrantedTimestamp = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *SubscribedAsset) SetStatus(v string) *SubscribedAsset {
	s.Status = &v
	return s
}

// SetTargetName sets the TargetName field's value.
func (s *SubscribedAsset) SetTargetName(v string) *SubscribedAsset {
	s.TargetName = &v
	return s
}

// The details of the published asset for which the subscription grant is created.
type SubscribedAssetListing struct {
	_ struct{} `type:"structure"`

	// The identifier of the published asset for which the subscription grant is
	// created.
	EntityId *string `locationName:"entityId" type:"string"`

	// The revision of the published asset for which the subscription grant is created.
	EntityRevision *string `locationName:"entityRevision" min:"1" type:"string"`

	// The type of the published asset for which the subscription grant is created.
	EntityType *string `locationName:"entityType" min:"1" type:"string"`

	// The forms attached to the published asset for which the subscription grant
	// is created.
	Forms *string `locationName:"forms" type:"string"`

	// The glossary terms attached to the published asset for which the subscription
	// grant is created.
	GlossaryTerms []*DetailedGlossaryTerm `locationName:"glossaryTerms" 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 SubscribedAssetListing) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscribedAssetListing) GoString() string {
	return s.String()
}

// SetEntityId sets the EntityId field's value.
func (s *SubscribedAssetListing) SetEntityId(v string) *SubscribedAssetListing {
	s.EntityId = &v
	return s
}

// SetEntityRevision sets the EntityRevision field's value.
func (s *SubscribedAssetListing) SetEntityRevision(v string) *SubscribedAssetListing {
	s.EntityRevision = &v
	return s
}

// SetEntityType sets the EntityType field's value.
func (s *SubscribedAssetListing) SetEntityType(v string) *SubscribedAssetListing {
	s.EntityType = &v
	return s
}

// SetForms sets the Forms field's value.
func (s *SubscribedAssetListing) SetForms(v string) *SubscribedAssetListing {
	s.Forms = &v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *SubscribedAssetListing) SetGlossaryTerms(v []*DetailedGlossaryTerm) *SubscribedAssetListing {
	s.GlossaryTerms = v
	return s
}

// The details of the published asset for which the subscription grant is created.
type SubscribedListing struct {
	_ struct{} `type:"structure"`

	// The description of the published asset for which the subscription grant is
	// created.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SubscribedListing's
	// String and GoString methods.
	//
	// Description is a required field
	Description *string `locationName:"description" type:"string" required:"true" sensitive:"true"`

	// The identifier of the published asset for which the subscription grant is
	// created.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The published asset for which the subscription grant is created.
	//
	// Item is a required field
	Item *SubscribedListingItem `locationName:"item" type:"structure" required:"true"`

	// The name of the published asset for which the subscription grant is created.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true"`

	// The identifier of the project of the published asset for which the subscription
	// grant is created.
	//
	// OwnerProjectId is a required field
	OwnerProjectId *string `locationName:"ownerProjectId" type:"string" required:"true"`

	// The name of the project that owns the published asset for which the subscription
	// grant is created.
	OwnerProjectName *string `locationName:"ownerProjectName" type:"string"`

	// The revision of the published asset for which the subscription grant is created.
	Revision *string `locationName:"revision" 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 SubscribedListing) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscribedListing) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *SubscribedListing) SetDescription(v string) *SubscribedListing {
	s.Description = &v
	return s
}

// SetId sets the Id field's value.
func (s *SubscribedListing) SetId(v string) *SubscribedListing {
	s.Id = &v
	return s
}

// SetItem sets the Item field's value.
func (s *SubscribedListing) SetItem(v *SubscribedListingItem) *SubscribedListing {
	s.Item = v
	return s
}

// SetName sets the Name field's value.
func (s *SubscribedListing) SetName(v string) *SubscribedListing {
	s.Name = &v
	return s
}

// SetOwnerProjectId sets the OwnerProjectId field's value.
func (s *SubscribedListing) SetOwnerProjectId(v string) *SubscribedListing {
	s.OwnerProjectId = &v
	return s
}

// SetOwnerProjectName sets the OwnerProjectName field's value.
func (s *SubscribedListing) SetOwnerProjectName(v string) *SubscribedListing {
	s.OwnerProjectName = &v
	return s
}

// SetRevision sets the Revision field's value.
func (s *SubscribedListing) SetRevision(v string) *SubscribedListing {
	s.Revision = &v
	return s
}

// The published asset for which the subscription grant is to be created.
type SubscribedListingInput_ struct {
	_ struct{} `type:"structure"`

	// The identifier of the published asset for which the subscription grant is
	// to be created.
	//
	// Identifier is a required field
	Identifier *string `locationName:"identifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscribedListingInput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscribedListingInput_) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SubscribedListingInput_) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SubscribedListingInput_"}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetIdentifier sets the Identifier field's value.
func (s *SubscribedListingInput_) SetIdentifier(v string) *SubscribedListingInput_ {
	s.Identifier = &v
	return s
}

// The published asset for which the subscription grant is created.
type SubscribedListingItem struct {
	_ struct{} `type:"structure"`

	// The asset for which the subscription grant is created.
	AssetListing *SubscribedAssetListing `locationName:"assetListing" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscribedListingItem) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscribedListingItem) GoString() string {
	return s.String()
}

// SetAssetListing sets the AssetListing field's value.
func (s *SubscribedListingItem) SetAssetListing(v *SubscribedAssetListing) *SubscribedListingItem {
	s.AssetListing = v
	return s
}

// The principal that has the subscription grant for the asset.
type SubscribedPrincipal struct {
	_ struct{} `type:"structure"`

	// The project that has the subscription grant.
	Project *SubscribedProject `locationName:"project" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscribedPrincipal) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscribedPrincipal) GoString() string {
	return s.String()
}

// SetProject sets the Project field's value.
func (s *SubscribedPrincipal) SetProject(v *SubscribedProject) *SubscribedPrincipal {
	s.Project = v
	return s
}

// The principal that is to be given a subscriptiong grant.
type SubscribedPrincipalInput_ struct {
	_ struct{} `type:"structure"`

	// The project that is to be given a subscription grant.
	Project *SubscribedProjectInput_ `locationName:"project" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscribedPrincipalInput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscribedPrincipalInput_) GoString() string {
	return s.String()
}

// SetProject sets the Project field's value.
func (s *SubscribedPrincipalInput_) SetProject(v *SubscribedProjectInput_) *SubscribedPrincipalInput_ {
	s.Project = v
	return s
}

// The project that has the subscription grant.
type SubscribedProject struct {
	_ struct{} `type:"structure"`

	// The identifier of the project that has the subscription grant.
	Id *string `locationName:"id" type:"string"`

	// The name of the project that has the subscription grant.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SubscribedProject's
	// String and GoString methods.
	Name *string `locationName:"name" min:"1" type:"string" sensitive:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscribedProject) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscribedProject) GoString() string {
	return s.String()
}

// SetId sets the Id field's value.
func (s *SubscribedProject) SetId(v string) *SubscribedProject {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *SubscribedProject) SetName(v string) *SubscribedProject {
	s.Name = &v
	return s
}

// The project that is to be given a subscription grant.
type SubscribedProjectInput_ struct {
	_ struct{} `type:"structure"`

	// The identifier of the project that is to be given a subscription grant.
	Identifier *string `locationName:"identifier" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscribedProjectInput_) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscribedProjectInput_) GoString() string {
	return s.String()
}

// SetIdentifier sets the Identifier field's value.
func (s *SubscribedProjectInput_) SetIdentifier(v string) *SubscribedProjectInput_ {
	s.Identifier = &v
	return s
}

// The details of the subscription grant.
type SubscriptionGrantSummary struct {
	_ struct{} `type:"structure"`

	// The assets included in the subscription grant.
	Assets []*SubscribedAsset `locationName:"assets" type:"list"`

	// The timestamp of when a subscription grant was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The datazone user who created the subscription grant.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The identifier of the Amazon DataZone domain in which a subscription grant
	// exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The entity to which the subscription is granted.
	//
	// GrantedEntity is a required field
	GrantedEntity *GrantedEntity `locationName:"grantedEntity" type:"structure" required:"true"`

	// The identifier of the subscription grant.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The status of the subscription grant.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionGrantOverallStatus"`

	// The ID of the subscription grant.
	SubscriptionId *string `locationName:"subscriptionId" type:"string"`

	// The identifier of the target of the subscription grant.
	//
	// SubscriptionTargetId is a required field
	SubscriptionTargetId *string `locationName:"subscriptionTargetId" type:"string" required:"true"`

	// The timestampf of when the subscription grant was updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who updated the subscription grant.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscriptionGrantSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscriptionGrantSummary) GoString() string {
	return s.String()
}

// SetAssets sets the Assets field's value.
func (s *SubscriptionGrantSummary) SetAssets(v []*SubscribedAsset) *SubscriptionGrantSummary {
	s.Assets = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *SubscriptionGrantSummary) SetCreatedAt(v time.Time) *SubscriptionGrantSummary {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *SubscriptionGrantSummary) SetCreatedBy(v string) *SubscriptionGrantSummary {
	s.CreatedBy = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *SubscriptionGrantSummary) SetDomainId(v string) *SubscriptionGrantSummary {
	s.DomainId = &v
	return s
}

// SetGrantedEntity sets the GrantedEntity field's value.
func (s *SubscriptionGrantSummary) SetGrantedEntity(v *GrantedEntity) *SubscriptionGrantSummary {
	s.GrantedEntity = v
	return s
}

// SetId sets the Id field's value.
func (s *SubscriptionGrantSummary) SetId(v string) *SubscriptionGrantSummary {
	s.Id = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *SubscriptionGrantSummary) SetStatus(v string) *SubscriptionGrantSummary {
	s.Status = &v
	return s
}

// SetSubscriptionId sets the SubscriptionId field's value.
func (s *SubscriptionGrantSummary) SetSubscriptionId(v string) *SubscriptionGrantSummary {
	s.SubscriptionId = &v
	return s
}

// SetSubscriptionTargetId sets the SubscriptionTargetId field's value.
func (s *SubscriptionGrantSummary) SetSubscriptionTargetId(v string) *SubscriptionGrantSummary {
	s.SubscriptionTargetId = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *SubscriptionGrantSummary) SetUpdatedAt(v time.Time) *SubscriptionGrantSummary {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *SubscriptionGrantSummary) SetUpdatedBy(v string) *SubscriptionGrantSummary {
	s.UpdatedBy = &v
	return s
}

// The details of the subscription request.
type SubscriptionRequestSummary struct {
	_ struct{} `type:"structure"`

	// The timestamp of when a subscription request was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who created the subscription request.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The decision comment of the subscription request.
	//
	// DecisionComment is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SubscriptionRequestSummary's
	// String and GoString methods.
	DecisionComment *string `locationName:"decisionComment" min:"1" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which a subscription request
	// exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of the subscription request.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The reason for the subscription request.
	//
	// RequestReason is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SubscriptionRequestSummary's
	// String and GoString methods.
	//
	// RequestReason is a required field
	RequestReason *string `locationName:"requestReason" min:"1" type:"string" required:"true" sensitive:"true"`

	// The identifier of the subscription request reviewer.
	ReviewerId *string `locationName:"reviewerId" type:"string"`

	// The status of the subscription request.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionRequestStatus"`

	// The listings included in the subscription request.
	//
	// SubscribedListings is a required field
	SubscribedListings []*SubscribedListing `locationName:"subscribedListings" min:"1" type:"list" required:"true"`

	// The principals included in the subscription request.
	//
	// SubscribedPrincipals is a required field
	SubscribedPrincipals []*SubscribedPrincipal `locationName:"subscribedPrincipals" min:"1" type:"list" required:"true"`

	// The timestamp of when the subscription request was updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" required:"true"`

	// The identifier of the Amazon DataZone user who updated the subscription request.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscriptionRequestSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscriptionRequestSummary) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *SubscriptionRequestSummary) SetCreatedAt(v time.Time) *SubscriptionRequestSummary {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *SubscriptionRequestSummary) SetCreatedBy(v string) *SubscriptionRequestSummary {
	s.CreatedBy = &v
	return s
}

// SetDecisionComment sets the DecisionComment field's value.
func (s *SubscriptionRequestSummary) SetDecisionComment(v string) *SubscriptionRequestSummary {
	s.DecisionComment = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *SubscriptionRequestSummary) SetDomainId(v string) *SubscriptionRequestSummary {
	s.DomainId = &v
	return s
}

// SetId sets the Id field's value.
func (s *SubscriptionRequestSummary) SetId(v string) *SubscriptionRequestSummary {
	s.Id = &v
	return s
}

// SetRequestReason sets the RequestReason field's value.
func (s *SubscriptionRequestSummary) SetRequestReason(v string) *SubscriptionRequestSummary {
	s.RequestReason = &v
	return s
}

// SetReviewerId sets the ReviewerId field's value.
func (s *SubscriptionRequestSummary) SetReviewerId(v string) *SubscriptionRequestSummary {
	s.ReviewerId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *SubscriptionRequestSummary) SetStatus(v string) *SubscriptionRequestSummary {
	s.Status = &v
	return s
}

// SetSubscribedListings sets the SubscribedListings field's value.
func (s *SubscriptionRequestSummary) SetSubscribedListings(v []*SubscribedListing) *SubscriptionRequestSummary {
	s.SubscribedListings = v
	return s
}

// SetSubscribedPrincipals sets the SubscribedPrincipals field's value.
func (s *SubscriptionRequestSummary) SetSubscribedPrincipals(v []*SubscribedPrincipal) *SubscriptionRequestSummary {
	s.SubscribedPrincipals = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *SubscriptionRequestSummary) SetUpdatedAt(v time.Time) *SubscriptionRequestSummary {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *SubscriptionRequestSummary) SetUpdatedBy(v string) *SubscriptionRequestSummary {
	s.UpdatedBy = &v
	return s
}

// The details of the subscription.
type SubscriptionSummary struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the subscription was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who created the subscription.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The identifier of the Amazon DataZone domain in which a subscription exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of the subscription.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The retain permissions included in the subscription.
	RetainPermissions *bool `locationName:"retainPermissions" type:"boolean"`

	// The status of the subscription.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionStatus"`

	// The listing included in the subscription.
	//
	// SubscribedListing is a required field
	SubscribedListing *SubscribedListing `locationName:"subscribedListing" type:"structure" required:"true"`

	// The principal included in the subscription.
	//
	// SubscribedPrincipal is a required field
	SubscribedPrincipal *SubscribedPrincipal `locationName:"subscribedPrincipal" type:"structure" required:"true"`

	// The identifier of the subscription request for the subscription.
	SubscriptionRequestId *string `locationName:"subscriptionRequestId" type:"string"`

	// The timestamp of when the subscription was updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who updated the subscription.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscriptionSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscriptionSummary) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *SubscriptionSummary) SetCreatedAt(v time.Time) *SubscriptionSummary {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *SubscriptionSummary) SetCreatedBy(v string) *SubscriptionSummary {
	s.CreatedBy = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *SubscriptionSummary) SetDomainId(v string) *SubscriptionSummary {
	s.DomainId = &v
	return s
}

// SetId sets the Id field's value.
func (s *SubscriptionSummary) SetId(v string) *SubscriptionSummary {
	s.Id = &v
	return s
}

// SetRetainPermissions sets the RetainPermissions field's value.
func (s *SubscriptionSummary) SetRetainPermissions(v bool) *SubscriptionSummary {
	s.RetainPermissions = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *SubscriptionSummary) SetStatus(v string) *SubscriptionSummary {
	s.Status = &v
	return s
}

// SetSubscribedListing sets the SubscribedListing field's value.
func (s *SubscriptionSummary) SetSubscribedListing(v *SubscribedListing) *SubscriptionSummary {
	s.SubscribedListing = v
	return s
}

// SetSubscribedPrincipal sets the SubscribedPrincipal field's value.
func (s *SubscriptionSummary) SetSubscribedPrincipal(v *SubscribedPrincipal) *SubscriptionSummary {
	s.SubscribedPrincipal = v
	return s
}

// SetSubscriptionRequestId sets the SubscriptionRequestId field's value.
func (s *SubscriptionSummary) SetSubscriptionRequestId(v string) *SubscriptionSummary {
	s.SubscriptionRequestId = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *SubscriptionSummary) SetUpdatedAt(v time.Time) *SubscriptionSummary {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *SubscriptionSummary) SetUpdatedBy(v string) *SubscriptionSummary {
	s.UpdatedBy = &v
	return s
}

// The details of the subscription target configuration.
type SubscriptionTargetForm struct {
	_ struct{} `type:"structure"`

	// The content of the subscription target configuration.
	//
	// Content is a required field
	Content *string `locationName:"content" type:"string" required:"true"`

	// The form name included in the subscription target configuration.
	//
	// FormName is a required field
	FormName *string `locationName:"formName" 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 SubscriptionTargetForm) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscriptionTargetForm) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *SubscriptionTargetForm) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "SubscriptionTargetForm"}
	if s.Content == nil {
		invalidParams.Add(request.NewErrParamRequired("Content"))
	}
	if s.FormName == nil {
		invalidParams.Add(request.NewErrParamRequired("FormName"))
	}
	if s.FormName != nil && len(*s.FormName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("FormName", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetContent sets the Content field's value.
func (s *SubscriptionTargetForm) SetContent(v string) *SubscriptionTargetForm {
	s.Content = &v
	return s
}

// SetFormName sets the FormName field's value.
func (s *SubscriptionTargetForm) SetFormName(v string) *SubscriptionTargetForm {
	s.FormName = &v
	return s
}

// The details of the subscription target.
type SubscriptionTargetSummary struct {
	_ struct{} `type:"structure"`

	// The asset types included in the subscription target.
	//
	// ApplicableAssetTypes is a required field
	ApplicableAssetTypes []*string `locationName:"applicableAssetTypes" type:"list" required:"true"`

	// The authorized principals included in the subscription target.
	//
	// AuthorizedPrincipals is a required field
	AuthorizedPrincipals []*string `locationName:"authorizedPrincipals" min:"1" type:"list" required:"true"`

	// The timestamp of when the subscription target was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who created the subscription target.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The identifier of the Amazon DataZone domain in which the subscription target
	// exists.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of the environment of the subscription target.
	//
	// EnvironmentId is a required field
	EnvironmentId *string `locationName:"environmentId" type:"string" required:"true"`

	// The identifier of the subscription target.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The manage access role specified in the subscription target.
	//
	// ManageAccessRole is a required field
	ManageAccessRole *string `locationName:"manageAccessRole" type:"string" required:"true"`

	// The name of the subscription target.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by SubscriptionTargetSummary's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The identifier of the project specified in the subscription target.
	//
	// ProjectId is a required field
	ProjectId *string `locationName:"projectId" type:"string" required:"true"`

	// The provider of the subscription target.
	//
	// Provider is a required field
	Provider *string `locationName:"provider" type:"string" required:"true"`

	// The configuration of the subscription target.
	//
	// SubscriptionTargetConfig is a required field
	SubscriptionTargetConfig []*SubscriptionTargetForm `locationName:"subscriptionTargetConfig" type:"list" required:"true"`

	// The type of the subscription target.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true"`

	// The timestamp of when the subscription target was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`

	// The Amazon DataZone user who updated the subscription target.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscriptionTargetSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s SubscriptionTargetSummary) GoString() string {
	return s.String()
}

// SetApplicableAssetTypes sets the ApplicableAssetTypes field's value.
func (s *SubscriptionTargetSummary) SetApplicableAssetTypes(v []*string) *SubscriptionTargetSummary {
	s.ApplicableAssetTypes = v
	return s
}

// SetAuthorizedPrincipals sets the AuthorizedPrincipals field's value.
func (s *SubscriptionTargetSummary) SetAuthorizedPrincipals(v []*string) *SubscriptionTargetSummary {
	s.AuthorizedPrincipals = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *SubscriptionTargetSummary) SetCreatedAt(v time.Time) *SubscriptionTargetSummary {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *SubscriptionTargetSummary) SetCreatedBy(v string) *SubscriptionTargetSummary {
	s.CreatedBy = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *SubscriptionTargetSummary) SetDomainId(v string) *SubscriptionTargetSummary {
	s.DomainId = &v
	return s
}

// SetEnvironmentId sets the EnvironmentId field's value.
func (s *SubscriptionTargetSummary) SetEnvironmentId(v string) *SubscriptionTargetSummary {
	s.EnvironmentId = &v
	return s
}

// SetId sets the Id field's value.
func (s *SubscriptionTargetSummary) SetId(v string) *SubscriptionTargetSummary {
	s.Id = &v
	return s
}

// SetManageAccessRole sets the ManageAccessRole field's value.
func (s *SubscriptionTargetSummary) SetManageAccessRole(v string) *SubscriptionTargetSummary {
	s.ManageAccessRole = &v
	return s
}

// SetName sets the Name field's value.
func (s *SubscriptionTargetSummary) SetName(v string) *SubscriptionTargetSummary {
	s.Name = &v
	return s
}

// SetProjectId sets the ProjectId field's value.
func (s *SubscriptionTargetSummary) SetProjectId(v string) *SubscriptionTargetSummary {
	s.ProjectId = &v
	return s
}

// SetProvider sets the Provider field's value.
func (s *SubscriptionTargetSummary) SetProvider(v string) *SubscriptionTargetSummary {
	s.Provider = &v
	return s
}

// SetSubscriptionTargetConfig sets the SubscriptionTargetConfig field's value.
func (s *SubscriptionTargetSummary) SetSubscriptionTargetConfig(v []*SubscriptionTargetForm) *SubscriptionTargetSummary {
	s.SubscriptionTargetConfig = v
	return s
}

// SetType sets the Type field's value.
func (s *SubscriptionTargetSummary) SetType(v string) *SubscriptionTargetSummary {
	s.Type = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *SubscriptionTargetSummary) SetUpdatedAt(v time.Time) *SubscriptionTargetSummary {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *SubscriptionTargetSummary) SetUpdatedBy(v string) *SubscriptionTargetSummary {
	s.UpdatedBy = &v
	return s
}

type TagResourceInput struct {
	_ struct{} `type:"structure"`

	// The ARN of the resource to be tagged in Amazon DataZone.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`

	// Specifies the tags for the TagResource action.
	//
	// Tags is a required field
	Tags map[string]*string `locationName:"tags" type:"map" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}
	if s.Tags == nil {
		invalidParams.Add(request.NewErrParamRequired("Tags"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *TagResourceInput) SetTags(v map[string]*string) *TagResourceInput {
	s.Tags = v
	return s
}

type TagResourceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceOutput) GoString() string {
	return s.String()
}

// The details of the term relations.
type TermRelations struct {
	_ struct{} `type:"structure"`

	// The classifies of the term relations.
	Classifies []*string `locationName:"classifies" min:"1" type:"list"`

	// The isA property of the term relations.
	IsA []*string `locationName:"isA" 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 TermRelations) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TermRelations) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TermRelations) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TermRelations"}
	if s.Classifies != nil && len(s.Classifies) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Classifies", 1))
	}
	if s.IsA != nil && len(s.IsA) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("IsA", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClassifies sets the Classifies field's value.
func (s *TermRelations) SetClassifies(v []*string) *TermRelations {
	s.Classifies = v
	return s
}

// SetIsA sets the IsA field's value.
func (s *TermRelations) SetIsA(v []*string) *TermRelations {
	s.IsA = v
	return s
}

// The request was denied due to request throttling.
type ThrottlingException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThrottlingException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ThrottlingException) GoString() string {
	return s.String()
}

func newErrorThrottlingException(v protocol.ResponseMetadata) error {
	return &ThrottlingException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ThrottlingException) Code() string {
	return "ThrottlingException"
}

// Message returns the exception's message.
func (s *ThrottlingException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ThrottlingException) OrigErr() error {
	return nil
}

func (s *ThrottlingException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ThrottlingException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ThrottlingException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The topic of the notification.
type Topic struct {
	_ struct{} `type:"structure"`

	// The details of the resource mentioned in a notification.
	//
	// Resource is a required field
	Resource *NotificationResource `locationName:"resource" type:"structure" required:"true"`

	// The role of the resource mentioned in a notification.
	//
	// Role is a required field
	Role *string `locationName:"role" type:"string" required:"true" enum:"NotificationRole"`

	// The subject of the resource mentioned in a notification.
	//
	// Subject is a required field
	Subject *string `locationName:"subject" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Topic) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Topic) GoString() string {
	return s.String()
}

// SetResource sets the Resource field's value.
func (s *Topic) SetResource(v *NotificationResource) *Topic {
	s.Resource = v
	return s
}

// SetRole sets the Role field's value.
func (s *Topic) SetRole(v string) *Topic {
	s.Role = &v
	return s
}

// SetSubject sets the Subject field's value.
func (s *Topic) SetSubject(v string) *Topic {
	s.Subject = &v
	return s
}

// You do not have permission to perform this action.
type UnauthorizedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnauthorizedException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnauthorizedException) GoString() string {
	return s.String()
}

func newErrorUnauthorizedException(v protocol.ResponseMetadata) error {
	return &UnauthorizedException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *UnauthorizedException) Code() string {
	return "UnauthorizedException"
}

// Message returns the exception's message.
func (s *UnauthorizedException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *UnauthorizedException) OrigErr() error {
	return nil
}

func (s *UnauthorizedException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *UnauthorizedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *UnauthorizedException) RequestID() string {
	return s.RespMetadata.RequestID
}

type UntagResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The ARN of the resource to be untagged in Amazon DataZone.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`

	// Specifies the tag keys for the UntagResource action.
	//
	// TagKeys is a required field
	TagKeys []*string `location:"querystring" locationName:"tagKeys" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UntagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}
	if s.TagKeys == nil {
		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetTagKeys sets the TagKeys field's value.
func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
	s.TagKeys = v
	return s
}

type UntagResourceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceOutput) GoString() string {
	return s.String()
}

type UpdateDataSourceInput struct {
	_ struct{} `type:"structure"`

	// The asset forms to be updated as part of the UpdateDataSource action.
	//
	// AssetFormsInput is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateDataSourceInput's
	// String and GoString methods.
	AssetFormsInput []*FormInput_ `locationName:"assetFormsInput" type:"list" sensitive:"true"`

	// The configuration to be updated as part of the UpdateDataSource action.
	Configuration *DataSourceConfigurationInput_ `locationName:"configuration" type:"structure"`

	// The description to be updated as part of the UpdateDataSource action.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateDataSourceInput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the domain in which to update a data source.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The enable setting to be updated as part of the UpdateDataSource action.
	EnableSetting *string `locationName:"enableSetting" type:"string" enum:"EnableSetting"`

	// The identifier of the data source to be updated.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// The name to be updated as part of the UpdateDataSource action.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateDataSourceInput's
	// String and GoString methods.
	Name *string `locationName:"name" min:"1" type:"string" sensitive:"true"`

	// The publish on import setting to be updated as part of the UpdateDataSource
	// action.
	PublishOnImport *bool `locationName:"publishOnImport" type:"boolean"`

	// The recommendation to be updated as part of the UpdateDataSource action.
	Recommendation *RecommendationConfiguration `locationName:"recommendation" type:"structure"`

	// The schedule to be updated as part of the UpdateDataSource action.
	//
	// Schedule is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateDataSourceInput's
	// String and GoString methods.
	Schedule *ScheduleConfiguration `locationName:"schedule" type:"structure" sensitive:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDataSourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDataSourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDataSourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDataSourceInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.AssetFormsInput != nil {
		for i, v := range s.AssetFormsInput {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AssetFormsInput", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.Configuration != nil {
		if err := s.Configuration.Validate(); err != nil {
			invalidParams.AddNested("Configuration", err.(request.ErrInvalidParams))
		}
	}
	if s.Schedule != nil {
		if err := s.Schedule.Validate(); err != nil {
			invalidParams.AddNested("Schedule", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssetFormsInput sets the AssetFormsInput field's value.
func (s *UpdateDataSourceInput) SetAssetFormsInput(v []*FormInput_) *UpdateDataSourceInput {
	s.AssetFormsInput = v
	return s
}

// SetConfiguration sets the Configuration field's value.
func (s *UpdateDataSourceInput) SetConfiguration(v *DataSourceConfigurationInput_) *UpdateDataSourceInput {
	s.Configuration = v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateDataSourceInput) SetDescription(v string) *UpdateDataSourceInput {
	s.Description = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *UpdateDataSourceInput) SetDomainIdentifier(v string) *UpdateDataSourceInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnableSetting sets the EnableSetting field's value.
func (s *UpdateDataSourceInput) SetEnableSetting(v string) *UpdateDataSourceInput {
	s.EnableSetting = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *UpdateDataSourceInput) SetIdentifier(v string) *UpdateDataSourceInput {
	s.Identifier = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateDataSourceInput) SetName(v string) *UpdateDataSourceInput {
	s.Name = &v
	return s
}

// SetPublishOnImport sets the PublishOnImport field's value.
func (s *UpdateDataSourceInput) SetPublishOnImport(v bool) *UpdateDataSourceInput {
	s.PublishOnImport = &v
	return s
}

// SetRecommendation sets the Recommendation field's value.
func (s *UpdateDataSourceInput) SetRecommendation(v *RecommendationConfiguration) *UpdateDataSourceInput {
	s.Recommendation = v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *UpdateDataSourceInput) SetSchedule(v *ScheduleConfiguration) *UpdateDataSourceInput {
	s.Schedule = v
	return s
}

type UpdateDataSourceOutput struct {
	_ struct{} `type:"structure"`

	// The asset forms to be updated as part of the UpdateDataSource action.
	AssetFormsOutput []*FormOutput_ `locationName:"assetFormsOutput" type:"list"`

	// The configuration to be updated as part of the UpdateDataSource action.
	Configuration *DataSourceConfigurationOutput_ `locationName:"configuration" type:"structure"`

	// The timestamp of when the data source was updated.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The description to be updated as part of the UpdateDataSource action.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateDataSourceOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which a data source is to
	// be updated.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The enable setting to be updated as part of the UpdateDataSource action.
	EnableSetting *string `locationName:"enableSetting" type:"string" enum:"EnableSetting"`

	// The identifier of the environment in which a data source is to be updated.
	//
	// EnvironmentId is a required field
	EnvironmentId *string `locationName:"environmentId" type:"string" required:"true"`

	// Specifies the error message that is returned if the operation cannot be successfully
	// completed.
	ErrorMessage *DataSourceErrorMessage `locationName:"errorMessage" type:"structure"`

	// The identifier of the data source to be updated.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The timestamp of when the data source was last run.
	LastRunAt *time.Time `locationName:"lastRunAt" type:"timestamp" timestampFormat:"iso8601"`

	// The last run error message of the data source.
	LastRunErrorMessage *DataSourceErrorMessage `locationName:"lastRunErrorMessage" type:"structure"`

	// The last run status of the data source.
	LastRunStatus *string `locationName:"lastRunStatus" type:"string" enum:"DataSourceRunStatus"`

	// The name to be updated as part of the UpdateDataSource action.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateDataSourceOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The identifier of the project where data source is to be updated.
	//
	// ProjectId is a required field
	ProjectId *string `locationName:"projectId" type:"string" required:"true"`

	// The publish on import setting to be updated as part of the UpdateDataSource
	// action.
	PublishOnImport *bool `locationName:"publishOnImport" type:"boolean"`

	// The recommendation to be updated as part of the UpdateDataSource action.
	Recommendation *RecommendationConfiguration `locationName:"recommendation" type:"structure"`

	// The schedule to be updated as part of the UpdateDataSource action.
	//
	// Schedule is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateDataSourceOutput's
	// String and GoString methods.
	Schedule *ScheduleConfiguration `locationName:"schedule" type:"structure" sensitive:"true"`

	// The status to be updated as part of the UpdateDataSource action.
	Status *string `locationName:"status" type:"string" enum:"DataSourceStatus"`

	// The type to be updated as part of the UpdateDataSource action.
	Type *string `locationName:"type" min:"1" type:"string"`

	// The timestamp of when the data source was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDataSourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDataSourceOutput) GoString() string {
	return s.String()
}

// SetAssetFormsOutput sets the AssetFormsOutput field's value.
func (s *UpdateDataSourceOutput) SetAssetFormsOutput(v []*FormOutput_) *UpdateDataSourceOutput {
	s.AssetFormsOutput = v
	return s
}

// SetConfiguration sets the Configuration field's value.
func (s *UpdateDataSourceOutput) SetConfiguration(v *DataSourceConfigurationOutput_) *UpdateDataSourceOutput {
	s.Configuration = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *UpdateDataSourceOutput) SetCreatedAt(v time.Time) *UpdateDataSourceOutput {
	s.CreatedAt = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateDataSourceOutput) SetDescription(v string) *UpdateDataSourceOutput {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *UpdateDataSourceOutput) SetDomainId(v string) *UpdateDataSourceOutput {
	s.DomainId = &v
	return s
}

// SetEnableSetting sets the EnableSetting field's value.
func (s *UpdateDataSourceOutput) SetEnableSetting(v string) *UpdateDataSourceOutput {
	s.EnableSetting = &v
	return s
}

// SetEnvironmentId sets the EnvironmentId field's value.
func (s *UpdateDataSourceOutput) SetEnvironmentId(v string) *UpdateDataSourceOutput {
	s.EnvironmentId = &v
	return s
}

// SetErrorMessage sets the ErrorMessage field's value.
func (s *UpdateDataSourceOutput) SetErrorMessage(v *DataSourceErrorMessage) *UpdateDataSourceOutput {
	s.ErrorMessage = v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateDataSourceOutput) SetId(v string) *UpdateDataSourceOutput {
	s.Id = &v
	return s
}

// SetLastRunAt sets the LastRunAt field's value.
func (s *UpdateDataSourceOutput) SetLastRunAt(v time.Time) *UpdateDataSourceOutput {
	s.LastRunAt = &v
	return s
}

// SetLastRunErrorMessage sets the LastRunErrorMessage field's value.
func (s *UpdateDataSourceOutput) SetLastRunErrorMessage(v *DataSourceErrorMessage) *UpdateDataSourceOutput {
	s.LastRunErrorMessage = v
	return s
}

// SetLastRunStatus sets the LastRunStatus field's value.
func (s *UpdateDataSourceOutput) SetLastRunStatus(v string) *UpdateDataSourceOutput {
	s.LastRunStatus = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateDataSourceOutput) SetName(v string) *UpdateDataSourceOutput {
	s.Name = &v
	return s
}

// SetProjectId sets the ProjectId field's value.
func (s *UpdateDataSourceOutput) SetProjectId(v string) *UpdateDataSourceOutput {
	s.ProjectId = &v
	return s
}

// SetPublishOnImport sets the PublishOnImport field's value.
func (s *UpdateDataSourceOutput) SetPublishOnImport(v bool) *UpdateDataSourceOutput {
	s.PublishOnImport = &v
	return s
}

// SetRecommendation sets the Recommendation field's value.
func (s *UpdateDataSourceOutput) SetRecommendation(v *RecommendationConfiguration) *UpdateDataSourceOutput {
	s.Recommendation = v
	return s
}

// SetSchedule sets the Schedule field's value.
func (s *UpdateDataSourceOutput) SetSchedule(v *ScheduleConfiguration) *UpdateDataSourceOutput {
	s.Schedule = v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateDataSourceOutput) SetStatus(v string) *UpdateDataSourceOutput {
	s.Status = &v
	return s
}

// SetType sets the Type field's value.
func (s *UpdateDataSourceOutput) SetType(v string) *UpdateDataSourceOutput {
	s.Type = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *UpdateDataSourceOutput) SetUpdatedAt(v time.Time) *UpdateDataSourceOutput {
	s.UpdatedAt = &v
	return s
}

type UpdateDomainInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `location:"querystring" locationName:"clientToken" type:"string" idempotencyToken:"true"`

	// The description to be updated as part of the UpdateDomain action.
	Description *string `locationName:"description" type:"string"`

	// The domain execution role to be updated as part of the UpdateDomain action.
	DomainExecutionRole *string `locationName:"domainExecutionRole" type:"string"`

	// The ID of the Amazon Web Services domain that is to be updated.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// The name to be updated as part of the UpdateDomain action.
	Name *string `locationName:"name" type:"string"`

	// The single sign-on option to be updated as part of the UpdateDomain action.
	SingleSignOn *SingleSignOn `locationName:"singleSignOn" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDomainInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDomainInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateDomainInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateDomainInput"}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *UpdateDomainInput) SetClientToken(v string) *UpdateDomainInput {
	s.ClientToken = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateDomainInput) SetDescription(v string) *UpdateDomainInput {
	s.Description = &v
	return s
}

// SetDomainExecutionRole sets the DomainExecutionRole field's value.
func (s *UpdateDomainInput) SetDomainExecutionRole(v string) *UpdateDomainInput {
	s.DomainExecutionRole = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *UpdateDomainInput) SetIdentifier(v string) *UpdateDomainInput {
	s.Identifier = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateDomainInput) SetName(v string) *UpdateDomainInput {
	s.Name = &v
	return s
}

// SetSingleSignOn sets the SingleSignOn field's value.
func (s *UpdateDomainInput) SetSingleSignOn(v *SingleSignOn) *UpdateDomainInput {
	s.SingleSignOn = v
	return s
}

type UpdateDomainOutput struct {
	_ struct{} `type:"structure"`

	// The description to be updated as part of the UpdateDomain action.
	Description *string `locationName:"description" type:"string"`

	// The domain execution role to be updated as part of the UpdateDomain action.
	DomainExecutionRole *string `locationName:"domainExecutionRole" type:"string"`

	// The identifier of the Amazon DataZone domain.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// Specifies the timestamp of when the domain was last updated.
	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp"`

	// The name to be updated as part of the UpdateDomain action.
	Name *string `locationName:"name" type:"string"`

	// The single sign-on option of the Amazon DataZone domain.
	SingleSignOn *SingleSignOn `locationName:"singleSignOn" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDomainOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateDomainOutput) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *UpdateDomainOutput) SetDescription(v string) *UpdateDomainOutput {
	s.Description = &v
	return s
}

// SetDomainExecutionRole sets the DomainExecutionRole field's value.
func (s *UpdateDomainOutput) SetDomainExecutionRole(v string) *UpdateDomainOutput {
	s.DomainExecutionRole = &v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateDomainOutput) SetId(v string) *UpdateDomainOutput {
	s.Id = &v
	return s
}

// SetLastUpdatedAt sets the LastUpdatedAt field's value.
func (s *UpdateDomainOutput) SetLastUpdatedAt(v time.Time) *UpdateDomainOutput {
	s.LastUpdatedAt = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateDomainOutput) SetName(v string) *UpdateDomainOutput {
	s.Name = &v
	return s
}

// SetSingleSignOn sets the SingleSignOn field's value.
func (s *UpdateDomainOutput) SetSingleSignOn(v *SingleSignOn) *UpdateDomainOutput {
	s.SingleSignOn = v
	return s
}

type UpdateEnvironmentInput struct {
	_ struct{} `type:"structure"`

	// The description to be updated as part of the UpdateEnvironment action.
	Description *string `locationName:"description" type:"string"`

	// The identifier of the domain in which the environment is to be updated.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The glossary terms to be updated as part of the UpdateEnvironment action.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// The identifier of the environment that is to be updated.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// The name to be updated as part of the UpdateEnvironment action.
	Name *string `locationName:"name" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateEnvironmentInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateEnvironmentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateEnvironmentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateEnvironmentInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.GlossaryTerms != nil && len(s.GlossaryTerms) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GlossaryTerms", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *UpdateEnvironmentInput) SetDescription(v string) *UpdateEnvironmentInput {
	s.Description = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *UpdateEnvironmentInput) SetDomainIdentifier(v string) *UpdateEnvironmentInput {
	s.DomainIdentifier = &v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *UpdateEnvironmentInput) SetGlossaryTerms(v []*string) *UpdateEnvironmentInput {
	s.GlossaryTerms = v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *UpdateEnvironmentInput) SetIdentifier(v string) *UpdateEnvironmentInput {
	s.Identifier = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateEnvironmentInput) SetName(v string) *UpdateEnvironmentInput {
	s.Name = &v
	return s
}

type UpdateEnvironmentOutput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon Web Services account in which the environment
	// is to be updated.
	AwsAccountId *string `locationName:"awsAccountId" type:"string"`

	// The Amazon Web Services Region in which the environment is updated.
	AwsAccountRegion *string `locationName:"awsAccountRegion" type:"string"`

	// The timestamp of when the environment was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The Amazon DataZone user who created the environment.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The deployment properties to be updated as part of the UpdateEnvironment
	// action.
	DeploymentProperties *DeploymentProperties `locationName:"deploymentProperties" type:"structure"`

	// The description to be updated as part of the UpdateEnvironment action.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateEnvironmentOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the domain in which the environment is to be updated.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The environment actions to be updated as part of the UpdateEnvironment action.
	EnvironmentActions []*ConfigurableEnvironmentAction `locationName:"environmentActions" type:"list"`

	// The blueprint identifier of the environment.
	EnvironmentBlueprintId *string `locationName:"environmentBlueprintId" type:"string"`

	// The profile identifier of the environment.
	//
	// EnvironmentProfileId is a required field
	EnvironmentProfileId *string `locationName:"environmentProfileId" type:"string" required:"true"`

	// The glossary terms to be updated as part of the UpdateEnvironment action.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// The identifier of the environment that is to be updated.
	Id *string `locationName:"id" type:"string"`

	// The last deployment of the environment.
	LastDeployment *Deployment `locationName:"lastDeployment" type:"structure"`

	// The name to be updated as part of the UpdateEnvironment action.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateEnvironmentOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The project identifier of the environment.
	//
	// ProjectId is a required field
	ProjectId *string `locationName:"projectId" type:"string" required:"true"`

	// The provider identifier of the environment.
	//
	// Provider is a required field
	Provider *string `locationName:"provider" type:"string" required:"true"`

	// The provisioned resources to be updated as part of the UpdateEnvironment
	// action.
	ProvisionedResources []*Resource `locationName:"provisionedResources" type:"list"`

	// The provisioning properties to be updated as part of the UpdateEnvironment
	// action.
	ProvisioningProperties *ProvisioningProperties `locationName:"provisioningProperties" type:"structure"`

	// The status to be updated as part of the UpdateEnvironment action.
	Status *string `locationName:"status" type:"string" enum:"EnvironmentStatus"`

	// The timestamp of when the environment was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The user parameters to be updated as part of the UpdateEnvironment action.
	UserParameters []*CustomParameter `locationName:"userParameters" 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 UpdateEnvironmentOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateEnvironmentOutput) GoString() string {
	return s.String()
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateEnvironmentOutput) SetAwsAccountId(v string) *UpdateEnvironmentOutput {
	s.AwsAccountId = &v
	return s
}

// SetAwsAccountRegion sets the AwsAccountRegion field's value.
func (s *UpdateEnvironmentOutput) SetAwsAccountRegion(v string) *UpdateEnvironmentOutput {
	s.AwsAccountRegion = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *UpdateEnvironmentOutput) SetCreatedAt(v time.Time) *UpdateEnvironmentOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *UpdateEnvironmentOutput) SetCreatedBy(v string) *UpdateEnvironmentOutput {
	s.CreatedBy = &v
	return s
}

// SetDeploymentProperties sets the DeploymentProperties field's value.
func (s *UpdateEnvironmentOutput) SetDeploymentProperties(v *DeploymentProperties) *UpdateEnvironmentOutput {
	s.DeploymentProperties = v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateEnvironmentOutput) SetDescription(v string) *UpdateEnvironmentOutput {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *UpdateEnvironmentOutput) SetDomainId(v string) *UpdateEnvironmentOutput {
	s.DomainId = &v
	return s
}

// SetEnvironmentActions sets the EnvironmentActions field's value.
func (s *UpdateEnvironmentOutput) SetEnvironmentActions(v []*ConfigurableEnvironmentAction) *UpdateEnvironmentOutput {
	s.EnvironmentActions = v
	return s
}

// SetEnvironmentBlueprintId sets the EnvironmentBlueprintId field's value.
func (s *UpdateEnvironmentOutput) SetEnvironmentBlueprintId(v string) *UpdateEnvironmentOutput {
	s.EnvironmentBlueprintId = &v
	return s
}

// SetEnvironmentProfileId sets the EnvironmentProfileId field's value.
func (s *UpdateEnvironmentOutput) SetEnvironmentProfileId(v string) *UpdateEnvironmentOutput {
	s.EnvironmentProfileId = &v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *UpdateEnvironmentOutput) SetGlossaryTerms(v []*string) *UpdateEnvironmentOutput {
	s.GlossaryTerms = v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateEnvironmentOutput) SetId(v string) *UpdateEnvironmentOutput {
	s.Id = &v
	return s
}

// SetLastDeployment sets the LastDeployment field's value.
func (s *UpdateEnvironmentOutput) SetLastDeployment(v *Deployment) *UpdateEnvironmentOutput {
	s.LastDeployment = v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateEnvironmentOutput) SetName(v string) *UpdateEnvironmentOutput {
	s.Name = &v
	return s
}

// SetProjectId sets the ProjectId field's value.
func (s *UpdateEnvironmentOutput) SetProjectId(v string) *UpdateEnvironmentOutput {
	s.ProjectId = &v
	return s
}

// SetProvider sets the Provider field's value.
func (s *UpdateEnvironmentOutput) SetProvider(v string) *UpdateEnvironmentOutput {
	s.Provider = &v
	return s
}

// SetProvisionedResources sets the ProvisionedResources field's value.
func (s *UpdateEnvironmentOutput) SetProvisionedResources(v []*Resource) *UpdateEnvironmentOutput {
	s.ProvisionedResources = v
	return s
}

// SetProvisioningProperties sets the ProvisioningProperties field's value.
func (s *UpdateEnvironmentOutput) SetProvisioningProperties(v *ProvisioningProperties) *UpdateEnvironmentOutput {
	s.ProvisioningProperties = v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateEnvironmentOutput) SetStatus(v string) *UpdateEnvironmentOutput {
	s.Status = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *UpdateEnvironmentOutput) SetUpdatedAt(v time.Time) *UpdateEnvironmentOutput {
	s.UpdatedAt = &v
	return s
}

// SetUserParameters sets the UserParameters field's value.
func (s *UpdateEnvironmentOutput) SetUserParameters(v []*CustomParameter) *UpdateEnvironmentOutput {
	s.UserParameters = v
	return s
}

type UpdateEnvironmentProfileInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account in which a specified environment profile
	// is to be udpated.
	AwsAccountId *string `locationName:"awsAccountId" type:"string"`

	// The Amazon Web Services Region in which a specified environment profile is
	// to be updated.
	AwsAccountRegion *string `locationName:"awsAccountRegion" type:"string"`

	// The description to be updated as part of the UpdateEnvironmentProfile action.
	Description *string `locationName:"description" type:"string"`

	// The identifier of the Amazon DataZone domain in which an environment profile
	// is to be updated.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the environment profile that is to be updated.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// The name to be updated as part of the UpdateEnvironmentProfile action.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateEnvironmentProfileInput's
	// String and GoString methods.
	Name *string `locationName:"name" min:"1" type:"string" sensitive:"true"`

	// The user parameters to be updated as part of the UpdateEnvironmentProfile
	// action.
	UserParameters []*EnvironmentParameter `locationName:"userParameters" 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 UpdateEnvironmentProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateEnvironmentProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateEnvironmentProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateEnvironmentProfileInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateEnvironmentProfileInput) SetAwsAccountId(v string) *UpdateEnvironmentProfileInput {
	s.AwsAccountId = &v
	return s
}

// SetAwsAccountRegion sets the AwsAccountRegion field's value.
func (s *UpdateEnvironmentProfileInput) SetAwsAccountRegion(v string) *UpdateEnvironmentProfileInput {
	s.AwsAccountRegion = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateEnvironmentProfileInput) SetDescription(v string) *UpdateEnvironmentProfileInput {
	s.Description = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *UpdateEnvironmentProfileInput) SetDomainIdentifier(v string) *UpdateEnvironmentProfileInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *UpdateEnvironmentProfileInput) SetIdentifier(v string) *UpdateEnvironmentProfileInput {
	s.Identifier = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateEnvironmentProfileInput) SetName(v string) *UpdateEnvironmentProfileInput {
	s.Name = &v
	return s
}

// SetUserParameters sets the UserParameters field's value.
func (s *UpdateEnvironmentProfileInput) SetUserParameters(v []*EnvironmentParameter) *UpdateEnvironmentProfileInput {
	s.UserParameters = v
	return s
}

type UpdateEnvironmentProfileOutput struct {
	_ struct{} `type:"structure"`

	// The Amazon Web Services account in which a specified environment profile
	// is to be udpated.
	AwsAccountId *string `locationName:"awsAccountId" type:"string"`

	// The Amazon Web Services Region in which a specified environment profile is
	// to be updated.
	AwsAccountRegion *string `locationName:"awsAccountRegion" type:"string"`

	// The timestamp of when the environment profile was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The Amazon DataZone user who created the environment profile.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The description to be updated as part of the UpdateEnvironmentProfile action.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateEnvironmentProfileOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which the environment profile
	// is to be updated.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of the blueprint of the environment profile that is to be
	// updated.
	//
	// EnvironmentBlueprintId is a required field
	EnvironmentBlueprintId *string `locationName:"environmentBlueprintId" type:"string" required:"true"`

	// The identifier of the environment profile that is to be udpated.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The name to be updated as part of the UpdateEnvironmentProfile action.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateEnvironmentProfileOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The identifier of the project of the environment profile that is to be updated.
	ProjectId *string `locationName:"projectId" type:"string"`

	// The timestamp of when the environment profile was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The user parameters to be updated as part of the UpdateEnvironmentProfile
	// action.
	UserParameters []*CustomParameter `locationName:"userParameters" 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 UpdateEnvironmentProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateEnvironmentProfileOutput) GoString() string {
	return s.String()
}

// SetAwsAccountId sets the AwsAccountId field's value.
func (s *UpdateEnvironmentProfileOutput) SetAwsAccountId(v string) *UpdateEnvironmentProfileOutput {
	s.AwsAccountId = &v
	return s
}

// SetAwsAccountRegion sets the AwsAccountRegion field's value.
func (s *UpdateEnvironmentProfileOutput) SetAwsAccountRegion(v string) *UpdateEnvironmentProfileOutput {
	s.AwsAccountRegion = &v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *UpdateEnvironmentProfileOutput) SetCreatedAt(v time.Time) *UpdateEnvironmentProfileOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *UpdateEnvironmentProfileOutput) SetCreatedBy(v string) *UpdateEnvironmentProfileOutput {
	s.CreatedBy = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateEnvironmentProfileOutput) SetDescription(v string) *UpdateEnvironmentProfileOutput {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *UpdateEnvironmentProfileOutput) SetDomainId(v string) *UpdateEnvironmentProfileOutput {
	s.DomainId = &v
	return s
}

// SetEnvironmentBlueprintId sets the EnvironmentBlueprintId field's value.
func (s *UpdateEnvironmentProfileOutput) SetEnvironmentBlueprintId(v string) *UpdateEnvironmentProfileOutput {
	s.EnvironmentBlueprintId = &v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateEnvironmentProfileOutput) SetId(v string) *UpdateEnvironmentProfileOutput {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateEnvironmentProfileOutput) SetName(v string) *UpdateEnvironmentProfileOutput {
	s.Name = &v
	return s
}

// SetProjectId sets the ProjectId field's value.
func (s *UpdateEnvironmentProfileOutput) SetProjectId(v string) *UpdateEnvironmentProfileOutput {
	s.ProjectId = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *UpdateEnvironmentProfileOutput) SetUpdatedAt(v time.Time) *UpdateEnvironmentProfileOutput {
	s.UpdatedAt = &v
	return s
}

// SetUserParameters sets the UserParameters field's value.
func (s *UpdateEnvironmentProfileOutput) SetUserParameters(v []*CustomParameter) *UpdateEnvironmentProfileOutput {
	s.UserParameters = v
	return s
}

type UpdateGlossaryInput struct {
	_ struct{} `type:"structure"`

	// A unique, case-sensitive identifier that is provided to ensure the idempotency
	// of the request.
	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`

	// The description to be updated as part of the UpdateGlossary action.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateGlossaryInput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which a business glossary
	// is to be updated.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the business glossary to be updated.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// The name to be updated as part of the UpdateGlossary action.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateGlossaryInput's
	// String and GoString methods.
	Name *string `locationName:"name" min:"1" type:"string" sensitive:"true"`

	// The status to be updated as part of the UpdateGlossary action.
	Status *string `locationName:"status" type:"string" enum:"GlossaryStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGlossaryInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGlossaryInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateGlossaryInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateGlossaryInput"}
	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
	}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetClientToken sets the ClientToken field's value.
func (s *UpdateGlossaryInput) SetClientToken(v string) *UpdateGlossaryInput {
	s.ClientToken = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateGlossaryInput) SetDescription(v string) *UpdateGlossaryInput {
	s.Description = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *UpdateGlossaryInput) SetDomainIdentifier(v string) *UpdateGlossaryInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *UpdateGlossaryInput) SetIdentifier(v string) *UpdateGlossaryInput {
	s.Identifier = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateGlossaryInput) SetName(v string) *UpdateGlossaryInput {
	s.Name = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateGlossaryInput) SetStatus(v string) *UpdateGlossaryInput {
	s.Status = &v
	return s
}

type UpdateGlossaryOutput struct {
	_ struct{} `type:"structure"`

	// The description to be updated as part of the UpdateGlossary action.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateGlossaryOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which a business glossary
	// is to be updated.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of the business glossary that is to be updated.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The name to be updated as part of the UpdateGlossary action.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateGlossaryOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The identifier of the project in which to update a business glossary.
	//
	// OwningProjectId is a required field
	OwningProjectId *string `locationName:"owningProjectId" type:"string" required:"true"`

	// The status to be updated as part of the UpdateGlossary action.
	Status *string `locationName:"status" type:"string" enum:"GlossaryStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGlossaryOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGlossaryOutput) GoString() string {
	return s.String()
}

// SetDescription sets the Description field's value.
func (s *UpdateGlossaryOutput) SetDescription(v string) *UpdateGlossaryOutput {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *UpdateGlossaryOutput) SetDomainId(v string) *UpdateGlossaryOutput {
	s.DomainId = &v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateGlossaryOutput) SetId(v string) *UpdateGlossaryOutput {
	s.Id = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateGlossaryOutput) SetName(v string) *UpdateGlossaryOutput {
	s.Name = &v
	return s
}

// SetOwningProjectId sets the OwningProjectId field's value.
func (s *UpdateGlossaryOutput) SetOwningProjectId(v string) *UpdateGlossaryOutput {
	s.OwningProjectId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateGlossaryOutput) SetStatus(v string) *UpdateGlossaryOutput {
	s.Status = &v
	return s
}

type UpdateGlossaryTermInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon DataZone domain in which a business glossary
	// term is to be updated.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the business glossary in which a term is to be updated.
	GlossaryIdentifier *string `locationName:"glossaryIdentifier" type:"string"`

	// The identifier of the business glossary term that is to be updated.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// The long description to be updated as part of the UpdateGlossaryTerm action.
	//
	// LongDescription is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateGlossaryTermInput's
	// String and GoString methods.
	LongDescription *string `locationName:"longDescription" type:"string" sensitive:"true"`

	// The name to be updated as part of the UpdateGlossaryTerm action.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateGlossaryTermInput's
	// String and GoString methods.
	Name *string `locationName:"name" min:"1" type:"string" sensitive:"true"`

	// The short description to be updated as part of the UpdateGlossaryTerm action.
	//
	// ShortDescription is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateGlossaryTermInput's
	// String and GoString methods.
	ShortDescription *string `locationName:"shortDescription" type:"string" sensitive:"true"`

	// The status to be updated as part of the UpdateGlossaryTerm action.
	Status *string `locationName:"status" type:"string" enum:"GlossaryTermStatus"`

	// The term relations to be updated as part of the UpdateGlossaryTerm action.
	TermRelations *TermRelations `locationName:"termRelations" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGlossaryTermInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGlossaryTermInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateGlossaryTermInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateGlossaryTermInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.TermRelations != nil {
		if err := s.TermRelations.Validate(); err != nil {
			invalidParams.AddNested("TermRelations", err.(request.ErrInvalidParams))
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *UpdateGlossaryTermInput) SetDomainIdentifier(v string) *UpdateGlossaryTermInput {
	s.DomainIdentifier = &v
	return s
}

// SetGlossaryIdentifier sets the GlossaryIdentifier field's value.
func (s *UpdateGlossaryTermInput) SetGlossaryIdentifier(v string) *UpdateGlossaryTermInput {
	s.GlossaryIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *UpdateGlossaryTermInput) SetIdentifier(v string) *UpdateGlossaryTermInput {
	s.Identifier = &v
	return s
}

// SetLongDescription sets the LongDescription field's value.
func (s *UpdateGlossaryTermInput) SetLongDescription(v string) *UpdateGlossaryTermInput {
	s.LongDescription = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateGlossaryTermInput) SetName(v string) *UpdateGlossaryTermInput {
	s.Name = &v
	return s
}

// SetShortDescription sets the ShortDescription field's value.
func (s *UpdateGlossaryTermInput) SetShortDescription(v string) *UpdateGlossaryTermInput {
	s.ShortDescription = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateGlossaryTermInput) SetStatus(v string) *UpdateGlossaryTermInput {
	s.Status = &v
	return s
}

// SetTermRelations sets the TermRelations field's value.
func (s *UpdateGlossaryTermInput) SetTermRelations(v *TermRelations) *UpdateGlossaryTermInput {
	s.TermRelations = v
	return s
}

type UpdateGlossaryTermOutput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon DataZone domain in which a business glossary
	// term is to be updated.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of the business glossary in which a term is to be updated.
	//
	// GlossaryId is a required field
	GlossaryId *string `locationName:"glossaryId" type:"string" required:"true"`

	// The identifier of the business glossary term that is to be updated.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The long description to be updated as part of the UpdateGlossaryTerm action.
	//
	// LongDescription is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateGlossaryTermOutput's
	// String and GoString methods.
	LongDescription *string `locationName:"longDescription" type:"string" sensitive:"true"`

	// The name to be updated as part of the UpdateGlossaryTerm action.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateGlossaryTermOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The short description to be updated as part of the UpdateGlossaryTerm action.
	//
	// ShortDescription is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateGlossaryTermOutput's
	// String and GoString methods.
	ShortDescription *string `locationName:"shortDescription" type:"string" sensitive:"true"`

	// The status to be updated as part of the UpdateGlossaryTerm action.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"GlossaryTermStatus"`

	// The term relations to be updated as part of the UpdateGlossaryTerm action.
	TermRelations *TermRelations `locationName:"termRelations" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGlossaryTermOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGlossaryTermOutput) GoString() string {
	return s.String()
}

// SetDomainId sets the DomainId field's value.
func (s *UpdateGlossaryTermOutput) SetDomainId(v string) *UpdateGlossaryTermOutput {
	s.DomainId = &v
	return s
}

// SetGlossaryId sets the GlossaryId field's value.
func (s *UpdateGlossaryTermOutput) SetGlossaryId(v string) *UpdateGlossaryTermOutput {
	s.GlossaryId = &v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateGlossaryTermOutput) SetId(v string) *UpdateGlossaryTermOutput {
	s.Id = &v
	return s
}

// SetLongDescription sets the LongDescription field's value.
func (s *UpdateGlossaryTermOutput) SetLongDescription(v string) *UpdateGlossaryTermOutput {
	s.LongDescription = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateGlossaryTermOutput) SetName(v string) *UpdateGlossaryTermOutput {
	s.Name = &v
	return s
}

// SetShortDescription sets the ShortDescription field's value.
func (s *UpdateGlossaryTermOutput) SetShortDescription(v string) *UpdateGlossaryTermOutput {
	s.ShortDescription = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateGlossaryTermOutput) SetStatus(v string) *UpdateGlossaryTermOutput {
	s.Status = &v
	return s
}

// SetTermRelations sets the TermRelations field's value.
func (s *UpdateGlossaryTermOutput) SetTermRelations(v *TermRelations) *UpdateGlossaryTermOutput {
	s.TermRelations = v
	return s
}

type UpdateGroupProfileInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon DataZone domain in which a group profile is
	// updated.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the group profile that is updated.
	//
	// GroupIdentifier is a required field
	GroupIdentifier *string `location:"uri" locationName:"groupIdentifier" type:"string" required:"true"`

	// The status of the group profile that is updated.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"GroupProfileStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGroupProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGroupProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateGroupProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateGroupProfileInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.GroupIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("GroupIdentifier"))
	}
	if s.GroupIdentifier != nil && len(*s.GroupIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GroupIdentifier", 1))
	}
	if s.Status == nil {
		invalidParams.Add(request.NewErrParamRequired("Status"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *UpdateGroupProfileInput) SetDomainIdentifier(v string) *UpdateGroupProfileInput {
	s.DomainIdentifier = &v
	return s
}

// SetGroupIdentifier sets the GroupIdentifier field's value.
func (s *UpdateGroupProfileInput) SetGroupIdentifier(v string) *UpdateGroupProfileInput {
	s.GroupIdentifier = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateGroupProfileInput) SetStatus(v string) *UpdateGroupProfileInput {
	s.Status = &v
	return s
}

type UpdateGroupProfileOutput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon DataZone domain in which a group profile is
	// updated.
	DomainId *string `locationName:"domainId" type:"string"`

	// The name of the group profile that is updated.
	//
	// GroupName is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateGroupProfileOutput's
	// String and GoString methods.
	GroupName *string `locationName:"groupName" min:"1" type:"string" sensitive:"true"`

	// The identifier of the group profile that is updated.
	Id *string `locationName:"id" type:"string"`

	// The status of the group profile that is updated.
	Status *string `locationName:"status" type:"string" enum:"GroupProfileStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGroupProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateGroupProfileOutput) GoString() string {
	return s.String()
}

// SetDomainId sets the DomainId field's value.
func (s *UpdateGroupProfileOutput) SetDomainId(v string) *UpdateGroupProfileOutput {
	s.DomainId = &v
	return s
}

// SetGroupName sets the GroupName field's value.
func (s *UpdateGroupProfileOutput) SetGroupName(v string) *UpdateGroupProfileOutput {
	s.GroupName = &v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateGroupProfileOutput) SetId(v string) *UpdateGroupProfileOutput {
	s.Id = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateGroupProfileOutput) SetStatus(v string) *UpdateGroupProfileOutput {
	s.Status = &v
	return s
}

type UpdateProjectInput struct {
	_ struct{} `type:"structure"`

	// The description to be updated as part of the UpdateProject action.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateProjectInput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which a project is to be
	// updated.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The glossary terms to be updated as part of the UpdateProject action.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// The identifier of the project that is to be updated.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// The name to be updated as part of the UpdateProject action.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateProjectInput's
	// String and GoString methods.
	Name *string `locationName:"name" min:"1" type:"string" sensitive:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateProjectInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateProjectInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateProjectInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateProjectInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.GlossaryTerms != nil && len(s.GlossaryTerms) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("GlossaryTerms", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDescription sets the Description field's value.
func (s *UpdateProjectInput) SetDescription(v string) *UpdateProjectInput {
	s.Description = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *UpdateProjectInput) SetDomainIdentifier(v string) *UpdateProjectInput {
	s.DomainIdentifier = &v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *UpdateProjectInput) SetGlossaryTerms(v []*string) *UpdateProjectInput {
	s.GlossaryTerms = v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *UpdateProjectInput) SetIdentifier(v string) *UpdateProjectInput {
	s.Identifier = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateProjectInput) SetName(v string) *UpdateProjectInput {
	s.Name = &v
	return s
}

type UpdateProjectOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the project was created.
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" timestampFormat:"iso8601"`

	// The Amazon DataZone user who created the project.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The description of the project that is to be updated.
	//
	// Description is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateProjectOutput's
	// String and GoString methods.
	Description *string `locationName:"description" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which a project is updated.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// Reasons for failed project deletion
	FailureReasons []*ProjectDeletionError `locationName:"failureReasons" type:"list"`

	// The glossary terms of the project that are to be updated.
	GlossaryTerms []*string `locationName:"glossaryTerms" min:"1" type:"list"`

	// The identifier of the project that is to be updated.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The timestamp of when the project was last updated.
	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" timestampFormat:"iso8601"`

	// The name of the project that is to be updated.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateProjectOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// Status of the project
	ProjectStatus *string `locationName:"projectStatus" type:"string" enum:"ProjectStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateProjectOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateProjectOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *UpdateProjectOutput) SetCreatedAt(v time.Time) *UpdateProjectOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *UpdateProjectOutput) SetCreatedBy(v string) *UpdateProjectOutput {
	s.CreatedBy = &v
	return s
}

// SetDescription sets the Description field's value.
func (s *UpdateProjectOutput) SetDescription(v string) *UpdateProjectOutput {
	s.Description = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *UpdateProjectOutput) SetDomainId(v string) *UpdateProjectOutput {
	s.DomainId = &v
	return s
}

// SetFailureReasons sets the FailureReasons field's value.
func (s *UpdateProjectOutput) SetFailureReasons(v []*ProjectDeletionError) *UpdateProjectOutput {
	s.FailureReasons = v
	return s
}

// SetGlossaryTerms sets the GlossaryTerms field's value.
func (s *UpdateProjectOutput) SetGlossaryTerms(v []*string) *UpdateProjectOutput {
	s.GlossaryTerms = v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateProjectOutput) SetId(v string) *UpdateProjectOutput {
	s.Id = &v
	return s
}

// SetLastUpdatedAt sets the LastUpdatedAt field's value.
func (s *UpdateProjectOutput) SetLastUpdatedAt(v time.Time) *UpdateProjectOutput {
	s.LastUpdatedAt = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateProjectOutput) SetName(v string) *UpdateProjectOutput {
	s.Name = &v
	return s
}

// SetProjectStatus sets the ProjectStatus field's value.
func (s *UpdateProjectOutput) SetProjectStatus(v string) *UpdateProjectOutput {
	s.ProjectStatus = &v
	return s
}

type UpdateSubscriptionGrantStatusInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the asset the subscription grant status of which is to
	// be updated.
	//
	// AssetIdentifier is a required field
	AssetIdentifier *string `location:"uri" locationName:"assetIdentifier" type:"string" required:"true"`

	// The identifier of the Amazon DataZone domain in which a subscription grant
	// status is to be updated.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// Specifies the error message that is returned if the operation cannot be successfully
	// completed.
	FailureCause *FailureCause `locationName:"failureCause" type:"structure"`

	// The identifier of the subscription grant the status of which is to be updated.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// The status to be updated as part of the UpdateSubscriptionGrantStatus action.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionGrantStatus"`

	// The target name to be updated as part of the UpdateSubscriptionGrantStatus
	// action.
	TargetName *string `locationName:"targetName" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSubscriptionGrantStatusInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSubscriptionGrantStatusInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateSubscriptionGrantStatusInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateSubscriptionGrantStatusInput"}
	if s.AssetIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("AssetIdentifier"))
	}
	if s.AssetIdentifier != nil && len(*s.AssetIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AssetIdentifier", 1))
	}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}
	if s.Status == nil {
		invalidParams.Add(request.NewErrParamRequired("Status"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetAssetIdentifier sets the AssetIdentifier field's value.
func (s *UpdateSubscriptionGrantStatusInput) SetAssetIdentifier(v string) *UpdateSubscriptionGrantStatusInput {
	s.AssetIdentifier = &v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *UpdateSubscriptionGrantStatusInput) SetDomainIdentifier(v string) *UpdateSubscriptionGrantStatusInput {
	s.DomainIdentifier = &v
	return s
}

// SetFailureCause sets the FailureCause field's value.
func (s *UpdateSubscriptionGrantStatusInput) SetFailureCause(v *FailureCause) *UpdateSubscriptionGrantStatusInput {
	s.FailureCause = v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *UpdateSubscriptionGrantStatusInput) SetIdentifier(v string) *UpdateSubscriptionGrantStatusInput {
	s.Identifier = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateSubscriptionGrantStatusInput) SetStatus(v string) *UpdateSubscriptionGrantStatusInput {
	s.Status = &v
	return s
}

// SetTargetName sets the TargetName field's value.
func (s *UpdateSubscriptionGrantStatusInput) SetTargetName(v string) *UpdateSubscriptionGrantStatusInput {
	s.TargetName = &v
	return s
}

type UpdateSubscriptionGrantStatusOutput struct {
	_ struct{} `type:"structure"`

	Assets []*SubscribedAsset `locationName:"assets" type:"list"`

	// The timestamp of when the subscription grant status was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The Amazon DataZone domain user who created the subscription grant status.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The identifier of the Amazon DataZone domain in which a subscription grant
	// status is to be updated.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The granted entity to be updated as part of the UpdateSubscriptionGrantStatus
	// action.
	//
	// GrantedEntity is a required field
	GrantedEntity *GrantedEntity `locationName:"grantedEntity" type:"structure" required:"true"`

	// The identifier of the subscription grant.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The status to be updated as part of the UpdateSubscriptionGrantStatus action.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionGrantOverallStatus"`

	// The identifier of the subscription.
	SubscriptionId *string `locationName:"subscriptionId" type:"string"`

	// The identifier of the subscription target whose subscription grant status
	// is to be updated.
	//
	// SubscriptionTargetId is a required field
	SubscriptionTargetId *string `locationName:"subscriptionTargetId" type:"string" required:"true"`

	// The timestamp of when the subscription grant status is to be updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who updated the subscription grant status.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSubscriptionGrantStatusOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSubscriptionGrantStatusOutput) GoString() string {
	return s.String()
}

// SetAssets sets the Assets field's value.
func (s *UpdateSubscriptionGrantStatusOutput) SetAssets(v []*SubscribedAsset) *UpdateSubscriptionGrantStatusOutput {
	s.Assets = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *UpdateSubscriptionGrantStatusOutput) SetCreatedAt(v time.Time) *UpdateSubscriptionGrantStatusOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *UpdateSubscriptionGrantStatusOutput) SetCreatedBy(v string) *UpdateSubscriptionGrantStatusOutput {
	s.CreatedBy = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *UpdateSubscriptionGrantStatusOutput) SetDomainId(v string) *UpdateSubscriptionGrantStatusOutput {
	s.DomainId = &v
	return s
}

// SetGrantedEntity sets the GrantedEntity field's value.
func (s *UpdateSubscriptionGrantStatusOutput) SetGrantedEntity(v *GrantedEntity) *UpdateSubscriptionGrantStatusOutput {
	s.GrantedEntity = v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateSubscriptionGrantStatusOutput) SetId(v string) *UpdateSubscriptionGrantStatusOutput {
	s.Id = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateSubscriptionGrantStatusOutput) SetStatus(v string) *UpdateSubscriptionGrantStatusOutput {
	s.Status = &v
	return s
}

// SetSubscriptionId sets the SubscriptionId field's value.
func (s *UpdateSubscriptionGrantStatusOutput) SetSubscriptionId(v string) *UpdateSubscriptionGrantStatusOutput {
	s.SubscriptionId = &v
	return s
}

// SetSubscriptionTargetId sets the SubscriptionTargetId field's value.
func (s *UpdateSubscriptionGrantStatusOutput) SetSubscriptionTargetId(v string) *UpdateSubscriptionGrantStatusOutput {
	s.SubscriptionTargetId = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *UpdateSubscriptionGrantStatusOutput) SetUpdatedAt(v time.Time) *UpdateSubscriptionGrantStatusOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *UpdateSubscriptionGrantStatusOutput) SetUpdatedBy(v string) *UpdateSubscriptionGrantStatusOutput {
	s.UpdatedBy = &v
	return s
}

type UpdateSubscriptionRequestInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon DataZone domain in which a subscription request
	// is to be updated.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the subscription request that is to be updated.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// The reason for the UpdateSubscriptionRequest action.
	//
	// RequestReason is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateSubscriptionRequestInput's
	// String and GoString methods.
	//
	// RequestReason is a required field
	RequestReason *string `locationName:"requestReason" min:"1" type:"string" required:"true" sensitive:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSubscriptionRequestInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSubscriptionRequestInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateSubscriptionRequestInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateSubscriptionRequestInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}
	if s.RequestReason == nil {
		invalidParams.Add(request.NewErrParamRequired("RequestReason"))
	}
	if s.RequestReason != nil && len(*s.RequestReason) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("RequestReason", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *UpdateSubscriptionRequestInput) SetDomainIdentifier(v string) *UpdateSubscriptionRequestInput {
	s.DomainIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *UpdateSubscriptionRequestInput) SetIdentifier(v string) *UpdateSubscriptionRequestInput {
	s.Identifier = &v
	return s
}

// SetRequestReason sets the RequestReason field's value.
func (s *UpdateSubscriptionRequestInput) SetRequestReason(v string) *UpdateSubscriptionRequestInput {
	s.RequestReason = &v
	return s
}

type UpdateSubscriptionRequestOutput struct {
	_ struct{} `type:"structure"`

	// The timestamp of when the subscription request was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who created the subscription request.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The decision comment of the UpdateSubscriptionRequest action.
	//
	// DecisionComment is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateSubscriptionRequestOutput's
	// String and GoString methods.
	DecisionComment *string `locationName:"decisionComment" min:"1" type:"string" sensitive:"true"`

	// The identifier of the Amazon DataZone domain in which a subscription request
	// is to be updated.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of the subscription request that is to be updated.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The reason for the UpdateSubscriptionRequest action.
	//
	// RequestReason is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateSubscriptionRequestOutput's
	// String and GoString methods.
	//
	// RequestReason is a required field
	RequestReason *string `locationName:"requestReason" min:"1" type:"string" required:"true" sensitive:"true"`

	// The identifier of the Amazon DataZone user who reviews the subscription request.
	ReviewerId *string `locationName:"reviewerId" type:"string"`

	// The status of the subscription request.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"SubscriptionRequestStatus"`

	// The subscribed listings of the subscription request.
	//
	// SubscribedListings is a required field
	SubscribedListings []*SubscribedListing `locationName:"subscribedListings" min:"1" type:"list" required:"true"`

	// The subscribed principals of the subscription request.
	//
	// SubscribedPrincipals is a required field
	SubscribedPrincipals []*SubscribedPrincipal `locationName:"subscribedPrincipals" min:"1" type:"list" required:"true"`

	// The timestamp of when the subscription request was updated.
	//
	// UpdatedAt is a required field
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who updated the subscription request.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSubscriptionRequestOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSubscriptionRequestOutput) GoString() string {
	return s.String()
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *UpdateSubscriptionRequestOutput) SetCreatedAt(v time.Time) *UpdateSubscriptionRequestOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *UpdateSubscriptionRequestOutput) SetCreatedBy(v string) *UpdateSubscriptionRequestOutput {
	s.CreatedBy = &v
	return s
}

// SetDecisionComment sets the DecisionComment field's value.
func (s *UpdateSubscriptionRequestOutput) SetDecisionComment(v string) *UpdateSubscriptionRequestOutput {
	s.DecisionComment = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *UpdateSubscriptionRequestOutput) SetDomainId(v string) *UpdateSubscriptionRequestOutput {
	s.DomainId = &v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateSubscriptionRequestOutput) SetId(v string) *UpdateSubscriptionRequestOutput {
	s.Id = &v
	return s
}

// SetRequestReason sets the RequestReason field's value.
func (s *UpdateSubscriptionRequestOutput) SetRequestReason(v string) *UpdateSubscriptionRequestOutput {
	s.RequestReason = &v
	return s
}

// SetReviewerId sets the ReviewerId field's value.
func (s *UpdateSubscriptionRequestOutput) SetReviewerId(v string) *UpdateSubscriptionRequestOutput {
	s.ReviewerId = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateSubscriptionRequestOutput) SetStatus(v string) *UpdateSubscriptionRequestOutput {
	s.Status = &v
	return s
}

// SetSubscribedListings sets the SubscribedListings field's value.
func (s *UpdateSubscriptionRequestOutput) SetSubscribedListings(v []*SubscribedListing) *UpdateSubscriptionRequestOutput {
	s.SubscribedListings = v
	return s
}

// SetSubscribedPrincipals sets the SubscribedPrincipals field's value.
func (s *UpdateSubscriptionRequestOutput) SetSubscribedPrincipals(v []*SubscribedPrincipal) *UpdateSubscriptionRequestOutput {
	s.SubscribedPrincipals = v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *UpdateSubscriptionRequestOutput) SetUpdatedAt(v time.Time) *UpdateSubscriptionRequestOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *UpdateSubscriptionRequestOutput) SetUpdatedBy(v string) *UpdateSubscriptionRequestOutput {
	s.UpdatedBy = &v
	return s
}

type UpdateSubscriptionTargetInput struct {
	_ struct{} `type:"structure"`

	// The applicable asset types to be updated as part of the UpdateSubscriptionTarget
	// action.
	ApplicableAssetTypes []*string `locationName:"applicableAssetTypes" type:"list"`

	// The authorized principals to be updated as part of the UpdateSubscriptionTarget
	// action.
	AuthorizedPrincipals []*string `locationName:"authorizedPrincipals" min:"1" type:"list"`

	// The identifier of the Amazon DataZone domain in which a subscription target
	// is to be updated.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The identifier of the environment in which a subscription target is to be
	// updated.
	//
	// EnvironmentIdentifier is a required field
	EnvironmentIdentifier *string `location:"uri" locationName:"environmentIdentifier" type:"string" required:"true"`

	// Identifier of the subscription target that is to be updated.
	//
	// Identifier is a required field
	Identifier *string `location:"uri" locationName:"identifier" type:"string" required:"true"`

	// The manage access role to be updated as part of the UpdateSubscriptionTarget
	// action.
	ManageAccessRole *string `locationName:"manageAccessRole" type:"string"`

	// The name to be updated as part of the UpdateSubscriptionTarget action.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateSubscriptionTargetInput's
	// String and GoString methods.
	Name *string `locationName:"name" min:"1" type:"string" sensitive:"true"`

	// The provider to be updated as part of the UpdateSubscriptionTarget action.
	Provider *string `locationName:"provider" type:"string"`

	// The configuration to be updated as part of the UpdateSubscriptionTarget action.
	SubscriptionTargetConfig []*SubscriptionTargetForm `locationName:"subscriptionTargetConfig" 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 UpdateSubscriptionTargetInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSubscriptionTargetInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateSubscriptionTargetInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateSubscriptionTargetInput"}
	if s.AuthorizedPrincipals != nil && len(s.AuthorizedPrincipals) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("AuthorizedPrincipals", 1))
	}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.EnvironmentIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("EnvironmentIdentifier"))
	}
	if s.EnvironmentIdentifier != nil && len(*s.EnvironmentIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("EnvironmentIdentifier", 1))
	}
	if s.Identifier == nil {
		invalidParams.Add(request.NewErrParamRequired("Identifier"))
	}
	if s.Identifier != nil && len(*s.Identifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Identifier", 1))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.SubscriptionTargetConfig != nil {
		for i, v := range s.SubscriptionTargetConfig {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SubscriptionTargetConfig", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApplicableAssetTypes sets the ApplicableAssetTypes field's value.
func (s *UpdateSubscriptionTargetInput) SetApplicableAssetTypes(v []*string) *UpdateSubscriptionTargetInput {
	s.ApplicableAssetTypes = v
	return s
}

// SetAuthorizedPrincipals sets the AuthorizedPrincipals field's value.
func (s *UpdateSubscriptionTargetInput) SetAuthorizedPrincipals(v []*string) *UpdateSubscriptionTargetInput {
	s.AuthorizedPrincipals = v
	return s
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *UpdateSubscriptionTargetInput) SetDomainIdentifier(v string) *UpdateSubscriptionTargetInput {
	s.DomainIdentifier = &v
	return s
}

// SetEnvironmentIdentifier sets the EnvironmentIdentifier field's value.
func (s *UpdateSubscriptionTargetInput) SetEnvironmentIdentifier(v string) *UpdateSubscriptionTargetInput {
	s.EnvironmentIdentifier = &v
	return s
}

// SetIdentifier sets the Identifier field's value.
func (s *UpdateSubscriptionTargetInput) SetIdentifier(v string) *UpdateSubscriptionTargetInput {
	s.Identifier = &v
	return s
}

// SetManageAccessRole sets the ManageAccessRole field's value.
func (s *UpdateSubscriptionTargetInput) SetManageAccessRole(v string) *UpdateSubscriptionTargetInput {
	s.ManageAccessRole = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateSubscriptionTargetInput) SetName(v string) *UpdateSubscriptionTargetInput {
	s.Name = &v
	return s
}

// SetProvider sets the Provider field's value.
func (s *UpdateSubscriptionTargetInput) SetProvider(v string) *UpdateSubscriptionTargetInput {
	s.Provider = &v
	return s
}

// SetSubscriptionTargetConfig sets the SubscriptionTargetConfig field's value.
func (s *UpdateSubscriptionTargetInput) SetSubscriptionTargetConfig(v []*SubscriptionTargetForm) *UpdateSubscriptionTargetInput {
	s.SubscriptionTargetConfig = v
	return s
}

type UpdateSubscriptionTargetOutput struct {
	_ struct{} `type:"structure"`

	// The applicable asset types to be updated as part of the UpdateSubscriptionTarget
	// action.
	//
	// ApplicableAssetTypes is a required field
	ApplicableAssetTypes []*string `locationName:"applicableAssetTypes" type:"list" required:"true"`

	// The authorized principals to be updated as part of the UpdateSubscriptionTarget
	// action.
	//
	// AuthorizedPrincipals is a required field
	AuthorizedPrincipals []*string `locationName:"authorizedPrincipals" min:"1" type:"list" required:"true"`

	// The timestamp of when a subscription target was created.
	//
	// CreatedAt is a required field
	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`

	// The Amazon DataZone user who created the subscription target.
	//
	// CreatedBy is a required field
	CreatedBy *string `locationName:"createdBy" type:"string" required:"true"`

	// The identifier of the Amazon DataZone domain in which a subscription target
	// is to be updated.
	//
	// DomainId is a required field
	DomainId *string `locationName:"domainId" type:"string" required:"true"`

	// The identifier of the environment in which a subscription target is to be
	// updated.
	//
	// EnvironmentId is a required field
	EnvironmentId *string `locationName:"environmentId" type:"string" required:"true"`

	// Identifier of the subscription target that is to be updated.
	//
	// Id is a required field
	Id *string `locationName:"id" type:"string" required:"true"`

	// The manage access role to be updated as part of the UpdateSubscriptionTarget
	// action.
	//
	// ManageAccessRole is a required field
	ManageAccessRole *string `locationName:"manageAccessRole" type:"string" required:"true"`

	// The name to be updated as part of the UpdateSubscriptionTarget action.
	//
	// Name is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by UpdateSubscriptionTargetOutput's
	// String and GoString methods.
	//
	// Name is a required field
	Name *string `locationName:"name" min:"1" type:"string" required:"true" sensitive:"true"`

	// The identifier of the project in which a subscription target is to be updated.
	//
	// ProjectId is a required field
	ProjectId *string `locationName:"projectId" type:"string" required:"true"`

	// The provider to be updated as part of the UpdateSubscriptionTarget action.
	//
	// Provider is a required field
	Provider *string `locationName:"provider" type:"string" required:"true"`

	// The configuration to be updated as part of the UpdateSubscriptionTarget action.
	//
	// SubscriptionTargetConfig is a required field
	SubscriptionTargetConfig []*SubscriptionTargetForm `locationName:"subscriptionTargetConfig" type:"list" required:"true"`

	// The type to be updated as part of the UpdateSubscriptionTarget action.
	//
	// Type is a required field
	Type *string `locationName:"type" type:"string" required:"true"`

	// The timestamp of when the subscription target was updated.
	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`

	// The Amazon DataZone user who updated the subscription target.
	UpdatedBy *string `locationName:"updatedBy" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSubscriptionTargetOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateSubscriptionTargetOutput) GoString() string {
	return s.String()
}

// SetApplicableAssetTypes sets the ApplicableAssetTypes field's value.
func (s *UpdateSubscriptionTargetOutput) SetApplicableAssetTypes(v []*string) *UpdateSubscriptionTargetOutput {
	s.ApplicableAssetTypes = v
	return s
}

// SetAuthorizedPrincipals sets the AuthorizedPrincipals field's value.
func (s *UpdateSubscriptionTargetOutput) SetAuthorizedPrincipals(v []*string) *UpdateSubscriptionTargetOutput {
	s.AuthorizedPrincipals = v
	return s
}

// SetCreatedAt sets the CreatedAt field's value.
func (s *UpdateSubscriptionTargetOutput) SetCreatedAt(v time.Time) *UpdateSubscriptionTargetOutput {
	s.CreatedAt = &v
	return s
}

// SetCreatedBy sets the CreatedBy field's value.
func (s *UpdateSubscriptionTargetOutput) SetCreatedBy(v string) *UpdateSubscriptionTargetOutput {
	s.CreatedBy = &v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *UpdateSubscriptionTargetOutput) SetDomainId(v string) *UpdateSubscriptionTargetOutput {
	s.DomainId = &v
	return s
}

// SetEnvironmentId sets the EnvironmentId field's value.
func (s *UpdateSubscriptionTargetOutput) SetEnvironmentId(v string) *UpdateSubscriptionTargetOutput {
	s.EnvironmentId = &v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateSubscriptionTargetOutput) SetId(v string) *UpdateSubscriptionTargetOutput {
	s.Id = &v
	return s
}

// SetManageAccessRole sets the ManageAccessRole field's value.
func (s *UpdateSubscriptionTargetOutput) SetManageAccessRole(v string) *UpdateSubscriptionTargetOutput {
	s.ManageAccessRole = &v
	return s
}

// SetName sets the Name field's value.
func (s *UpdateSubscriptionTargetOutput) SetName(v string) *UpdateSubscriptionTargetOutput {
	s.Name = &v
	return s
}

// SetProjectId sets the ProjectId field's value.
func (s *UpdateSubscriptionTargetOutput) SetProjectId(v string) *UpdateSubscriptionTargetOutput {
	s.ProjectId = &v
	return s
}

// SetProvider sets the Provider field's value.
func (s *UpdateSubscriptionTargetOutput) SetProvider(v string) *UpdateSubscriptionTargetOutput {
	s.Provider = &v
	return s
}

// SetSubscriptionTargetConfig sets the SubscriptionTargetConfig field's value.
func (s *UpdateSubscriptionTargetOutput) SetSubscriptionTargetConfig(v []*SubscriptionTargetForm) *UpdateSubscriptionTargetOutput {
	s.SubscriptionTargetConfig = v
	return s
}

// SetType sets the Type field's value.
func (s *UpdateSubscriptionTargetOutput) SetType(v string) *UpdateSubscriptionTargetOutput {
	s.Type = &v
	return s
}

// SetUpdatedAt sets the UpdatedAt field's value.
func (s *UpdateSubscriptionTargetOutput) SetUpdatedAt(v time.Time) *UpdateSubscriptionTargetOutput {
	s.UpdatedAt = &v
	return s
}

// SetUpdatedBy sets the UpdatedBy field's value.
func (s *UpdateSubscriptionTargetOutput) SetUpdatedBy(v string) *UpdateSubscriptionTargetOutput {
	s.UpdatedBy = &v
	return s
}

type UpdateUserProfileInput struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon DataZone domain in which a user profile is updated.
	//
	// DomainIdentifier is a required field
	DomainIdentifier *string `location:"uri" locationName:"domainIdentifier" type:"string" required:"true"`

	// The status of the user profile that are to be updated.
	//
	// Status is a required field
	Status *string `locationName:"status" type:"string" required:"true" enum:"UserProfileStatus"`

	// The type of the user profile that are to be updated.
	Type *string `locationName:"type" type:"string" enum:"UserProfileType"`

	// The identifier of the user whose user profile is to be updated.
	//
	// UserIdentifier is a required field
	UserIdentifier *string `location:"uri" locationName:"userIdentifier" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserProfileInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserProfileInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateUserProfileInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateUserProfileInput"}
	if s.DomainIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("DomainIdentifier"))
	}
	if s.DomainIdentifier != nil && len(*s.DomainIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DomainIdentifier", 1))
	}
	if s.Status == nil {
		invalidParams.Add(request.NewErrParamRequired("Status"))
	}
	if s.UserIdentifier == nil {
		invalidParams.Add(request.NewErrParamRequired("UserIdentifier"))
	}
	if s.UserIdentifier != nil && len(*s.UserIdentifier) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("UserIdentifier", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetDomainIdentifier sets the DomainIdentifier field's value.
func (s *UpdateUserProfileInput) SetDomainIdentifier(v string) *UpdateUserProfileInput {
	s.DomainIdentifier = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateUserProfileInput) SetStatus(v string) *UpdateUserProfileInput {
	s.Status = &v
	return s
}

// SetType sets the Type field's value.
func (s *UpdateUserProfileInput) SetType(v string) *UpdateUserProfileInput {
	s.Type = &v
	return s
}

// SetUserIdentifier sets the UserIdentifier field's value.
func (s *UpdateUserProfileInput) SetUserIdentifier(v string) *UpdateUserProfileInput {
	s.UserIdentifier = &v
	return s
}

type UpdateUserProfileOutput struct {
	_ struct{} `type:"structure"`

	// The details of the user profile in Amazon DataZone.
	Details *UserProfileDetails `locationName:"details" type:"structure"`

	// The identifier of the Amazon DataZone domain in which a user profile is updated.
	DomainId *string `locationName:"domainId" type:"string"`

	// The identifier of the user profile.
	Id *string `locationName:"id" type:"string"`

	// The status of the user profile.
	Status *string `locationName:"status" type:"string" enum:"UserProfileStatus"`

	// The type of the user profile.
	Type *string `locationName:"type" type:"string" enum:"UserProfileType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserProfileOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateUserProfileOutput) GoString() string {
	return s.String()
}

// SetDetails sets the Details field's value.
func (s *UpdateUserProfileOutput) SetDetails(v *UserProfileDetails) *UpdateUserProfileOutput {
	s.Details = v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *UpdateUserProfileOutput) SetDomainId(v string) *UpdateUserProfileOutput {
	s.DomainId = &v
	return s
}

// SetId sets the Id field's value.
func (s *UpdateUserProfileOutput) SetId(v string) *UpdateUserProfileOutput {
	s.Id = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UpdateUserProfileOutput) SetStatus(v string) *UpdateUserProfileOutput {
	s.Status = &v
	return s
}

// SetType sets the Type field's value.
func (s *UpdateUserProfileOutput) SetType(v string) *UpdateUserProfileOutput {
	s.Type = &v
	return s
}

// The user details of a project member.
type UserDetails struct {
	_ struct{} `type:"structure"`

	// The identifier of the Amazon DataZone user.
	//
	// UserId is a required field
	UserId *string `locationName:"userId" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserDetails) GoString() string {
	return s.String()
}

// SetUserId sets the UserId field's value.
func (s *UserDetails) SetUserId(v string) *UserDetails {
	s.UserId = &v
	return s
}

// The details of the user profile in Amazon DataZone.
type UserProfileDetails struct {
	_ struct{} `type:"structure"`

	// The IAM details included in the user profile details.
	Iam *IamUserProfileDetails `locationName:"iam" type:"structure"`

	// The single sign-on details included in the user profile details.
	Sso *SsoUserProfileDetails `locationName:"sso" type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserProfileDetails) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserProfileDetails) GoString() string {
	return s.String()
}

// SetIam sets the Iam field's value.
func (s *UserProfileDetails) SetIam(v *IamUserProfileDetails) *UserProfileDetails {
	s.Iam = v
	return s
}

// SetSso sets the Sso field's value.
func (s *UserProfileDetails) SetSso(v *SsoUserProfileDetails) *UserProfileDetails {
	s.Sso = v
	return s
}

// The details of the user profile.
type UserProfileSummary struct {
	_ struct{} `type:"structure"`

	// The details of the user profile.
	Details *UserProfileDetails `locationName:"details" type:"structure"`

	// The ID of the Amazon DataZone domain of the user profile.
	DomainId *string `locationName:"domainId" type:"string"`

	// The ID of the user profile.
	Id *string `locationName:"id" type:"string"`

	// The status of the user profile.
	Status *string `locationName:"status" type:"string" enum:"UserProfileStatus"`

	// The type of the user profile.
	Type *string `locationName:"type" type:"string" enum:"UserProfileType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserProfileSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UserProfileSummary) GoString() string {
	return s.String()
}

// SetDetails sets the Details field's value.
func (s *UserProfileSummary) SetDetails(v *UserProfileDetails) *UserProfileSummary {
	s.Details = v
	return s
}

// SetDomainId sets the DomainId field's value.
func (s *UserProfileSummary) SetDomainId(v string) *UserProfileSummary {
	s.DomainId = &v
	return s
}

// SetId sets the Id field's value.
func (s *UserProfileSummary) SetId(v string) *UserProfileSummary {
	s.Id = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *UserProfileSummary) SetStatus(v string) *UserProfileSummary {
	s.Status = &v
	return s
}

// SetType sets the Type field's value.
func (s *UserProfileSummary) SetType(v string) *UserProfileSummary {
	s.Type = &v
	return s
}

// The input fails to satisfy the constraints specified by the Amazon Web Services
// service.
type ValidationException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ValidationException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ValidationException) GoString() string {
	return s.String()
}

func newErrorValidationException(v protocol.ResponseMetadata) error {
	return &ValidationException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ValidationException) Code() string {
	return "ValidationException"
}

// Message returns the exception's message.
func (s *ValidationException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ValidationException) OrigErr() error {
	return nil
}

func (s *ValidationException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ValidationException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ValidationException) RequestID() string {
	return s.RespMetadata.RequestID
}

const (
	// AcceptRuleBehaviorAll is a AcceptRuleBehavior enum value
	AcceptRuleBehaviorAll = "ALL"

	// AcceptRuleBehaviorNone is a AcceptRuleBehavior enum value
	AcceptRuleBehaviorNone = "NONE"
)

// AcceptRuleBehavior_Values returns all elements of the AcceptRuleBehavior enum
func AcceptRuleBehavior_Values() []string {
	return []string{
		AcceptRuleBehaviorAll,
		AcceptRuleBehaviorNone,
	}
}

const (
	// AuthTypeIamIdc is a AuthType enum value
	AuthTypeIamIdc = "IAM_IDC"

	// AuthTypeDisabled is a AuthType enum value
	AuthTypeDisabled = "DISABLED"
)

// AuthType_Values returns all elements of the AuthType enum
func AuthType_Values() []string {
	return []string{
		AuthTypeIamIdc,
		AuthTypeDisabled,
	}
}

const (
	// ChangeActionPublish is a ChangeAction enum value
	ChangeActionPublish = "PUBLISH"

	// ChangeActionUnpublish is a ChangeAction enum value
	ChangeActionUnpublish = "UNPUBLISH"
)

// ChangeAction_Values returns all elements of the ChangeAction enum
func ChangeAction_Values() []string {
	return []string{
		ChangeActionPublish,
		ChangeActionUnpublish,
	}
}

const (
	// ConfigurableActionTypeAuthorizationIam is a ConfigurableActionTypeAuthorization enum value
	ConfigurableActionTypeAuthorizationIam = "IAM"

	// ConfigurableActionTypeAuthorizationHttps is a ConfigurableActionTypeAuthorization enum value
	ConfigurableActionTypeAuthorizationHttps = "HTTPS"
)

// ConfigurableActionTypeAuthorization_Values returns all elements of the ConfigurableActionTypeAuthorization enum
func ConfigurableActionTypeAuthorization_Values() []string {
	return []string{
		ConfigurableActionTypeAuthorizationIam,
		ConfigurableActionTypeAuthorizationHttps,
	}
}

const (
	// DataAssetActivityStatusFailed is a DataAssetActivityStatus enum value
	DataAssetActivityStatusFailed = "FAILED"

	// DataAssetActivityStatusPublishingFailed is a DataAssetActivityStatus enum value
	DataAssetActivityStatusPublishingFailed = "PUBLISHING_FAILED"

	// DataAssetActivityStatusSucceededCreated is a DataAssetActivityStatus enum value
	DataAssetActivityStatusSucceededCreated = "SUCCEEDED_CREATED"

	// DataAssetActivityStatusSucceededUpdated is a DataAssetActivityStatus enum value
	DataAssetActivityStatusSucceededUpdated = "SUCCEEDED_UPDATED"

	// DataAssetActivityStatusSkippedAlreadyImported is a DataAssetActivityStatus enum value
	DataAssetActivityStatusSkippedAlreadyImported = "SKIPPED_ALREADY_IMPORTED"

	// DataAssetActivityStatusSkippedArchived is a DataAssetActivityStatus enum value
	DataAssetActivityStatusSkippedArchived = "SKIPPED_ARCHIVED"

	// DataAssetActivityStatusSkippedNoAccess is a DataAssetActivityStatus enum value
	DataAssetActivityStatusSkippedNoAccess = "SKIPPED_NO_ACCESS"

	// DataAssetActivityStatusUnchanged is a DataAssetActivityStatus enum value
	DataAssetActivityStatusUnchanged = "UNCHANGED"
)

// DataAssetActivityStatus_Values returns all elements of the DataAssetActivityStatus enum
func DataAssetActivityStatus_Values() []string {
	return []string{
		DataAssetActivityStatusFailed,
		DataAssetActivityStatusPublishingFailed,
		DataAssetActivityStatusSucceededCreated,
		DataAssetActivityStatusSucceededUpdated,
		DataAssetActivityStatusSkippedAlreadyImported,
		DataAssetActivityStatusSkippedArchived,
		DataAssetActivityStatusSkippedNoAccess,
		DataAssetActivityStatusUnchanged,
	}
}

const (
	// DataSourceErrorTypeAccessDeniedException is a DataSourceErrorType enum value
	DataSourceErrorTypeAccessDeniedException = "ACCESS_DENIED_EXCEPTION"

	// DataSourceErrorTypeConflictException is a DataSourceErrorType enum value
	DataSourceErrorTypeConflictException = "CONFLICT_EXCEPTION"

	// DataSourceErrorTypeInternalServerException is a DataSourceErrorType enum value
	DataSourceErrorTypeInternalServerException = "INTERNAL_SERVER_EXCEPTION"

	// DataSourceErrorTypeResourceNotFoundException is a DataSourceErrorType enum value
	DataSourceErrorTypeResourceNotFoundException = "RESOURCE_NOT_FOUND_EXCEPTION"

	// DataSourceErrorTypeServiceQuotaExceededException is a DataSourceErrorType enum value
	DataSourceErrorTypeServiceQuotaExceededException = "SERVICE_QUOTA_EXCEEDED_EXCEPTION"

	// DataSourceErrorTypeThrottlingException is a DataSourceErrorType enum value
	DataSourceErrorTypeThrottlingException = "THROTTLING_EXCEPTION"

	// DataSourceErrorTypeValidationException is a DataSourceErrorType enum value
	DataSourceErrorTypeValidationException = "VALIDATION_EXCEPTION"
)

// DataSourceErrorType_Values returns all elements of the DataSourceErrorType enum
func DataSourceErrorType_Values() []string {
	return []string{
		DataSourceErrorTypeAccessDeniedException,
		DataSourceErrorTypeConflictException,
		DataSourceErrorTypeInternalServerException,
		DataSourceErrorTypeResourceNotFoundException,
		DataSourceErrorTypeServiceQuotaExceededException,
		DataSourceErrorTypeThrottlingException,
		DataSourceErrorTypeValidationException,
	}
}

const (
	// DataSourceRunStatusRequested is a DataSourceRunStatus enum value
	DataSourceRunStatusRequested = "REQUESTED"

	// DataSourceRunStatusRunning is a DataSourceRunStatus enum value
	DataSourceRunStatusRunning = "RUNNING"

	// DataSourceRunStatusFailed is a DataSourceRunStatus enum value
	DataSourceRunStatusFailed = "FAILED"

	// DataSourceRunStatusPartiallySucceeded is a DataSourceRunStatus enum value
	DataSourceRunStatusPartiallySucceeded = "PARTIALLY_SUCCEEDED"

	// DataSourceRunStatusSuccess is a DataSourceRunStatus enum value
	DataSourceRunStatusSuccess = "SUCCESS"
)

// DataSourceRunStatus_Values returns all elements of the DataSourceRunStatus enum
func DataSourceRunStatus_Values() []string {
	return []string{
		DataSourceRunStatusRequested,
		DataSourceRunStatusRunning,
		DataSourceRunStatusFailed,
		DataSourceRunStatusPartiallySucceeded,
		DataSourceRunStatusSuccess,
	}
}

const (
	// DataSourceRunTypePrioritized is a DataSourceRunType enum value
	DataSourceRunTypePrioritized = "PRIORITIZED"

	// DataSourceRunTypeScheduled is a DataSourceRunType enum value
	DataSourceRunTypeScheduled = "SCHEDULED"
)

// DataSourceRunType_Values returns all elements of the DataSourceRunType enum
func DataSourceRunType_Values() []string {
	return []string{
		DataSourceRunTypePrioritized,
		DataSourceRunTypeScheduled,
	}
}

const (
	// DataSourceStatusCreating is a DataSourceStatus enum value
	DataSourceStatusCreating = "CREATING"

	// DataSourceStatusFailedCreation is a DataSourceStatus enum value
	DataSourceStatusFailedCreation = "FAILED_CREATION"

	// DataSourceStatusReady is a DataSourceStatus enum value
	DataSourceStatusReady = "READY"

	// DataSourceStatusUpdating is a DataSourceStatus enum value
	DataSourceStatusUpdating = "UPDATING"

	// DataSourceStatusFailedUpdate is a DataSourceStatus enum value
	DataSourceStatusFailedUpdate = "FAILED_UPDATE"

	// DataSourceStatusRunning is a DataSourceStatus enum value
	DataSourceStatusRunning = "RUNNING"

	// DataSourceStatusDeleting is a DataSourceStatus enum value
	DataSourceStatusDeleting = "DELETING"

	// DataSourceStatusFailedDeletion is a DataSourceStatus enum value
	DataSourceStatusFailedDeletion = "FAILED_DELETION"
)

// DataSourceStatus_Values returns all elements of the DataSourceStatus enum
func DataSourceStatus_Values() []string {
	return []string{
		DataSourceStatusCreating,
		DataSourceStatusFailedCreation,
		DataSourceStatusReady,
		DataSourceStatusUpdating,
		DataSourceStatusFailedUpdate,
		DataSourceStatusRunning,
		DataSourceStatusDeleting,
		DataSourceStatusFailedDeletion,
	}
}

const (
	// DeploymentStatusInProgress is a DeploymentStatus enum value
	DeploymentStatusInProgress = "IN_PROGRESS"

	// DeploymentStatusSuccessful is a DeploymentStatus enum value
	DeploymentStatusSuccessful = "SUCCESSFUL"

	// DeploymentStatusFailed is a DeploymentStatus enum value
	DeploymentStatusFailed = "FAILED"

	// DeploymentStatusPendingDeployment is a DeploymentStatus enum value
	DeploymentStatusPendingDeployment = "PENDING_DEPLOYMENT"
)

// DeploymentStatus_Values returns all elements of the DeploymentStatus enum
func DeploymentStatus_Values() []string {
	return []string{
		DeploymentStatusInProgress,
		DeploymentStatusSuccessful,
		DeploymentStatusFailed,
		DeploymentStatusPendingDeployment,
	}
}

const (
	// DeploymentTypeCreate is a DeploymentType enum value
	DeploymentTypeCreate = "CREATE"

	// DeploymentTypeUpdate is a DeploymentType enum value
	DeploymentTypeUpdate = "UPDATE"

	// DeploymentTypeDelete is a DeploymentType enum value
	DeploymentTypeDelete = "DELETE"
)

// DeploymentType_Values returns all elements of the DeploymentType enum
func DeploymentType_Values() []string {
	return []string{
		DeploymentTypeCreate,
		DeploymentTypeUpdate,
		DeploymentTypeDelete,
	}
}

const (
	// DomainStatusCreating is a DomainStatus enum value
	DomainStatusCreating = "CREATING"

	// DomainStatusAvailable is a DomainStatus enum value
	DomainStatusAvailable = "AVAILABLE"

	// DomainStatusCreationFailed is a DomainStatus enum value
	DomainStatusCreationFailed = "CREATION_FAILED"

	// DomainStatusDeleting is a DomainStatus enum value
	DomainStatusDeleting = "DELETING"

	// DomainStatusDeleted is a DomainStatus enum value
	DomainStatusDeleted = "DELETED"

	// DomainStatusDeletionFailed is a DomainStatus enum value
	DomainStatusDeletionFailed = "DELETION_FAILED"
)

// DomainStatus_Values returns all elements of the DomainStatus enum
func DomainStatus_Values() []string {
	return []string{
		DomainStatusCreating,
		DomainStatusAvailable,
		DomainStatusCreationFailed,
		DomainStatusDeleting,
		DomainStatusDeleted,
		DomainStatusDeletionFailed,
	}
}

const (
	// EnableSettingEnabled is a EnableSetting enum value
	EnableSettingEnabled = "ENABLED"

	// EnableSettingDisabled is a EnableSetting enum value
	EnableSettingDisabled = "DISABLED"
)

// EnableSetting_Values returns all elements of the EnableSetting enum
func EnableSetting_Values() []string {
	return []string{
		EnableSettingEnabled,
		EnableSettingDisabled,
	}
}

const (
	// EntityTypeAsset is a EntityType enum value
	EntityTypeAsset = "ASSET"
)

// EntityType_Values returns all elements of the EntityType enum
func EntityType_Values() []string {
	return []string{
		EntityTypeAsset,
	}
}

const (
	// EnvironmentStatusActive is a EnvironmentStatus enum value
	EnvironmentStatusActive = "ACTIVE"

	// EnvironmentStatusCreating is a EnvironmentStatus enum value
	EnvironmentStatusCreating = "CREATING"

	// EnvironmentStatusUpdating is a EnvironmentStatus enum value
	EnvironmentStatusUpdating = "UPDATING"

	// EnvironmentStatusDeleting is a EnvironmentStatus enum value
	EnvironmentStatusDeleting = "DELETING"

	// EnvironmentStatusCreateFailed is a EnvironmentStatus enum value
	EnvironmentStatusCreateFailed = "CREATE_FAILED"

	// EnvironmentStatusUpdateFailed is a EnvironmentStatus enum value
	EnvironmentStatusUpdateFailed = "UPDATE_FAILED"

	// EnvironmentStatusDeleteFailed is a EnvironmentStatus enum value
	EnvironmentStatusDeleteFailed = "DELETE_FAILED"

	// EnvironmentStatusValidationFailed is a EnvironmentStatus enum value
	EnvironmentStatusValidationFailed = "VALIDATION_FAILED"

	// EnvironmentStatusSuspended is a EnvironmentStatus enum value
	EnvironmentStatusSuspended = "SUSPENDED"

	// EnvironmentStatusDisabled is a EnvironmentStatus enum value
	EnvironmentStatusDisabled = "DISABLED"

	// EnvironmentStatusExpired is a EnvironmentStatus enum value
	EnvironmentStatusExpired = "EXPIRED"

	// EnvironmentStatusDeleted is a EnvironmentStatus enum value
	EnvironmentStatusDeleted = "DELETED"

	// EnvironmentStatusInaccessible is a EnvironmentStatus enum value
	EnvironmentStatusInaccessible = "INACCESSIBLE"
)

// EnvironmentStatus_Values returns all elements of the EnvironmentStatus enum
func EnvironmentStatus_Values() []string {
	return []string{
		EnvironmentStatusActive,
		EnvironmentStatusCreating,
		EnvironmentStatusUpdating,
		EnvironmentStatusDeleting,
		EnvironmentStatusCreateFailed,
		EnvironmentStatusUpdateFailed,
		EnvironmentStatusDeleteFailed,
		EnvironmentStatusValidationFailed,
		EnvironmentStatusSuspended,
		EnvironmentStatusDisabled,
		EnvironmentStatusExpired,
		EnvironmentStatusDeleted,
		EnvironmentStatusInaccessible,
	}
}

const (
	// FilterExpressionTypeInclude is a FilterExpressionType enum value
	FilterExpressionTypeInclude = "INCLUDE"

	// FilterExpressionTypeExclude is a FilterExpressionType enum value
	FilterExpressionTypeExclude = "EXCLUDE"
)

// FilterExpressionType_Values returns all elements of the FilterExpressionType enum
func FilterExpressionType_Values() []string {
	return []string{
		FilterExpressionTypeInclude,
		FilterExpressionTypeExclude,
	}
}

const (
	// FormTypeStatusEnabled is a FormTypeStatus enum value
	FormTypeStatusEnabled = "ENABLED"

	// FormTypeStatusDisabled is a FormTypeStatus enum value
	FormTypeStatusDisabled = "DISABLED"
)

// FormTypeStatus_Values returns all elements of the FormTypeStatus enum
func FormTypeStatus_Values() []string {
	return []string{
		FormTypeStatusEnabled,
		FormTypeStatusDisabled,
	}
}

const (
	// GlossaryStatusDisabled is a GlossaryStatus enum value
	GlossaryStatusDisabled = "DISABLED"

	// GlossaryStatusEnabled is a GlossaryStatus enum value
	GlossaryStatusEnabled = "ENABLED"
)

// GlossaryStatus_Values returns all elements of the GlossaryStatus enum
func GlossaryStatus_Values() []string {
	return []string{
		GlossaryStatusDisabled,
		GlossaryStatusEnabled,
	}
}

const (
	// GlossaryTermStatusEnabled is a GlossaryTermStatus enum value
	GlossaryTermStatusEnabled = "ENABLED"

	// GlossaryTermStatusDisabled is a GlossaryTermStatus enum value
	GlossaryTermStatusDisabled = "DISABLED"
)

// GlossaryTermStatus_Values returns all elements of the GlossaryTermStatus enum
func GlossaryTermStatus_Values() []string {
	return []string{
		GlossaryTermStatusEnabled,
		GlossaryTermStatusDisabled,
	}
}

const (
	// GroupProfileStatusAssigned is a GroupProfileStatus enum value
	GroupProfileStatusAssigned = "ASSIGNED"

	// GroupProfileStatusNotAssigned is a GroupProfileStatus enum value
	GroupProfileStatusNotAssigned = "NOT_ASSIGNED"
)

// GroupProfileStatus_Values returns all elements of the GroupProfileStatus enum
func GroupProfileStatus_Values() []string {
	return []string{
		GroupProfileStatusAssigned,
		GroupProfileStatusNotAssigned,
	}
}

const (
	// GroupSearchTypeSsoGroup is a GroupSearchType enum value
	GroupSearchTypeSsoGroup = "SSO_GROUP"

	// GroupSearchTypeDatazoneSsoGroup is a GroupSearchType enum value
	GroupSearchTypeDatazoneSsoGroup = "DATAZONE_SSO_GROUP"
)

// GroupSearchType_Values returns all elements of the GroupSearchType enum
func GroupSearchType_Values() []string {
	return []string{
		GroupSearchTypeSsoGroup,
		GroupSearchTypeDatazoneSsoGroup,
	}
}

const (
	// InventorySearchScopeAsset is a InventorySearchScope enum value
	InventorySearchScopeAsset = "ASSET"

	// InventorySearchScopeGlossary is a InventorySearchScope enum value
	InventorySearchScopeGlossary = "GLOSSARY"

	// InventorySearchScopeGlossaryTerm is a InventorySearchScope enum value
	InventorySearchScopeGlossaryTerm = "GLOSSARY_TERM"
)

// InventorySearchScope_Values returns all elements of the InventorySearchScope enum
func InventorySearchScope_Values() []string {
	return []string{
		InventorySearchScopeAsset,
		InventorySearchScopeGlossary,
		InventorySearchScopeGlossaryTerm,
	}
}

const (
	// ListingStatusCreating is a ListingStatus enum value
	ListingStatusCreating = "CREATING"

	// ListingStatusActive is a ListingStatus enum value
	ListingStatusActive = "ACTIVE"

	// ListingStatusInactive is a ListingStatus enum value
	ListingStatusInactive = "INACTIVE"
)

// ListingStatus_Values returns all elements of the ListingStatus enum
func ListingStatus_Values() []string {
	return []string{
		ListingStatusCreating,
		ListingStatusActive,
		ListingStatusInactive,
	}
}

const (
	// NotificationResourceTypeProject is a NotificationResourceType enum value
	NotificationResourceTypeProject = "PROJECT"
)

// NotificationResourceType_Values returns all elements of the NotificationResourceType enum
func NotificationResourceType_Values() []string {
	return []string{
		NotificationResourceTypeProject,
	}
}

const (
	// NotificationRoleProjectOwner is a NotificationRole enum value
	NotificationRoleProjectOwner = "PROJECT_OWNER"

	// NotificationRoleProjectContributor is a NotificationRole enum value
	NotificationRoleProjectContributor = "PROJECT_CONTRIBUTOR"

	// NotificationRoleProjectViewer is a NotificationRole enum value
	NotificationRoleProjectViewer = "PROJECT_VIEWER"

	// NotificationRoleDomainOwner is a NotificationRole enum value
	NotificationRoleDomainOwner = "DOMAIN_OWNER"

	// NotificationRoleProjectSubscriber is a NotificationRole enum value
	NotificationRoleProjectSubscriber = "PROJECT_SUBSCRIBER"
)

// NotificationRole_Values returns all elements of the NotificationRole enum
func NotificationRole_Values() []string {
	return []string{
		NotificationRoleProjectOwner,
		NotificationRoleProjectContributor,
		NotificationRoleProjectViewer,
		NotificationRoleDomainOwner,
		NotificationRoleProjectSubscriber,
	}
}

const (
	// NotificationTypeTask is a NotificationType enum value
	NotificationTypeTask = "TASK"

	// NotificationTypeEvent is a NotificationType enum value
	NotificationTypeEvent = "EVENT"
)

// NotificationType_Values returns all elements of the NotificationType enum
func NotificationType_Values() []string {
	return []string{
		NotificationTypeTask,
		NotificationTypeEvent,
	}
}

const (
	// ProjectStatusActive is a ProjectStatus enum value
	ProjectStatusActive = "ACTIVE"

	// ProjectStatusDeleting is a ProjectStatus enum value
	ProjectStatusDeleting = "DELETING"

	// ProjectStatusDeleteFailed is a ProjectStatus enum value
	ProjectStatusDeleteFailed = "DELETE_FAILED"
)

// ProjectStatus_Values returns all elements of the ProjectStatus enum
func ProjectStatus_Values() []string {
	return []string{
		ProjectStatusActive,
		ProjectStatusDeleting,
		ProjectStatusDeleteFailed,
	}
}

const (
	// RejectRuleBehaviorAll is a RejectRuleBehavior enum value
	RejectRuleBehaviorAll = "ALL"

	// RejectRuleBehaviorNone is a RejectRuleBehavior enum value
	RejectRuleBehaviorNone = "NONE"
)

// RejectRuleBehavior_Values returns all elements of the RejectRuleBehavior enum
func RejectRuleBehavior_Values() []string {
	return []string{
		RejectRuleBehaviorAll,
		RejectRuleBehaviorNone,
	}
}

const (
	// SearchOutputAdditionalAttributeForms is a SearchOutputAdditionalAttribute enum value
	SearchOutputAdditionalAttributeForms = "FORMS"
)

// SearchOutputAdditionalAttribute_Values returns all elements of the SearchOutputAdditionalAttribute enum
func SearchOutputAdditionalAttribute_Values() []string {
	return []string{
		SearchOutputAdditionalAttributeForms,
	}
}

const (
	// SortFieldProjectName is a SortFieldProject enum value
	SortFieldProjectName = "NAME"
)

// SortFieldProject_Values returns all elements of the SortFieldProject enum
func SortFieldProject_Values() []string {
	return []string{
		SortFieldProjectName,
	}
}

const (
	// SortKeyCreatedAt is a SortKey enum value
	SortKeyCreatedAt = "CREATED_AT"

	// SortKeyUpdatedAt is a SortKey enum value
	SortKeyUpdatedAt = "UPDATED_AT"
)

// SortKey_Values returns all elements of the SortKey enum
func SortKey_Values() []string {
	return []string{
		SortKeyCreatedAt,
		SortKeyUpdatedAt,
	}
}

const (
	// SortOrderAscending is a SortOrder enum value
	SortOrderAscending = "ASCENDING"

	// SortOrderDescending is a SortOrder enum value
	SortOrderDescending = "DESCENDING"
)

// SortOrder_Values returns all elements of the SortOrder enum
func SortOrder_Values() []string {
	return []string{
		SortOrderAscending,
		SortOrderDescending,
	}
}

const (
	// SubscriptionGrantOverallStatusPending is a SubscriptionGrantOverallStatus enum value
	SubscriptionGrantOverallStatusPending = "PENDING"

	// SubscriptionGrantOverallStatusInProgress is a SubscriptionGrantOverallStatus enum value
	SubscriptionGrantOverallStatusInProgress = "IN_PROGRESS"

	// SubscriptionGrantOverallStatusGrantFailed is a SubscriptionGrantOverallStatus enum value
	SubscriptionGrantOverallStatusGrantFailed = "GRANT_FAILED"

	// SubscriptionGrantOverallStatusRevokeFailed is a SubscriptionGrantOverallStatus enum value
	SubscriptionGrantOverallStatusRevokeFailed = "REVOKE_FAILED"

	// SubscriptionGrantOverallStatusGrantAndRevokeFailed is a SubscriptionGrantOverallStatus enum value
	SubscriptionGrantOverallStatusGrantAndRevokeFailed = "GRANT_AND_REVOKE_FAILED"

	// SubscriptionGrantOverallStatusCompleted is a SubscriptionGrantOverallStatus enum value
	SubscriptionGrantOverallStatusCompleted = "COMPLETED"

	// SubscriptionGrantOverallStatusInaccessible is a SubscriptionGrantOverallStatus enum value
	SubscriptionGrantOverallStatusInaccessible = "INACCESSIBLE"
)

// SubscriptionGrantOverallStatus_Values returns all elements of the SubscriptionGrantOverallStatus enum
func SubscriptionGrantOverallStatus_Values() []string {
	return []string{
		SubscriptionGrantOverallStatusPending,
		SubscriptionGrantOverallStatusInProgress,
		SubscriptionGrantOverallStatusGrantFailed,
		SubscriptionGrantOverallStatusRevokeFailed,
		SubscriptionGrantOverallStatusGrantAndRevokeFailed,
		SubscriptionGrantOverallStatusCompleted,
		SubscriptionGrantOverallStatusInaccessible,
	}
}

const (
	// SubscriptionGrantStatusGrantPending is a SubscriptionGrantStatus enum value
	SubscriptionGrantStatusGrantPending = "GRANT_PENDING"

	// SubscriptionGrantStatusRevokePending is a SubscriptionGrantStatus enum value
	SubscriptionGrantStatusRevokePending = "REVOKE_PENDING"

	// SubscriptionGrantStatusGrantInProgress is a SubscriptionGrantStatus enum value
	SubscriptionGrantStatusGrantInProgress = "GRANT_IN_PROGRESS"

	// SubscriptionGrantStatusRevokeInProgress is a SubscriptionGrantStatus enum value
	SubscriptionGrantStatusRevokeInProgress = "REVOKE_IN_PROGRESS"

	// SubscriptionGrantStatusGranted is a SubscriptionGrantStatus enum value
	SubscriptionGrantStatusGranted = "GRANTED"

	// SubscriptionGrantStatusRevoked is a SubscriptionGrantStatus enum value
	SubscriptionGrantStatusRevoked = "REVOKED"

	// SubscriptionGrantStatusGrantFailed is a SubscriptionGrantStatus enum value
	SubscriptionGrantStatusGrantFailed = "GRANT_FAILED"

	// SubscriptionGrantStatusRevokeFailed is a SubscriptionGrantStatus enum value
	SubscriptionGrantStatusRevokeFailed = "REVOKE_FAILED"
)

// SubscriptionGrantStatus_Values returns all elements of the SubscriptionGrantStatus enum
func SubscriptionGrantStatus_Values() []string {
	return []string{
		SubscriptionGrantStatusGrantPending,
		SubscriptionGrantStatusRevokePending,
		SubscriptionGrantStatusGrantInProgress,
		SubscriptionGrantStatusRevokeInProgress,
		SubscriptionGrantStatusGranted,
		SubscriptionGrantStatusRevoked,
		SubscriptionGrantStatusGrantFailed,
		SubscriptionGrantStatusRevokeFailed,
	}
}

const (
	// SubscriptionRequestStatusPending is a SubscriptionRequestStatus enum value
	SubscriptionRequestStatusPending = "PENDING"

	// SubscriptionRequestStatusAccepted is a SubscriptionRequestStatus enum value
	SubscriptionRequestStatusAccepted = "ACCEPTED"

	// SubscriptionRequestStatusRejected is a SubscriptionRequestStatus enum value
	SubscriptionRequestStatusRejected = "REJECTED"
)

// SubscriptionRequestStatus_Values returns all elements of the SubscriptionRequestStatus enum
func SubscriptionRequestStatus_Values() []string {
	return []string{
		SubscriptionRequestStatusPending,
		SubscriptionRequestStatusAccepted,
		SubscriptionRequestStatusRejected,
	}
}

const (
	// SubscriptionStatusApproved is a SubscriptionStatus enum value
	SubscriptionStatusApproved = "APPROVED"

	// SubscriptionStatusRevoked is a SubscriptionStatus enum value
	SubscriptionStatusRevoked = "REVOKED"

	// SubscriptionStatusCancelled is a SubscriptionStatus enum value
	SubscriptionStatusCancelled = "CANCELLED"
)

// SubscriptionStatus_Values returns all elements of the SubscriptionStatus enum
func SubscriptionStatus_Values() []string {
	return []string{
		SubscriptionStatusApproved,
		SubscriptionStatusRevoked,
		SubscriptionStatusCancelled,
	}
}

const (
	// TaskStatusActive is a TaskStatus enum value
	TaskStatusActive = "ACTIVE"

	// TaskStatusInactive is a TaskStatus enum value
	TaskStatusInactive = "INACTIVE"
)

// TaskStatus_Values returns all elements of the TaskStatus enum
func TaskStatus_Values() []string {
	return []string{
		TaskStatusActive,
		TaskStatusInactive,
	}
}

const (
	// TimezoneUtc is a Timezone enum value
	TimezoneUtc = "UTC"

	// TimezoneAfricaJohannesburg is a Timezone enum value
	TimezoneAfricaJohannesburg = "AFRICA_JOHANNESBURG"

	// TimezoneAmericaMontreal is a Timezone enum value
	TimezoneAmericaMontreal = "AMERICA_MONTREAL"

	// TimezoneAmericaSaoPaulo is a Timezone enum value
	TimezoneAmericaSaoPaulo = "AMERICA_SAO_PAULO"

	// TimezoneAsiaBahrain is a Timezone enum value
	TimezoneAsiaBahrain = "ASIA_BAHRAIN"

	// TimezoneAsiaBangkok is a Timezone enum value
	TimezoneAsiaBangkok = "ASIA_BANGKOK"

	// TimezoneAsiaCalcutta is a Timezone enum value
	TimezoneAsiaCalcutta = "ASIA_CALCUTTA"

	// TimezoneAsiaDubai is a Timezone enum value
	TimezoneAsiaDubai = "ASIA_DUBAI"

	// TimezoneAsiaHongKong is a Timezone enum value
	TimezoneAsiaHongKong = "ASIA_HONG_KONG"

	// TimezoneAsiaJakarta is a Timezone enum value
	TimezoneAsiaJakarta = "ASIA_JAKARTA"

	// TimezoneAsiaKualaLumpur is a Timezone enum value
	TimezoneAsiaKualaLumpur = "ASIA_KUALA_LUMPUR"

	// TimezoneAsiaSeoul is a Timezone enum value
	TimezoneAsiaSeoul = "ASIA_SEOUL"

	// TimezoneAsiaShanghai is a Timezone enum value
	TimezoneAsiaShanghai = "ASIA_SHANGHAI"

	// TimezoneAsiaSingapore is a Timezone enum value
	TimezoneAsiaSingapore = "ASIA_SINGAPORE"

	// TimezoneAsiaTaipei is a Timezone enum value
	TimezoneAsiaTaipei = "ASIA_TAIPEI"

	// TimezoneAsiaTokyo is a Timezone enum value
	TimezoneAsiaTokyo = "ASIA_TOKYO"

	// TimezoneAustraliaMelbourne is a Timezone enum value
	TimezoneAustraliaMelbourne = "AUSTRALIA_MELBOURNE"

	// TimezoneAustraliaSydney is a Timezone enum value
	TimezoneAustraliaSydney = "AUSTRALIA_SYDNEY"

	// TimezoneCanadaCentral is a Timezone enum value
	TimezoneCanadaCentral = "CANADA_CENTRAL"

	// TimezoneCet is a Timezone enum value
	TimezoneCet = "CET"

	// TimezoneCst6cdt is a Timezone enum value
	TimezoneCst6cdt = "CST6CDT"

	// TimezoneEtcGmt is a Timezone enum value
	TimezoneEtcGmt = "ETC_GMT"

	// TimezoneEtcGmt0 is a Timezone enum value
	TimezoneEtcGmt0 = "ETC_GMT0"

	// TimezoneEtcGmtAdd0 is a Timezone enum value
	TimezoneEtcGmtAdd0 = "ETC_GMT_ADD_0"

	// TimezoneEtcGmtAdd1 is a Timezone enum value
	TimezoneEtcGmtAdd1 = "ETC_GMT_ADD_1"

	// TimezoneEtcGmtAdd10 is a Timezone enum value
	TimezoneEtcGmtAdd10 = "ETC_GMT_ADD_10"

	// TimezoneEtcGmtAdd11 is a Timezone enum value
	TimezoneEtcGmtAdd11 = "ETC_GMT_ADD_11"

	// TimezoneEtcGmtAdd12 is a Timezone enum value
	TimezoneEtcGmtAdd12 = "ETC_GMT_ADD_12"

	// TimezoneEtcGmtAdd2 is a Timezone enum value
	TimezoneEtcGmtAdd2 = "ETC_GMT_ADD_2"

	// TimezoneEtcGmtAdd3 is a Timezone enum value
	TimezoneEtcGmtAdd3 = "ETC_GMT_ADD_3"

	// TimezoneEtcGmtAdd4 is a Timezone enum value
	TimezoneEtcGmtAdd4 = "ETC_GMT_ADD_4"

	// TimezoneEtcGmtAdd5 is a Timezone enum value
	TimezoneEtcGmtAdd5 = "ETC_GMT_ADD_5"

	// TimezoneEtcGmtAdd6 is a Timezone enum value
	TimezoneEtcGmtAdd6 = "ETC_GMT_ADD_6"

	// TimezoneEtcGmtAdd7 is a Timezone enum value
	TimezoneEtcGmtAdd7 = "ETC_GMT_ADD_7"

	// TimezoneEtcGmtAdd8 is a Timezone enum value
	TimezoneEtcGmtAdd8 = "ETC_GMT_ADD_8"

	// TimezoneEtcGmtAdd9 is a Timezone enum value
	TimezoneEtcGmtAdd9 = "ETC_GMT_ADD_9"

	// TimezoneEtcGmtNeg0 is a Timezone enum value
	TimezoneEtcGmtNeg0 = "ETC_GMT_NEG_0"

	// TimezoneEtcGmtNeg1 is a Timezone enum value
	TimezoneEtcGmtNeg1 = "ETC_GMT_NEG_1"

	// TimezoneEtcGmtNeg10 is a Timezone enum value
	TimezoneEtcGmtNeg10 = "ETC_GMT_NEG_10"

	// TimezoneEtcGmtNeg11 is a Timezone enum value
	TimezoneEtcGmtNeg11 = "ETC_GMT_NEG_11"

	// TimezoneEtcGmtNeg12 is a Timezone enum value
	TimezoneEtcGmtNeg12 = "ETC_GMT_NEG_12"

	// TimezoneEtcGmtNeg13 is a Timezone enum value
	TimezoneEtcGmtNeg13 = "ETC_GMT_NEG_13"

	// TimezoneEtcGmtNeg14 is a Timezone enum value
	TimezoneEtcGmtNeg14 = "ETC_GMT_NEG_14"

	// TimezoneEtcGmtNeg2 is a Timezone enum value
	TimezoneEtcGmtNeg2 = "ETC_GMT_NEG_2"

	// TimezoneEtcGmtNeg3 is a Timezone enum value
	TimezoneEtcGmtNeg3 = "ETC_GMT_NEG_3"

	// TimezoneEtcGmtNeg4 is a Timezone enum value
	TimezoneEtcGmtNeg4 = "ETC_GMT_NEG_4"

	// TimezoneEtcGmtNeg5 is a Timezone enum value
	TimezoneEtcGmtNeg5 = "ETC_GMT_NEG_5"

	// TimezoneEtcGmtNeg6 is a Timezone enum value
	TimezoneEtcGmtNeg6 = "ETC_GMT_NEG_6"

	// TimezoneEtcGmtNeg7 is a Timezone enum value
	TimezoneEtcGmtNeg7 = "ETC_GMT_NEG_7"

	// TimezoneEtcGmtNeg8 is a Timezone enum value
	TimezoneEtcGmtNeg8 = "ETC_GMT_NEG_8"

	// TimezoneEtcGmtNeg9 is a Timezone enum value
	TimezoneEtcGmtNeg9 = "ETC_GMT_NEG_9"

	// TimezoneEuropeDublin is a Timezone enum value
	TimezoneEuropeDublin = "EUROPE_DUBLIN"

	// TimezoneEuropeLondon is a Timezone enum value
	TimezoneEuropeLondon = "EUROPE_LONDON"

	// TimezoneEuropeParis is a Timezone enum value
	TimezoneEuropeParis = "EUROPE_PARIS"

	// TimezoneEuropeStockholm is a Timezone enum value
	TimezoneEuropeStockholm = "EUROPE_STOCKHOLM"

	// TimezoneEuropeZurich is a Timezone enum value
	TimezoneEuropeZurich = "EUROPE_ZURICH"

	// TimezoneIsrael is a Timezone enum value
	TimezoneIsrael = "ISRAEL"

	// TimezoneMexicoGeneral is a Timezone enum value
	TimezoneMexicoGeneral = "MEXICO_GENERAL"

	// TimezoneMst7mdt is a Timezone enum value
	TimezoneMst7mdt = "MST7MDT"

	// TimezonePacificAuckland is a Timezone enum value
	TimezonePacificAuckland = "PACIFIC_AUCKLAND"

	// TimezoneUsCentral is a Timezone enum value
	TimezoneUsCentral = "US_CENTRAL"

	// TimezoneUsEastern is a Timezone enum value
	TimezoneUsEastern = "US_EASTERN"

	// TimezoneUsMountain is a Timezone enum value
	TimezoneUsMountain = "US_MOUNTAIN"

	// TimezoneUsPacific is a Timezone enum value
	TimezoneUsPacific = "US_PACIFIC"
)

// Timezone_Values returns all elements of the Timezone enum
func Timezone_Values() []string {
	return []string{
		TimezoneUtc,
		TimezoneAfricaJohannesburg,
		TimezoneAmericaMontreal,
		TimezoneAmericaSaoPaulo,
		TimezoneAsiaBahrain,
		TimezoneAsiaBangkok,
		TimezoneAsiaCalcutta,
		TimezoneAsiaDubai,
		TimezoneAsiaHongKong,
		TimezoneAsiaJakarta,
		TimezoneAsiaKualaLumpur,
		TimezoneAsiaSeoul,
		TimezoneAsiaShanghai,
		TimezoneAsiaSingapore,
		TimezoneAsiaTaipei,
		TimezoneAsiaTokyo,
		TimezoneAustraliaMelbourne,
		TimezoneAustraliaSydney,
		TimezoneCanadaCentral,
		TimezoneCet,
		TimezoneCst6cdt,
		TimezoneEtcGmt,
		TimezoneEtcGmt0,
		TimezoneEtcGmtAdd0,
		TimezoneEtcGmtAdd1,
		TimezoneEtcGmtAdd10,
		TimezoneEtcGmtAdd11,
		TimezoneEtcGmtAdd12,
		TimezoneEtcGmtAdd2,
		TimezoneEtcGmtAdd3,
		TimezoneEtcGmtAdd4,
		TimezoneEtcGmtAdd5,
		TimezoneEtcGmtAdd6,
		TimezoneEtcGmtAdd7,
		TimezoneEtcGmtAdd8,
		TimezoneEtcGmtAdd9,
		TimezoneEtcGmtNeg0,
		TimezoneEtcGmtNeg1,
		TimezoneEtcGmtNeg10,
		TimezoneEtcGmtNeg11,
		TimezoneEtcGmtNeg12,
		TimezoneEtcGmtNeg13,
		TimezoneEtcGmtNeg14,
		TimezoneEtcGmtNeg2,
		TimezoneEtcGmtNeg3,
		TimezoneEtcGmtNeg4,
		TimezoneEtcGmtNeg5,
		TimezoneEtcGmtNeg6,
		TimezoneEtcGmtNeg7,
		TimezoneEtcGmtNeg8,
		TimezoneEtcGmtNeg9,
		TimezoneEuropeDublin,
		TimezoneEuropeLondon,
		TimezoneEuropeParis,
		TimezoneEuropeStockholm,
		TimezoneEuropeZurich,
		TimezoneIsrael,
		TimezoneMexicoGeneral,
		TimezoneMst7mdt,
		TimezonePacificAuckland,
		TimezoneUsCentral,
		TimezoneUsEastern,
		TimezoneUsMountain,
		TimezoneUsPacific,
	}
}

const (
	// TypesSearchScopeAssetType is a TypesSearchScope enum value
	TypesSearchScopeAssetType = "ASSET_TYPE"

	// TypesSearchScopeFormType is a TypesSearchScope enum value
	TypesSearchScopeFormType = "FORM_TYPE"
)

// TypesSearchScope_Values returns all elements of the TypesSearchScope enum
func TypesSearchScope_Values() []string {
	return []string{
		TypesSearchScopeAssetType,
		TypesSearchScopeFormType,
	}
}

const (
	// UserAssignmentAutomatic is a UserAssignment enum value
	UserAssignmentAutomatic = "AUTOMATIC"

	// UserAssignmentManual is a UserAssignment enum value
	UserAssignmentManual = "MANUAL"
)

// UserAssignment_Values returns all elements of the UserAssignment enum
func UserAssignment_Values() []string {
	return []string{
		UserAssignmentAutomatic,
		UserAssignmentManual,
	}
}

const (
	// UserDesignationProjectOwner is a UserDesignation enum value
	UserDesignationProjectOwner = "PROJECT_OWNER"

	// UserDesignationProjectContributor is a UserDesignation enum value
	UserDesignationProjectContributor = "PROJECT_CONTRIBUTOR"
)

// UserDesignation_Values returns all elements of the UserDesignation enum
func UserDesignation_Values() []string {
	return []string{
		UserDesignationProjectOwner,
		UserDesignationProjectContributor,
	}
}

const (
	// UserProfileStatusAssigned is a UserProfileStatus enum value
	UserProfileStatusAssigned = "ASSIGNED"

	// UserProfileStatusNotAssigned is a UserProfileStatus enum value
	UserProfileStatusNotAssigned = "NOT_ASSIGNED"

	// UserProfileStatusActivated is a UserProfileStatus enum value
	UserProfileStatusActivated = "ACTIVATED"

	// UserProfileStatusDeactivated is a UserProfileStatus enum value
	UserProfileStatusDeactivated = "DEACTIVATED"
)

// UserProfileStatus_Values returns all elements of the UserProfileStatus enum
func UserProfileStatus_Values() []string {
	return []string{
		UserProfileStatusAssigned,
		UserProfileStatusNotAssigned,
		UserProfileStatusActivated,
		UserProfileStatusDeactivated,
	}
}

const (
	// UserProfileTypeIam is a UserProfileType enum value
	UserProfileTypeIam = "IAM"

	// UserProfileTypeSso is a UserProfileType enum value
	UserProfileTypeSso = "SSO"
)

// UserProfileType_Values returns all elements of the UserProfileType enum
func UserProfileType_Values() []string {
	return []string{
		UserProfileTypeIam,
		UserProfileTypeSso,
	}
}

const (
	// UserSearchTypeSsoUser is a UserSearchType enum value
	UserSearchTypeSsoUser = "SSO_USER"

	// UserSearchTypeDatazoneUser is a UserSearchType enum value
	UserSearchTypeDatazoneUser = "DATAZONE_USER"

	// UserSearchTypeDatazoneSsoUser is a UserSearchType enum value
	UserSearchTypeDatazoneSsoUser = "DATAZONE_SSO_USER"

	// UserSearchTypeDatazoneIamUser is a UserSearchType enum value
	UserSearchTypeDatazoneIamUser = "DATAZONE_IAM_USER"
)

// UserSearchType_Values returns all elements of the UserSearchType enum
func UserSearchType_Values() []string {
	return []string{
		UserSearchTypeSsoUser,
		UserSearchTypeDatazoneUser,
		UserSearchTypeDatazoneSsoUser,
		UserSearchTypeDatazoneIamUser,
	}
}

const (
	// UserTypeIamUser is a UserType enum value
	UserTypeIamUser = "IAM_USER"

	// UserTypeIamRole is a UserType enum value
	UserTypeIamRole = "IAM_ROLE"

	// UserTypeSsoUser is a UserType enum value
	UserTypeSsoUser = "SSO_USER"
)

// UserType_Values returns all elements of the UserType enum
func UserType_Values() []string {
	return []string{
		UserTypeIamUser,
		UserTypeIamRole,
		UserTypeSsoUser,
	}
}
